[RESOLU] Submit ID.

Petit nouveau ! | 7 Messages

18 mai 2014, 19:18

Bonjour,
j'ai un système d'articles avec des commentaires, je voudrais mettre un système de j'aime.
J'utilise le code php suivant:
if(isset($_POST['voter'])) {
	
		mysql_query("UPDATE articles SET votes = votes + 1 WHERE id = '".$id."'");
	
	}
Le "id" doit être l'id de l'article, mais comment envoyer cet id depuis le submit ?
Mon code pour afficher l'id est :
<?php echo $a['id']; ?>
Merci de votre aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 mai 2014, 19:35

Salut,

Il faut l'ajouter dans un champs de type hidden.

Attention dans ce cas il te faut un formulaire par commentaire (donc form et /form).


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 7 Messages

18 mai 2014, 19:44

Merci de ta réponse, mon bouton j'aime donne actuellement ceci :
<form action="" method="post">
<input hidden="<?php echo $a['id']; ?>" type="submit"></a></form>
Pour définir le
WHERE id = '".$id."'");
en fin de reqpete sql, je dois mettre
$id = Securise($_POST['id']);
ou autre chose en début de code php ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 mai 2014, 19:49

Un input de type hidden http://www.w3schools.com/tags/att_input_type.asp
En plus du submit. (Tu as un exemple complet sur le lien).

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 7 Messages

18 mai 2014, 19:53

Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 mai 2014, 19:56

De rien

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 7 Messages

19 mai 2014, 17:20

Cela ne fonctionne pas, en gros je dois récupérer l'id de l'article dans mon
if(isset($_POST['voter'])) {

}

ViPHP
xTG
ViPHP | 7331 Messages

19 mai 2014, 17:30

Cela ne fonctionne pas, en gros je dois récupérer l'id de l'article dans mon
if(isset($_POST['voter'])) {

}
Montres nous ton code.
Mais à priori tu avais compris la manipulation pour transmettre l'id, donc tu dois juste avoir un petit souci quelque part.

Petit nouveau ! | 7 Messages

19 mai 2014, 17:33

$sql = mysql_query("SELECT * FROM couples ORDER BY votes DESC LIMIT 20"); 
while($a = mysql_fetch_array($sql)) { 

if(isset($_POST['voter'])) {
	
		mysql_query("UPDATE couples SET votes = votes + 1 WHERE id = '".$a['id']."'");
	
	}
Le bouton voter :
<center><input type="submit" name="voter" value="VOTER!" /></center>
Ce code fait monter tout les votes au lieu de celui avec l'id concernée.

ViPHP
xTG
ViPHP | 7331 Messages

19 mai 2014, 18:40

En effet, car c'est ce que tu lui demandes...
// récupérer 20 enregistrements en les classant par votes descendant (les 20 plus gros votes donc)
$sql = mysql_query("SELECT * FROM couples ORDER BY votes DESC LIMIT 20");
// itérer sur chaque vote
while($a = mysql_fetch_array($sql)) {

if(isset($_POST['voter'])) {
       // pour chaque vote incrémenter le nombre de vote
                mysql_query("UPDATE couples SET votes = votes + 1 WHERE id = '".$a['id']."'");
       
        }
Il faut comme on te l'a indiqué plus haut ajouter un champs caché dans ton formulaire et y insérer l'id du vote.

Petit nouveau ! | 7 Messages

19 mai 2014, 20:44

Même en lisant la documentation, je ne vois aucun exemple ou l'on peut insérer l'id dans le submit.

Petit nouveau ! | 7 Messages

19 mai 2014, 20:47

Hum, j'ai trouvé : http://fr.openclassrooms.com/forum/suje ... 3pRe3YTX-Y.
Merci de votre aide, bonne fin de journée, je passe le sujet en résolu.

ViPHP
xTG
ViPHP | 7331 Messages

20 mai 2014, 07:34

Euh... On t'a jamais dit qu'il fallait récupérer l'id du bouton...
Mais l'id du vote !
Alors à moins que ton submit prenne comme id celui du vote mais ce n'est pas très conseillé car en HTML5 l'id peut être interprété comme le name.
<input type="hidden" name="id_vote" value="<?php echo $id_vote; ?>" />
<input type="submit" ...