JeuWeb - Crée ton jeu par navigateur
[Résolu] mysql_num_rows - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] mysql_num_rows (/showthread.php?tid=4372)



[Résolu] mysql_num_rows - Reaven - 27-09-2009

Bonjour,

Etant débutant en Ajax, je tente de créer quelques script tel qu'un compteur de visites qui ici me pose problème.
Mais bizarrement ce n'est pas le code Javascript qui bug (pour le moment Big Grin) mais la fonction mysql_num_rows de mon code PHP.

La voici:
Code PHP :
<?php
mysql_connect
("localhost","root","");
mysql_select_db("visites");

$ip= $_SERVER['REMOTE_ADDR'];
$mysql_query= mysql_query("SELECT * FROM visites WHERE ip='$ip'");
$mysql_data= mysql_num_rows($mysql_query);
............................
?>

Et voici l'erreur qui s'affiche à l'écran lors de l'ouverture de ma page :
Citation :Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP\www\FoxStudio\t_visites.php on line 6

J'ai fait des recherches sur la toile afin de trouver quelque solution que ce soit mais rien pour le moment. Je vous pose donc la question qui est de savoir pourquoi cette erreur apparaît ?

Merci beaucoup,
Reaven


RE: Mysql_num_rows - Kassak - 27-09-2009

Je crois que le souci vietn du fait que tu bosses en local, doit y avoir un truc à activer ou quelque chose comme ça, j'avais eu ce souci aussi.


RE: Mysql_num_rows - My Hotel - 27-09-2009

Clairement, si j'ai bien compris, le message d'erreur dit que tu lui as passé un booléen, au lieu d'une ressource SQL. Pourquoi tu te sers pas plutôt d'un SELECT COUNT?

Sinon, ton problème vient du fait que mysql_query() ne retourne pas un jeu de résultats, mais retourne false, qui est un booléen, tu as peut-être une erreur dans ta requête. Pour vérifier, rajoute un or die(mysql_error()); à la fin de ta requête.

Citation :Valeurs de retour

Pour les requêtes du type SELECT, SHOW, DESCRIBE, EXPLAIN et les autres requêtes retournant un jeu de résultats, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.

Pour les autres types de requêtes, INSERT, UPDATE, DELETE, DROP, etc., mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.

La ressource de résultat retournée doit être passée à la fonction mysql_fetch_array(), et les autres fonctions permettant d'explorer le résultat des tables, pour accéder aux données retournées.

Utilisez mysql_num_rows() pour trouver le nombre de lignes retournées pour une requête du type SELECT ou mysql_affected_rows() pour trouver le nombre de lignes affectées par les requêtes du type DELETE, INSERT, REPLACE, ou UPDATE.

mysql_query() échouera et retournera FALSE si l'utilisateur n'a pas les autorisations nécessaire pour accéder à la (aux) table(s) référencée(s) par la requête.

Enfin, si c'est pas ça, je laisse des plus calés que moi te donner la solution. Smile


RE: Mysql_num_rows - Reaven - 27-09-2009

Mea Culpa ! Simple erreur de nom de table -_-''. Tout est rentré dans l'ordre. Mais pour être sûr que mon script fonctionne parfaitement, vous pourriez passez sur mon site:

http://foxstudio.hostzi.com

Afin que je vois si le nombre de visite augmente comme prévu ?

Merci beaucoup,
Reaven

NB: Je marquerai le sujet comme RESOLU une fois sur que le compteur de visite AJAX fonctionne Wink.


RE: Mysql_num_rows - zeppelin - 27-09-2009

fais un test avec var_dump().

Code PHP :
<?php
mysql_connect
("localhost","root","");
mysql_select_db("visites");

$ip= $_SERVER['REMOTE_ADDR'];
$mysql_query= mysql_query("SELECT * FROM visites WHERE ip='$ip'");

var_dump($mysql_query);

$mysql_data= mysql_num_rows($mysql_query);
............................
?>

De cette manière tu verra pourquoi ton mysql_num_rows râle.

Ou alors passe carrément à l'abstraction de BDD, avec des exceptions etc, après un court apprentissage tu es gagnant sur toute la ligne!

EDIT: mince trop tard :-p. Je laisse le post, c'est un bon conseil je pense! var_dump roxx the planet ^^


RE: Mysql_num_rows - Reaven - 27-09-2009

Le compteur fonctionne parfaitement Wink.
Je marque le sujet comme RESOLU.

Merci à tous,
Reaven