TYBMHI Posté 19 Septembre 2008 Posté 19 Septembre 2008 Bonjour à tous, Je viens de finir mon premier site. Sur mon site des internautes viennent poster des messages. Ensuite j'ai installé un système de vote de ce type: bien (34) pas bien(23) les gens cliquent sur bien ou pas bien et le chiffre entre parenthèse s'incrémente de 1. Le problème c'est qu'il s'incrémente de 1 uniquement après un rechargement de la page et si on recharge la page à l'aide du navigateur ça renvoi un vote. Alors ma question est comment faire pour que lorsque l'internaute clique sur le vote de son choix, il voit apparaitre de suite le chiffre entre parenthèse incrémenté de 1 sans qu'il est besoin de recharger la page ? voici mon code du système de vote : <?phpif (isset($_GET['id']) AND isset($_GET['pasbien'])){$id=$_GET['id'];if(true){//true c-à-d si le formulaire est validéecho "<script language='Javascript'><!--alert('Votre vote a été pris en compte ! Merci !');// --></SCRIPT>";}mysql_query("UPDATE message SET pasbien=pasbien+1 WHERE id='$id'");}?> Merci d'avance pour votre aide.
KnockedMaster Posté 19 Septembre 2008 Posté 19 Septembre 2008 Salut, C'est un joyeux bordel il me semble ... Essaye le code suivant : <?phpif (isset($_GET['id']) AND isset($_GET['pasbien'])){ $id = $_GET['id']; if(true) {//true c-à-d si le formulaire est validé mysql_query("UPDATE message SET pasbien=pasbien+1 WHERE id='$id'"); ?> <script language='Javascript'> window.reload(); alert('Votre vote a été pris en compte ! Merci !'); </script><?php } }?> C'est pas très propre mais ça devrait fonctionner ... Tu devrais valider tes données avant de faire ton update. Tu devrais ajouter un LIMIT dans ta clause @+
TYBMHI Posté 19 Septembre 2008 Auteur Posté 19 Septembre 2008 Merci beaucoup de ton aide mais la solution que tu me propose ne fonctionne pas ou sinon c'est moi qui m'en sert mal. Je me dis aussi que c'est peut-etre à cause de l'adresse de mes lien de vote voici le lien : <a href="index.php?page =<?php echo "$page" ?>&votebien=r&categorie=<?php echo "$categorie" ?>&souscategorie=<?php echo "$souscategorie" ?> &id=<?php echo $donnees['id']; ?>" class="lienvote"> est-ce qu'il n'y aurait pas possibilité d'incrémenter la base sql directement à partir du lien. Je dis peut-être n'importe quoi...
KnockedMaster Posté 19 Septembre 2008 Posté 19 Septembre 2008 Tu le fais à partir d'un lien, ok ... je n'avais capté ça comme ça Le hic, c'est que c'est tout à fait normal que la page soit rechargée puisque tu envoies tes données par la query string (en GET via ton lien) Pour que ton affichage soit correct après le clic sur le lien, il faut que l'UPDATE précède le SELECT dans l'ordre du code ... c'est tout ... @+
iNCiTE Web Posté 19 Septembre 2008 Posté 19 Septembre 2008 Tu pourrais enregistrer le vote dans la base et mettre à jour l'affichage directement sans aucun rechargement de page, mais il faut utiliser Javascript et AJAX pour la mise à jour de la base. Sans rechargement de page c'est impossible en PHP seul, car il est exécuté sur le serveur et après on ne sait pas ce qui se passe sur le navigateur...
Reise Posté 19 Septembre 2008 Posté 19 Septembre 2008 (modifié) Merci beaucoup de ton aide mais la solution que tu me propose ne fonctionne pas ou sinon c'est moi qui m'en sert mal. Je me dis aussi que c'est peut-etre à cause de l'adresse de mes lien de vote voici le lien : <a href="index.php?page =<?php echo "$page" ?>&votebien=r&categorie=<?php echo "$categorie" ?>&souscategorie=<?php echo "$souscategorie" ?> &id=<?php echo $donnees['id']; ?>" class="lienvote"> est-ce qu'il n'y aurait pas possibilité d'incrémenter la base sql directement à partir du lien. Je dis peut-être n'importe quoi... Euh bon si j'ai bien compris. Quand tu clique sur un de tes liens, ça appelle la même page en passant les paramètres. Un script traite tout ça (avec l'incrémentassions de la base de données). et ensuite on fait un header('/tapage.php'); exit(); pour rediriger ton visiteur. Voila en gros le principe : <?php //Si on a cliqué sur ton lien if(!empty($_GET)) { //Champ = champ à incrémenter $sql = 'UPDATE table SET champ = champ + 1 WHERE cat = '.$_GET['cat']; mysql_query($sql) exit(mysql_error()); header('la-meme-page.php'); //On redirige vers la même page sans paramètres cette fois exit(); }?> je sais pas si ça va t'aider Sinon il reste l'AJAX, pour recharger qu'une div par exemple. Modifié 19 Septembre 2008 par Reise
TYBMHI Posté 20 Septembre 2008 Auteur Posté 20 Septembre 2008 Merci à tous pour votre aide et grâce à vous ça fonctionne très bien désormais. Il m'a fallut tout simplement de mettre mon update avant le select. Voilà et encore une fois merci à tous !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant