Killator Posté(e) le 9 juin 2006 Partager Posté(e) le 9 juin 2006 Salut à tous les codeurs de PCI, Voilà, je suis entrain de coder une page à priori très simple et pourtant... Je me prends un vieux 'warning' en pleine tête et je comprends pas pourquoi... Voici le code, en version light: $query_gtrN ="SELECT count( DISTINCT `N__Ticket`,psr.`urs` ) FROM xxx WHERE xxx AND xxx AND xxx AND xxx"; $gtrN = mysql_query($query_gtrN); while($row = mysql_fetch_row($gtrN)) { $gtrN=$row[0]; } echo $gtrN; Voici l'affichage: Warning: Supplied argument is not a valid MySQL result resource in /www/yyy.php on line 2927 La ligne 29 étant la ligne du while... ...fetch.Qu'est-ce que j'ai fait pour mériter ça ? Merci d'avance ! Pour info, j'ai aussi fait un fetch_assoc, idem et le serveur est tellement vieux qu'il ne connait pas le fetch_array... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 9 juin 2006 Partager Posté(e) le 9 juin 2006 Cette question devrait plutôt être postée dans la section Création Web... Je la déplace. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 9 juin 2006 Auteur Partager Posté(e) le 9 juin 2006 Cette question devrait plutôt être postée dans la section Création Web... Je la déplace. Oups, vraiment désolé... Faut vraiment que je sois préoccupé pour avoir louper ça... Merci pour la manip Sentinel ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 9 juin 2006 Partager Posté(e) le 9 juin 2006 A priori c'est un problème dans les paramètres passés à "mysql_query" ou à "mysql_fetch_row". Vérifie dans la doc officielle PHP, surtout si ton PHP est vieux. Il est possible qu'il manque un argument ou que le type des arguments soit mauvais. Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 9 juin 2006 Partager Posté(e) le 9 juin 2006 en attendant, teste while($row = @mysql_fetch_row($gtrN)) le @ oblige les fonctions à se taire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 9 juin 2006 Auteur Partager Posté(e) le 9 juin 2006 J'en ai fait des "tonnes" de requête dans ce style et jamais un problème... MAIS c'est la 1ère fois que ne demande qu'un count... Donc un résultat d'une seule ligne... Et je vois pas en quoi ça le dérange... Enfin j'irais quand même voir la docs officielle, même si j'ai passé l'aprem sur le web... le @ oblige les fonctions à se taire. Nickel ! Merci FiP_ ! Mais je ne baisse pas les bras ! J'veux comprendre pourquoi... Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 9 juin 2006 Partager Posté(e) le 9 juin 2006 Ce qui est marrant, c'est qu'en cherchant un message d'erreur mysql sur google, on trouve plus de sites qui plantent que de solutions au probléme Ca doit être pratique google, quand on a découvert une faille et qu'on veut l'exploiter... hein? nan saipamoijayriendi. Et sinon, mon vrai nom est FiP, sans l'underscore.. "FiP_" est le nom que je suis obligé de prendre sur les sites qui refusent les noms à moins de 4 caractères -_-. (Et pourquoi d'abord? hein? hein?! c'est injuste ce truc) EDIT: C'est quand même curieux comme truc! que dit "gettype($gtrN);" ? Nan parceque bon, si fetch_row deconne, c'est que ton mysql_query à merdé... Ca doit rien afficher du coup nan? essaye aussi un "echo mysql_error();" après ton appel à mysql_query... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 9 juin 2006 Auteur Partager Posté(e) le 9 juin 2006 Ce qui est marrant, c'est qu'en cherchant un message d'erreur mysql sur google, on trouve plus de sites qui plantent que de solutions au probléme Mdr ! Google: 1er moteur de recherche sur les sites plantés ! Et sinon, mon vrai nom est FiP, sans l'underscore.. "FiP_" est le nom que je suis obligé de prendre sur les sites qui refusent les noms à moins de 4 caractères -_-. (Et pourquoi d'abord? hein? hein?! c'est injuste ce truc) Tu sais vraiment pas pourquoi ? C simple pourtant... PASKE !!! EDIT: C'est quand même curieux comme truc! que dit "gettype($gtrN);" ? Nan parceque bon, si fetch_row deconne, c'est que ton mysql_query à merdé... Ca doit rien afficher du coup nan? essaye aussi un "echo mysql_error();" après ton appel à mysql_query... Effectivement, j'aurrais pu y penser tout seul comme un grand...Mais qd tu t'es trop pris le chou sur 3 lignes, le cerveau déclare forfait... J'essaye ça dès lundi... Je suis en WE ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 9 juin 2006 Partager Posté(e) le 9 juin 2006 J'essaye ça dès lundi... Je suis en WE ! Mais c'est que tu as raison! Weeeeeeeeek eeeeeeeeeeeeeeeeeeeeeeeend! J'ai envie de sauter dans une piscine tout habillé là ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 14 juin 2006 Auteur Partager Posté(e) le 14 juin 2006 Bon j'ai réussi à faire mon script, tant bien que mal... La page est en test jusque 15h... J'ai du rusé pour passer à travers les warning qui sont tjs là... Dès que le test est finie, j'essaie ta manip FIP... Sinon, le WE a été bon ? T'a trouvé une piscine ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 14 juin 2006 Partager Posté(e) le 14 juin 2006 Bon j'ai réussi à faire mon script, tant bien que mal... La page est en test jusque 15h... J'ai du rusé pour passer à travers les warning qui sont tjs là... Dès que le test est finie, j'essaie ta manip FIP... Sinon, le WE a été bon ? T'a trouvé une piscine ? même pas J'ai du bosser comme un malade sur mon mémoire... Enfin bref, ils prevoient des orages pour la fin de la semaine Lien vers le commentaire Partager sur d’autres sites More sharing options...
Okin Posté(e) le 17 juin 2006 Partager Posté(e) le 17 juin 2006 salut, ton erreur est due a une mauvaise syntaxe (donc validité) de ta requete mysql en elle meme. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 19 juin 2006 Auteur Partager Posté(e) le 19 juin 2006 salut, ton erreur est due a une mauvaise syntaxe (donc validité) de ta requete mysql en elle meme. Euh.... Ouaih, je veux bien... Mais tu pourrais mettre le doigt sur mon erreur de syntaxe ? Ca m'arrangerai... Sinon, pour FIP, le "echo gettype($gtrN);" me retourne "resource" ?!? J'ai pas trop compris non plus... Autre petit souci avec ma page, j'utilise la fonction de refesh automatique suivante: <META http-equiv="Refresh" content="1800;URL=http://xxx/yyy.php"> Mais ça ne fonctionne pas... Cela est-il dû au fait que le navigateur fait déjà tourner une autre fenêtre avec un "refresh" ? (Il s'agit d'un ordinateur gérant un "mur d'affichage" quadri-écran... Deux écrans affichent des pages php...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 19 juin 2006 Partager Posté(e) le 19 juin 2006 SELECT count( DISTINCT `N__Ticket`,psr.`urs` ) Je sais pas ce que tu veux faire, mais dans COUNT, ce n'est qu'un champ normalement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 19 juin 2006 Partager Posté(e) le 19 juin 2006 Sinon, pour FIP, le "echo gettype($gtrN);" me retourne "resource" ?!? J'ai pas trop compris non plus... Ba c'est ce que c'est sencé retourner ^^ En php il ya 8 types de variables de base: 4 variables scalaires (boolean, integer, float et string), 2 types composés (array et object) et 2 types "speciaux" (NULL et ressource). "ressource" est le type de ce qui est retourné par mysql_connect(), et mysql_query()... donc ca va.. je voulais vérifier que la fonction qui te faisait un warning avait un parametre du bon type. Sinon, pour tester ta commande SQL, tu peux la taper dans phpmyadmin, si tu l'as, ou mettre dans ton code: $gtrN = mysql_query($query_gtrN); echo mysql_errno() . ': ' . mysql_error() . '<br />'; "mysql_errno()" affiche le numéro de la derniere erreur mysql rencontrée, et "mysql_error()" affiche le détail de cette erreur: Le code ci dessus pourait afficher par exemple 42: aucune table portant ce nom n'existe. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 19 juin 2006 Auteur Partager Posté(e) le 19 juin 2006 SELECT count( DISTINCT `N__Ticket`,psr.`urs` ) Je sais pas ce que tu veux faire, mais dans COUNT, ce n'est qu'un champ normalement. Effectivement, j'ai fais compliqué... j'ai donc simplifié ma requête sur ce point: SELECT count(DISTINCT (`N__Ticket`)) Mais il me retourne toujours le même résultat, et j'ai toujours les warning... Je peux me tromper mais je ne pense pas que le problème vienne de la requete... Mais plutôt de la lecture du résultat qu'elle retourne... En php il ya 8 types de variables de base: 4 variables scalaires (boolean, integer, float et string), 2 types composés (array et object) et 2 types "speciaux" (NULL et ressource). "ressource" est le type de ce qui est retourné par mysql_connect(), et mysql_query()... donc ca va.. Ah bah merci pour cette petite mise au point ! Je ne connaissais pas les types spéciaux...[...] ou mettre dans ton code: echo mysql_errno() . ': ' . mysql_error() . '<br />';RAS, ce qui confirme que ce n'est pas la requete qui merdouille...Sinon, aucune ID pour le http-equiv=refresh ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 19 juin 2006 Partager Posté(e) le 19 juin 2006 null n'est pas un type. Juste l'absence de quelque chose (c'est un mot clef, dont null pas NULL)... Teste ta requête dans phpmyadmin, ou affiche l'erreur mySQL? Tu ne vérifie même pas si ta requête est juste. Donc "pan" Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 19 juin 2006 Auteur Partager Posté(e) le 19 juin 2006 Ouin !!! Ma requête est juste, elle ne génére aucune erreur ou warning ! C'est le WHILE de lecture qui fait le warning: while($row = mysql_fetch_row($gtrN)) { $gtrN=$row[0]; } Et le warning disparait quand je mets: while($row = @mysql_fetch_row($gtrN))... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 19 juin 2006 Partager Posté(e) le 19 juin 2006 j'ai trouvé : while($row = mysql_fetch_row($gtrN)) { $gtrN=$row[0]; } Ca foire au deuxième passage, je parie... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Killator Posté(e) le 19 juin 2006 Auteur Partager Posté(e) le 19 juin 2006 Ca foire au deuxième passage, je parie... BINGO ! Ayant l'habitude d'avoir un fetch_row avec plusieurs lignes de résultat, mon WHILE ne servait à rien ici, vu que j'ai qu'une seul ligne (COUNT...) $row = mysql_fetch_row($gtrN); $gtrN=$row[0]; => Ca marche très bien ! Grand merci Baldurien (& FIP aussi) ! Sinon, pas d'idée pour le problème du http-equiv=refresh ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 19 juin 2006 Partager Posté(e) le 19 juin 2006 Cherche google. Je crois que tu t'en sers mal. Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 19 juin 2006 Partager Posté(e) le 19 juin 2006 null n'est pas un type. Juste l'absence de quelque chose (c'est un mot clef, dont null pas NULL)... Teste ta requête dans phpmyadmin, ou affiche l'erreur mySQL? Tu ne vérifie même pas si ta requête est juste. Donc "pan" Heu... 1. Si d'abord c'est moi qu'a raison! (NULL est un type depuis PHP 4, se référer à http://www.zend.com/manual/function.gettype.php par exemple) 2. Je crois qu'on a déja parlé de la validité de la requette..! j'ai trouvé : while($row = mysql_fetch_row($gtrN)) { $gtrN=$row[0]; } Ca foire au deuxième passage, je parie... Raaaa! j'ai même pas vu ça! suis con! suis con! suis con! suis con! Bon je te pardonne pour ton post précedent alors ---- Pour la balise refresh du meta, le nombre est en secondes, 1800 secondes ca fait p'tet un peu long nan? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 20 juin 2006 Partager Posté(e) le 20 juin 2006 Grumpf. Ca explique pourquoi ça foire : function f(X $t) {...} f(null); débile. Lien vers le commentaire Partager sur d’autres sites More sharing options...
FiP_ Posté(e) le 20 juin 2006 Partager Posté(e) le 20 juin 2006 hum? qu'est ce qui est débille? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 20 juin 2006 Partager Posté(e) le 20 juin 2006 le null étant un type. Pour moi ça devrait être n'importe quoi justement - ou le type "objet invalide". Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.