[PHP] Système de vote
Lightguismo
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je me suis remis à coder il y a peu et pour m'entrainer je voulais m'amuser à faire un système de vote puis de classement. Pour le classement ce n'est pas dur suffit d'afficher en fonction du nombre de vote mais ce qui me pose problème c'est le système de vote. J'ai essayé differente chose et ça ne fonctionne pas.
Voici mon code :
Et je veux que quand on clique sur le lien " je vote " ça rajoute un vote et que ça actualise la page. Voila je vous remercie d'avance pour votre aide :)
Voici mon code :
<?php
include('co.php');
$retour = mysql_query('SELECT id, pseudo, photo, points FROM membres ORDER BY points DESC');
while ($donnees = mysql_fetch_array($retour) or die(mysql_error()))
{
echo '<img src="' . $donnees['photo'] . '" style="width: 200px; height: 200px;"/> <br/>';
echo $donnees['pseudo'] . '<br/>';
echo $donnees['points'] . 'votes <br/>';
echo '<a href="classement.php?id=' . $donnees['id'] . '"> Je vote ! </a> <br/>';
$id = $_GET['id'];
if ($id != NULL)
{
include('co.php');
$points = $donnees['points'] + 1;
mysql_query("UPDATE membres SET points='" . $points . "' WHERE id='" . $id . "'");
header('location:classement.php');
}
}
?>
Et je veux que quand on clique sur le lien " je vote " ça rajoute un vote et que ça actualise la page. Voila je vous remercie d'avance pour votre aide :)
A voir également:
- [PHP] Système de vote
- Vérificateur des fichiers système - Guide
- Restauration systeme windows 10 - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
- Easy php - Télécharger - Divers Web & Internet
- Comment refaire le système d'un ordinateur - Guide
5 réponses
Bonjour,
co.php n'affiche rien n'est-ce pas, c'est juste une librairie de fonctions ?
parce que si ce n'est pas le cas, ça ne peut pas fonctionner.
Vous ne pouvez pas faire de echo avant un header.
Sinon j'écrirais le code dans l'autre sens.
Si $_GET['id'] existe traiter le vote, sinon traiter l'affichage des votes possibles.
Le code ci dessous devrait marcher :
1 - je vérifie l'existance du ID dans le GET
2 - s'il existe j'update et je reviens à la page classement.php
3 - sinon j'affiche la liste des photos avec le lien de vote
Zébulon
co.php n'affiche rien n'est-ce pas, c'est juste une librairie de fonctions ?
parce que si ce n'est pas le cas, ça ne peut pas fonctionner.
Vous ne pouvez pas faire de echo avant un header.
Sinon j'écrirais le code dans l'autre sens.
Si $_GET['id'] existe traiter le vote, sinon traiter l'affichage des votes possibles.
Le code ci dessous devrait marcher :
1 - je vérifie l'existance du ID dans le GET
2 - s'il existe j'update et je reviens à la page classement.php
3 - sinon j'affiche la liste des photos avec le lien de vote
include('co.php');
// existance du ID
if (isset($_GET['id'])
{
$id = $_GET['id'];
$points = $donnees['points'] + 1;
mysql_query("UPDATE membres SET points='" . $points . "' WHERE id='" . $id . "'");
header('location:classement.php');
} else {
$retour = mysql_query('SELECT id, pseudo, photo, points FROM membres ORDER BY points DESC');
while ($donnees = mysql_fetch_array($retour) or die(mysql_error()))
{
echo '<img src="' . $donnees['photo'] . '" style="width: 200px; height: 200px;"/> <br/>';
echo $donnees['pseudo'] . '<br/>';
echo $donnees['points'] . 'votes <br/>';
echo '<a href="classement.php?id=' . $donnees['id'] . '"> Je vote ! </a> <br/>';
}
}
Zébulon
Le php étant un langage interprété coté serveur, il a falloir que vous rappeliez la page grâce a un formulaire.
Je vous conseil vivement de lire ce tutoriel tres bien fait sur le php:
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql
Une partie concerne plus particulièrement les formulaires:(CF: https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires )
Mais vous devriez vraiment suivre l'ensemble du cours depuis le début.
Bonne lecture ;)
Je vous conseil vivement de lire ce tutoriel tres bien fait sur le php:
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql
Une partie concerne plus particulièrement les formulaires:(CF: https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires )
Mais vous devriez vraiment suivre l'ensemble du cours depuis le début.
Bonne lecture ;)
Le co.php contient seulement de quoi se connecter à la BDD et je suis désolé mais ton code ne fonctionne pas plus que le mien mais c'est vrai qu'il est mieux :)
Super carotte> Je vois ce que tu veux dire et je vais essayer. J'ai déja lu tout ça ya longtemmps mais tu as raison je devrai peut-être relire. Merci :)
Super carotte> Je vois ce que tu veux dire et je vais essayer. J'ai déja lu tout ça ya longtemmps mais tu as raison je devrai peut-être relire. Merci :)
<?php
include('co.php');
// existance du ID
if (isset($_POST['id']))
{
$id = $_POST['id'];
mysql_query("UPDATE membres SET points=points+1 WHERE id='" . $id . "'");
echo $id;
}
else {
$retour = mysql_query('SELECT id, pseudo, photo, points FROM membres ORDER BY points DESC');
while ($donnees = mysql_fetch_array($retour) or die(mysql_error()))
{
echo '<img src="' . $donnees['photo'] . '" style="width: 200px; height: 200px;"/> <br/>';
echo $donnees['pseudo'] . '<br/>';
echo $donnees['points'] . 'votes <br/>';
?>
<form action="classement.php" method="post">
<p>
<input type="hidden" name="id" value="<?php $donnees['id'] ?>" />
<input type="submit" value="Valider" />
</p>
<?php
}
}
?>
Bon voila j'ai tenter quelque chose comme ça mais quand je clique sur le bouton il m'affiche une page blanche et en plus le contenu de la bdd ne change pas. Help ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
A priori ce code fonctionne, sauf si il y a des erreurs dans co.php ou que le tableau $donnees ne soit pas instancié dans co.php fatalement. Après il peut avoir des problèmes avec votre base de données, mais le principe est là. Si ça ne marche pas, donnez-nous au moins vos messages d'erreur.
Regardez le code ci dessous, fichier nommé test.php, il reprend le principe du code au-dessus sans base de donnée, et il fonctionne :
A priori ce code fonctionne, sauf si il y a des erreurs dans co.php ou que le tableau $donnees ne soit pas instancié dans co.php fatalement. Après il peut avoir des problèmes avec votre base de données, mais le principe est là. Si ça ne marche pas, donnez-nous au moins vos messages d'erreur.
include('co.php');
// existance du ID
if (isset($_GET['id'])) {
$id = $_GET['id'];
$points = $donnees['points'] + 1;
mysql_query("UPDATE membres SET points='" . $points . "' WHERE id='" . $id . "'");
header('location:classement.php');
} else {
$retour = mysql_query('SELECT id, pseudo, photo, points FROM membres ORDER BY points DESC');
while ($donnees = mysql_fetch_array($retour) or die(mysql_error()))
{
echo '<img src="' . $donnees['photo'] . '" style="width: 200px; height: 200px;"/> <br/>';
echo $donnees['pseudo'] . '<br/>';
echo $donnees['points'] . 'votes <br/>';
echo '<a href="classement.php?id=' . $donnees['id'] . '"> Je vote ! </a> <br/>';
}
}
Regardez le code ci dessous, fichier nommé test.php, il reprend le principe du code au-dessus sans base de donnée, et il fonctionne :
<?php
// existance du ID
if (isset($_GET['id'])) {
$id = $_GET['id'];
// UPDATE
header('location:test.php');
} else {
$tab = array('a','b','c');
foreach($tab as $i=>$e) {
echo '<a href="test.php?id='.$i.'">'.$e.'<br/>';
}
}
?>