Sélectionner Une base en php

Fermé
Profil bloqué - 17 juin 2008 à 18:40
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 - 18 juin 2008 à 19:00
Bonjour,
Bon je suis un débutant en php, je souhaite créer un sondage en php j'ai réussi a faire le code et la base de donnée, J'ai un script qui permet de contrôler qu'une adresse ip ne puisse votée qu'une seul fois :

<?php
mysql_connect("idoo-mysql00", "xxxxx", "xxxxxxxxxxxx");
mysql_select_db("xxxxx");

$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);
if ($donnees['nbre_entrees'] == 0)
{
echo " On affiche le vote" ;
}
else
{
echo "Ip déja entrée on affche le résultat" ;
}
mysql_close();
?>

Le script fonctionne mais si je souhaite en créé plusieurs comment dois-je faire pour qu'il sélectionne la table qui correspond au vote?

Et qu'il ne fasse pas non plus interférence avec mon compteur de personnes connectées.

Voilà je ne sais pas si j'ai été très clair en tout cas il me faut juste un code qui me permet de sélectionner la table dans la quelle je doit aller chercher mes données

Les tables s'appelleront
Sondage1
Sondage2
Sondage3
ect...
++
A voir également:

7 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
17 juin 2008 à 19:57
Tu utilises déjà des fonctions ?
Si non, je te conseille d'en utiliser...

Le principe : tu crées une page fonction.php dans laquelle tu mets les fonctions que tu utilises souvent (connexion à la base de données, sécurisation des données, etc).
Ensuite, dans chaque page php tu appelles ta page :
include('fonction.php');

Un des avantages des fonctions, c'est que tu peux leur passer des paramètres, comme ici le nom de la table...

Par contre ton système me pose problème. Autant de tables que de sondages, il faut espérer que tu en feras peu...
Et je suis d'accord avec sly-bzh : un simple SELECT devrait suffire, sauf si tu as besoin de compter le nombre de votants...

Je te conseillerais de faire une seule table SONDAGES :
ID_SONDAGE
IP
DTE_VOTE
RESULTAT_VOTE

Avec la clé sur ID (id du sondage, si tu veux tu peux mettre NOM_SONDAGE) et IP. Et RESULTAT_VOTE le code de la réponse au sondage...

Ta fonction, que tu places dans le fichier fonction.php (j'utilise un simple SELECT plutôt qu'un SELECT COUNT, parce que là je me contente de regarder si l'IP a déjà voté) :
function AfficherSondage($id) {
mysql_connect("idoo-mysql00", "xxxxx", "xxxxxxxxxxxx") or die ('erreur connexion MySQL '.mysql_eror());
mysql_select_db($table) or die ('erreur à la connexion surla table '.mysql_eror());
$retour = mysql_query('SELECT * FROM SONDAGES WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\' AND id=\'.$id.'\'');
if (mysql_num_rows($retour) > 0) {
echo " On affiche le vote" ;
}
else
{
echo "Ip déja entrée on affche le résultat" ;
}
mysql_close();
}


Dans ta page principale, au début tu mets :
<? include('fonction.php'); ?>


Et à l'endroit de ton sondage :
<h2>Le titre de mon sondage</h2>
<?AfficherSondage(Id du sondage); ?>
1
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
17 juin 2008 à 19:06
Bonjour.

Le plus simple, c'est de faire une fonction que tu appelleras en passant le nom de la table en paramètre :

<?php
function AfficherSondage ($table) {
mysql_connect("idoo-mysql00", "xxxxx", "xxxxxxxxxxxx") or die ('erreur connexion MySQL '.mysql_eror());
mysql_select_db($table) or die ('erreur à la connexion surla table '.mysql_eror());
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);
if ($donnees['nbre_entrees'] == 0)
{
echo " On affiche le vote" ;
}
else
{
echo "Ip déja entrée on affche le résultat" ;
}
mysql_close();
}
?>

ensuite, à chaque endroit où tu veux afficher un sondage, tu appelles ta fonction. Par exemple :
<div id="sondage1">
<? AfficherSondage('sondage1'); ?>
</div>
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
17 juin 2008 à 19:09
Bonjour,

