Formulaire php/base de données

Résolu/Fermé
ln1285 - 10 janv. 2010 à 14:47
 ln1285 - 10 janv. 2010 à 21:09
Bonjour,
J'ai un problème lié à l'envoi des données d'un formulaire vers le script. En effet, je fais un sondage, et mes valeurs proviennent d'une base de données, mais je ne récupère aucune donnée dans mon script.

Merci d'avance.
?>

<FORM METHOD="post" ACTION="sondage.php">
<CENTER>
<TABLE> <TR>
<TD>
<?php
while ($row = mysql_fetch_assoc($ret))
{
echo $row["num_photo"];
echo" ";
?>

<INPUT TYPE="radio" NAME="elu" VALUE="<?php $row["num_photo"] ?>" >
<?php
echo $row["auteur"];
?> <br> <?php
}
?>
<INPUT TYPE="submit" VALUE="envoyer">
</TABLE></CENTER>
</FORM>

</body>

</html>

et le 2eme :
<body>
<?php
$elu=$_POST['elu']; print("<center>vous avez choisi $elu</center>");

/* Connexion à la table humour */
$hote = 'localhost';
$base = 'photo';
$user = 'root';
$pass = '';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ()); /* Connexion */
$ret = mysql_select_db ($base) or die (mysql_error ());

$numphoto=1;
$req = 'SELECT num_photo,auteur,nb_vote FROM humour WHERE num_photo = "$numphoto"';
$ret = mysql_query($req) or die (mysql_error ());
$num=mysql_num_rows($ret);
echo"$num auteur trouvé pour cette requete";
$new_nbvote=$ret["nb_vote"]+1;


echo "Vous avez voté pour ",$ret["auteur"], "Il a maintenant",$new_nbvote, "voix.";

?>
</body>
</html>

9 réponses

toughzaa Messages postés 80 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 12 septembre 2013 5
10 janv. 2010 à 15:20
$elu=$_POST['elu']; print("<center>vous avez choisi $elu</center>"); => cela affiche le vote effectué ?
$ret = mysql_select_db ($base) or die (mysql_error ()); => Pas d'erreur ?
Sinon ajoute cela :
$sql = mysql_query('UPDATE humour SET nb_vote="'.$new_nbvote.'" WHERE num_photo = "'.$numphoto.'");
Ca devrait marcher
1
Merci pour ta réponse, en fait, je n'arrive même pas à afficher le vote effectué
$elu=$_POST['elu']; print("<center>vous avez choisi $elu</center>"); => cela affiche seulement : "vous avez choisi"
J'ai l'impression que la donnée n'est pas transmise, mais je ne vois pas du tout d'où ça vient (je suis une grande débutante...)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 janv. 2010 à 17:04
$ret = mysql_query($req) or die (mysql_error ());
$num=mysql_num_rows($ret);
echo"$num auteur trouvé pour cette requete";
$new_nbvote=$ret["nb_vote"]+1;


ce code n'est pas bon

mysql_query fait l'extraction de la base et les réponses sont stockées en mémoire il faut aller les chercher

par un mysql_fetch...

$ret = mysql_query($req) or die (mysql_error ());
$result=mysql_fetch_array($ret);

// mysql_num_rows($ret); te renvoie seule ment le nombre d'enregistrements trouvés ! dans ton cas ce sera toujours 1

$new_nbvote=$result["nb_vote"]+1;

echo "Vous avez voté pour ",$result["auteur"], "Il a maintenant",$new_nbvote, "voix."; 


et dans ton formulaire il manque echo:

<INPUT TYPE="radio" NAME="elu" VALUE="<?php echo $row["num_photo"]; ?>" >
<?php
echo $row["auteur"];
?> <br> <?php
}
?> 
0
Merci pour ta réponse Alain_42.
J'ai réussi à faire passer ma variable, il me manquait effectivement le "echo" dans mon formulaire.
le problème est que ma requête ne renvoie aucun enregistrement (alors qu'il devrait y en avoir un comme vous avez dit). Voici mon script :


$req = 'SELECT num_photo,auteur,nb_vote FROM humour WHERE num_photo = "$elu"';
$ret = mysql_query($req) or die (mysql_error ());
$result=mysql_fetch_array($ret);

$num=mysql_num_rows($ret);
echo"$num auteur trouvé pour cette requete";
$new_nbvote=$result["nb_vote"]+1;
$sql=mysql_query('UPDATE humour SET nb_vote=".$new_nbvote." WHERE num_photo = ".$numphoto."');

echo "Vous avez voté pour ",$result["auteur"], "Il a maintenant",$result["nb_vote"], "voix.";
?>
</body>
</html>

et mon écran m'affiche :
vous avez voté pour la photo numero11
0 auteur trouvé pour cette requeteVous avez voté pour Il a maintenantvoix.

Est-ce que ça vient d'un problème de syntaxe dans le print ? (je suis pas trop à l'aise sur ce point avec les variables)
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 janv. 2010 à 19:11
$sql=mysql_query('UPDATE humour SET nb_vote=".$new_nbvote." WHERE num_photo = ".$numphoto."');

$numphoto ça sort d'ou ?

$sql=mysql_query('UPDATE humour SET nb_vote=".$new_nbvote." WHERE num_photo = ".$elu."');
serait mieux

pour ton pb fais un echo de $elu

pour voir ce que tu reçoit:

echo "Numero elu: ".$elu;
$req = 'SELECT num_photo,auteur,nb_vote FROM humour WHERE num_photo = "$elu"'; 

......
0
Effectivement, j'avais oublié de modifier $numphoto, et j'avais déjà fait un echo de $elu, qui m'affiche la bonne variable...
Mais j'ai toujours mon problème de 0 enregistrement.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 janv. 2010 à 20:49
essayes avec:

en php dans les chaines qui commencent et finissent par ' les variables ne sont pas interpréptées, elles le sont dans les chaines qui sont encadrées par des"

donc essayes:

$req = 'SELECT num_photo,auteur,nb_vote FROM humour WHERE num_photo = "'.$elu.'"';

OU 

$req = "SELECT num_photo,auteur,nb_vote FROM humour WHERE num_photo = '$elu'";

0
Avec quelques modifications, je me suis rendue compte qu'en remplaçant ".$elu." par un nombre, ma 1ere requete (select...) fonctionne et me renvoie ce que je veux obtenir. Cela viendrait d'un problème de syntaxe ?

Quant à la 2eme, au lieu de m'ajouter 1 voix, elle m'a initialisé à 0 !? ($new_nbvote=$result["nb_vote"]+1; semble fonctionner)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 janv. 2010 à 21:07
regardes la réponse que je viens de te faire
0
Cela venait effectivement d'un problème de syntaxe. Dans les requêtes, j'ai dû remplacer les " par '. par ex :
$sql=mysql_query('UPDATE humour SET nb_vote='.$new_nbvote.' WHERE num_photo ='.$elu.''); Et ça a l'air de fonctionner maintenant ! Merci beaucoup Alain_42.
0
Ah j'avais trouvé au même moment en fait ! lol
MAis merci quand même
0