Jump to content

Petit souci en PHP...


Recommended Posts

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 29

27

La ligne 29 étant la ligne du while... ...fetch.

Qu'est-ce que j'ai fait pour mériter ça ? :chinois:

Merci d'avance ! :mad2:

Pour info, j'ai aussi fait un fetch_assoc, idem et le serveur est tellement vieux qu'il ne connait pas le fetch_array... :byebye:

Link to comment
Share on other sites

Cette question devrait plutôt être postée dans la section Création Web...

Je la déplace.

Oups, vraiment désolé... :ouioui: Faut vraiment que je sois préoccupé pour avoir louper ça... ;)

Merci pour la manip Sentinel ! :D

:transpi:

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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... :D

Enfin j'irais quand même voir la docs officielle, même si j'ai passé l'aprem sur le web... :transpi:

le @ oblige les fonctions à se taire.

Nickel ! Merci FiP_ ! ;)

Mais je ne baisse pas les bras ! J'veux comprendre pourquoi...

:ouioui:

Link to comment
Share on other sites

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 :transpi:

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...

Link to comment
Share on other sites

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:

Mdr ! Google: 1er moteur de recherche sur les sites plantés ! :yes:

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 !!! :francais:

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... :transpi:

J'essaye ça dès lundi... Je suis en WE ! 8)

:chinois:

Link to comment
Share on other sites

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

Dès que le test est finie, j'essaie ta manip FIP...

Sinon, le WE a été bon ? T'a trouvé une piscine ? :D

:transpi:

Link to comment
Share on other sites

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à... :transpi:

Dès que le test est finie, j'essaie ta manip FIP...

Sinon, le WE a été bon ? T'a trouvé une piscine ? :transpi:

:francais:

même pas :yes:

J'ai du bosser comme un malade sur mon mémoire...

Enfin bref, ils prevoient des orages pour la fin de la semaine :transpi:

Link to comment
Share on other sites

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... :D

Sinon, pour FIP, le "echo gettype($gtrN);" me retourne "resource" ?!? J'ai pas trop compris non plus... :pleure:

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...)

Link to comment
Share on other sites

Sinon, pour FIP, le "echo gettype($gtrN);" me retourne "resource" ?!? J'ai pas trop compris non plus... :D

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.

Link to comment
Share on other sites

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... :zarb:

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 ?

Link to comment
Share on other sites

Ouin !!! Ma requête est juste, elle ne génére aucune erreur ou warning ! :pleure:

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))...

Link to comment
Share on other sites

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) ! :reflechis:

Sinon, pas d'idée pour le problème du http-equiv=refresh ? :roule:

:arrow:

Link to comment
Share on other sites

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..! :fou:

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! :-D

suis con! suis con! suis con! suis con! :D

Bon je te pardonne pour ton post précedent alors :D

----

Pour la balise refresh du meta, le nombre est en secondes, 1800 secondes ca fait p'tet un peu long nan?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...