Je ne comprend pas bien ce que fait ton bout de script que tu nous as donné : peux-tu s'il te plait donner la structure de ta table connectes et ce que tu fais avec ?
Parce que pour moi, pour résoudre ton problème, le plus simple serait de créer un champ adresse_ip dans tes différentes tables sondage1, sondage2,... et au moment du vote de faire un SELECT sur ce champ.
Si on a un retour -> affichage des résultats
Si rien du tout -> enregistrement du vote

Il me semble que c'est en gros ce que tu as déjà fait mais ta table "connectes" elle vient faire quoi la dedans ?

A moins que dans ta table "connectes" tu ai mis pour chaque adresse IP qui se connecte à ton site les sondages pour lesquels ils ont déjà voté ?



PS. Pour ta signature, si
La différence entre mac et windows ?"
est la question et
42 est la grande réponse...
Je suppose que tu parles de la différence de moyenne d'âge entre les utilisateurs des 2 OS ? :D
0
Profil bloqué
17 juin 2008 à 19:40
Je ne suis pas sur d'avoir compris l'explication de mac gawel même si sa à l'air d'être sa.
Pour info les 2 échos que j'ai mi sont bidons il seront remplacé pas le vote sur le 1er et le résultat sur le deuxième.
Mon problème n'est pas de l'afficher plusieurs fois mais que la sauvegarde d'ip sa fasse pour le bon sondage...
"connectés" c'était juste car mon compteur de visite fonctionne de la même façon.
Lorsque une personne aura votée son ip se mémorisera dans la table et a chaque fois qu'elle ouvrira la page c le résultat qui apparaîtra.

Ma table :
ip varchar(15) utf8_general_ci

timestamp int(11)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
17 juin 2008 à 20:21
Merci je vais éssayer sa sa m'a l'air un peu compliquer mais je devrait finir par y arriver.
Tu pourrait redétaillé la table stp je suis pas sur de ce que je dois mettre ;).
Merci en tout cas +
0
Profil bloqué
17 juin 2008 à 21:12
CREATE TABLE `sondages` (
`Id-Sondage` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`ip` VARCHAR( 15 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`DTE_VOTE` INT( 255 ) NOT NULL ,
`RESULTAT_VOTE` INT( 255 ) NOT NULL
) TYPE = MYISAM ;

J'ai présenté ma table comme ce-ci
Comment je doit faire lorsque je veut rajouter un sondage du coup, sa m'a l'air tellement plu simple que la :x...

"Avec la clé sur ID (id du sondage, si tu veux tu peux mettre NOM_SONDAGE) et IP. Et RESULTAT_VOTE le code de la réponse au sondage...

Ta fonction, que tu places dans le fichier fonction.php (j'utilise un simple SELECT plutôt qu'un SELECT COUNT, parce que là je me contente de regarder si l'IP a déjà voté) : "

Apparemment c'est la dedans mais j'ai du mal a te suivre.

Dans la page "fonction.php" Je dois mettre le code que tu ma donné en rajoutant mes parties de sondages, le petit bout de code sur la page qui fait l'appelle et c'est tout sinon? :)
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
18 juin 2008 à 19:00
Il me semble que c'est suffisamment clair ce qu'il ' t'as mis non ? ;)

Dans la page fonction.php, en général on met les déclarations de l'ensemble des fonctions que l'on est susceptible d'utiliser assez souvent.
Donc ici dans la page fonction.php, tu mettras la déclaration de la fonction, c'est à dire : function AfficherSondage($id) {...}

Ensuite dans la page où tu auras besoin de ta fonction, tu mettras, là où tu en auras besoin, AfficherSondage(1) par exemple, pour le sondage numéro 1.
Le problème est que si tu ne met que ça, le serveur va chercher la fonction AfficherSondage et ne la trouveras pas étant donné que tu l'as déclarée dans une autre page, d'où l'intérêt du : include('fonction.php'); qui permettra de dire que tu utilises des éléments de la page fonction.php.

Est-ce clair maintenant ?

Une dernière chose, tu compte avoir beaucoup de sondages, tu n'as pas répondu à la question ?
Et beaucoup de votant par sondage ?
0