Posez votre question Signaler

Formulaire php/base de données [Résolu]

ln1285 - Dernière réponse le 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>
Lire la suite 

Formulaire php/base de données »

11 réponses
Réponse
+0
moins plus
$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
Ajouter un commentaire
Réponse
+0
moins plus
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...)
Ajouter un commentaire
Réponse
+0
moins plus
$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
}
?> 
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
$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"'; 

......
ln1285 - 10 janv. 2010 à 19:34
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.
Ajouter un commentaire
Réponse
+0
moins plus
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'";

Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
regardes la réponse que je viens de te faire
Ajouter un commentaire
Réponse
+0
moins plus
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.
ln1285 - 10 janv. 2010 à 21:09
Ah j'avais trouvé au même moment en fait ! lol
MAis merci quand même
Ajouter un commentaire
Ce document intitulé « Formulaire php/base de données » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?