Like Dislike rating system with jQuery, Ajax and PHP
Résolu
placi2
Messages postés
1
Date d'inscription
samedi 15 octobre 2016
Statut
Membre
Dernière intervention
15 octobre 2016
-
Modifié par crapoulou le 15/10/2016 à 14:03
jordane45 Messages postés 38486 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 août 2025 -
jordane45 Messages postés 38486 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 août 2025 -
Bonjour,
je telecharge le tuto Like Dislike rating system with jQuery, Ajax and PHP dans le site codexworld.
mais quand je lance le project il y a deux erreus que je ne parviens pas a corriger:
1. Notice: Undefined variable: data in C:\xampp\htdocs\like_dislike_jquery_ajax_php\tutorial.php on line 30
2. Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\like_dislike_jquery_ajax_php\index.php on line 69
Merci.
"
je telecharge le tuto Like Dislike rating system with jQuery, Ajax and PHP dans le site codexworld.
mais quand je lance le project il y a deux erreus que je ne parviens pas a corriger:
1. Notice: Undefined variable: data in C:\xampp\htdocs\like_dislike_jquery_ajax_php\tutorial.php on line 30
<?php class Tutorial{ function __construct(){ //db details $db_host = 'localhost'; $db_user = 'root'; $db_pass = ''; $db_name = 'codexworld'; //connect db $con = mysql_connect($db_host, $db_user, $db_pass); //select db mysql_select_db($db_name, $con); } function get_rows($id = ''){ if($id != ''){ //fetch single row $query = mysql_query("SELECT * FROM tutorials WHERE id = $id"); $data = mysql_fetch_assoc($query); }else{ //fetch all rows $query = mysql_query("SELECT * FROM tutorials"); while($row = mysql_fetch_assoc($query)){ $data[] = $row; } } return $data; } function insert($data = array()){ $data_array_num = count($data); $columns = ""; $values = ""; $i=0; foreach($data as $key=>$val){ $i++; $sep = ($i == $data_array_num)?"":", "; $columns .= $key.$sep; $values .= $val.$sep; } $insert = mysql_query("INSERT INTO tutorials ($columns) VALUES ($values)"); return $insert?TRUE:FALSE; } function update($data = array(), $conditions = array()){ $data_array_num = count($data); $cols_vals = ""; $condition_str = ""; $i=0; foreach($data as $key=>$val){ $i++; $sep = ($i == $data_array_num)?'':', '; $cols_vals .= $key."='".$val."'".$sep; } foreach($conditions as $key=>$val){ $i++; $sep = ($i == $data_array_num)?"":" AND "; $condition_str .= $key."='".$val."'"; } $update = mysql_query("UPDATE tutorials SET $cols_vals WHERE $condition_str"); return $update?TRUE:FALSE; } } ?>
2. Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\like_dislike_jquery_ajax_php\index.php on line 69
<?php include_once("tutorial.php"); $tutorial = new Tutorial(); $trows = $tutorial->get_rows(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Like and Dislike using jQuery, Ajax and PHP</title> <link type="text/css" rel="stylesheet" href="css/bootstrap.min.css"/> <script type="text/javascript" src="js/bootstrap.min.js"></script> <style type="text/css"> .row{ margin:20px 20px 20px 20px;} .ratings{ font-size:25px !important;} .thumbnail img { width: 100%; } .ratings { padding-right: 10px; padding-left: 10px; color: #d17581; } .thumbnail { padding: 0; } .thumbnail .caption-full { padding: 9px; color: #333; } .glyphicon-thumbs-up:hover{ color:#008000; cursor:pointer;} .glyphicon-thumbs-down:hover{ color: #E10000; cursor:pointer;} .counter{ color:#333333;} .thumbnail img{height:200px;} </style> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript"> /** * Function Name: cwRating() * Function Author: CodexWorld * Description: cwRating() function is used for implement the rating system. cwRating() function insert like or dislike data into the database and display the rating count at the target div. * id = Unique ID, like or dislike is based on this ID. * type = Use 1 for like and 0 for dislike. * target = Target div ID where the total number of likes or dislikes will display. **/ function cwRating(id,type,target){ $.ajax({ type:'POST', url:'rating.php', data:'id='+id+'&type='+type, success:function(msg){ if(msg == 'err'){ alert('Some problem occured, please try again.'); }else{ $('#'+target).html(msg); } } }); } </script> </head> <body> <div class="row"> <?php foreach($trows as $trow){ ?> <div class="col-sm-4 col-lg-4 col-md-4"> <div class="thumbnail"> <img src="<?php echo 'images/'.$trow['image']; ?>" alt="" /> <div class="caption"> <h4><a href="javascript:void(0);" rel="nofollow noopener noreferrer" target="_blank"><?php echo $trow['title']; ?></a></h4> <p><?php echo $trow['details']; ?></p> </div> <div class="ratings"> <p class="pull-right"></p> <p> <!-- Like Icon HTML --> <span class="glyphicon glyphicon-thumbs-up" onClick="cwRating(<?php echo $trow['id']; ?>,1,'like_count<?php echo $trow['id']; ?>')"></span> <!-- Like Counter --> <span class="counter" id="like_count<?php echo $trow['id']; ?>"><?php echo $trow['like_num']; ?></span> <!-- Dislike Icon HTML --> <span class="glyphicon glyphicon-thumbs-down" onClick="cwRating(<?php echo $trow['id']; ?>,0,'dislike_count<?php echo $trow['id']; ?>')"></span> <!-- Dislike Counter --> <span class="counter" id="dislike_count<?php echo $trow['id']; ?>"><?php echo $trow['dislike_num']; ?></span> </p> </div> </div> </div> <?php } ?> </div> </body> </html>
Merci.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Like et dislike instagram
- Télécharger instagram pc - Télécharger - Divers Communication
- Voir like instagram - Guide
- Brouillon instagram - Guide
- Qui regarde mon profil instagram - Guide
- Créer un compte instagram sur google - Guide
1 réponse
jordane45
Messages postés
38486
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 août 2025
4 752
Modifié par jordane45 le 15/10/2016 à 18:12
Modifié par jordane45 le 15/10/2016 à 18:12
Bonjour,
Première erreur
NB: Si la requête ne retourne aucun résultat ... $data est vide... et vu que tu ne l'as pas initialisé avant.. le code t'indique qu'il est "undefined".
Avec l'écriture ternaire et le !empty tu t'assures qu'il existe avant de t'en servir.
La seconde erreur est du même genre et fait suite à la première...
Tu essaies de faire :
Sauf que $trows est le retour de la fonction get_rows ...
Vu que ta fonction ne retourne rien.... la variable ne contient rien !
Donc avant de boucler... on vérifie que la variable existe et n'est pas vide
Par contre je ne comprend pas l'interet de mettre du php dans ta page HTML si ton but est de le faire en AJAX....
Cordialement,
Jordane
Première erreur
function get_rows($id = ''){ if($id != ''){ //fetch single row $query = mysql_query("SELECT * FROM tutorials WHERE id = $id"); $data = mysql_fetch_assoc($query); }else{ //fetch all rows $query = mysql_query("SELECT * FROM tutorials"); while($row = mysql_fetch_assoc($query)){ $data[] = $row; } } // Si $data existe et n'est pas vide on retourne $datas sinon on retourne NULL return !empty($data) ? $data :NULL; }
NB: Si la requête ne retourne aucun résultat ... $data est vide... et vu que tu ne l'as pas initialisé avant.. le code t'indique qu'il est "undefined".
Avec l'écriture ternaire et le !empty tu t'assures qu'il existe avant de t'en servir.
La seconde erreur est du même genre et fait suite à la première...
Tu essaies de faire :
<?php foreach($trows as $trow){ ?>
Sauf que $trows est le retour de la fonction get_rows ...
Vu que ta fonction ne retourne rien.... la variable ne contient rien !
Donc avant de boucler... on vérifie que la variable existe et n'est pas vide
<?php if(!empty($trows)){ foreach($trows as $trow){ // le reste du code de la boucle } // fin du foreach }// fin du if ?> ?>
Par contre je ne comprend pas l'interet de mettre du php dans ta page HTML si ton but est de le faire en AJAX....
Cordialement,
Jordane
15 oct. 2016 à 18:14
Je t'invite vivement à passer à mysqli ou à la PDO.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Voici un exemple d'ajax utilisant JQUERY + PDO
https://forums.commentcamarche.net/forum/affich-33258760-remplir-un-formulaire-dynamiquement-en-fonction-d-une-combobox#2
17 oct. 2016 à 09:48
mais je trouve que l'utilisateur peut vote autant de fois comment je peux controle le vote apartir de login
17 oct. 2016 à 10:27
(une simple requête de type SELECT WHERE )
Tu peux le faire au moment du vote ou avant le vote (via un AJAX par exemple).
Ceci étant une nouvelle question... je t'invite, SI TU N'Y ARRIVES PAS, à ouvrir une nouvelle discussion sur le forum.