Warning : Mysql_fetch array() avec une requête SELECT

Eléphanteau du PHP | 37 Messages

01 juin 2007, 12:19

Bonjour à tous.

C'est une page PHP un peu particuliére qui me génére automatiquement des étiquettes en PDF à partir d'une table Mysql.

Voici le code de la page :
$result=mysql_query("SELECT nompatient, ordo_num, ordo_frigo FROM patient AS p, ordonnance AS o WHERE p.idpat = o.idpat AND o.ordo_frigo='non' GROUP BY ordo_num");
mysql_select_db('pharmacie') or die(mysql_error());
$resultfin = mysql_query($result);

//initialize counter ligne
$i = 0;
$j = 0;
//initialize counter cols
$cptcol = 0;

//Set maximum rows per page
$max = 24;
//Set maximim cols per page
$maxcol = 3;

//Set Row Height
$row_height = 35;

while($row = mysql_fetch_array($result))
{
//If the current row is the last one, create new page and print column title
if ($j == $max)
{
$pdf->AddPage();
Avec cette requête je n'ai pas de souci, mes étiquettes ce génére sans aucun souci.

Maintenant j'ai besoin d'intéger une gestion temporelle ou on générera que les étiquettes correspondant à telle ou telle période, j'ai donc fait cette requête :
$result=mysql_query("SELECT nompatient, ordo_num, ordo_frigo, ordo_date, date_debutperiode, date_finperiode
 FROM patient AS p, ordonnance AS o, anulation_ordo AS d
 WHERE p.idpat = o.idpat AND o.ordo_frigo='non' AND o.ordo_date >= d.date_debutperiode AND o.ordo_date <= d.date_finperiode GROUP BY ordo_num");
mysql_select_db('pharmacie') or die(mysql_error());
$resultfin = mysql_query($result);
Et j'ai donc ce message d'erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\pharmacie\etiqnonfrigo.php on line 51

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\pharmacie\etiqnonfrigo.php:51) in c:\program files\easyphp1-8\www\pharmacie\fpdf.php on line 1022


J'ai déjà utilisé la même requête pour des tableaux d'affichage et ca marche nikel ???

Voila j'ai du écrire une bétise si quelqu'un voi ou est mon erreur... Parceque depuis 1h00 jela voi pas.

Merci encore

ViPHP
ViPHP | 2144 Messages

01 juin 2007, 13:05

Testes ta requête dans phpMyAdmin ou ajoute un or die après la requêtte, pour voir ce qui peut planter dans la requête
$result=mysql_query(
"SELECT nompatient, ordo_num, ordo_frigo, ordo_date, date_debutperiode, date_finperiode
 FROM patient AS p, ordonnance AS o, anulation_ordo AS d
 WHERE p.idpat = o.idpat AND o.ordo_frigo='non' AND o.ordo_date >= d.date_debutperiode AND o.ordo_date <= d.date_finperiode GROUP BY ordo_num")
 or die(mysql_error());

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 juin 2007, 13:38

Le problème vient très probablement du GROUP BY qui à mon avis n'a rien à faire là...

La clause GROUP BY permet de spécifier que l'on souhaite regrouper les enregistrements identiques (comme un distinct) et n'a d'intérêt que si l'on applique une fonction de groupe à au moins une des colonnes (count, max, sum, ...). Il faut alors spécifier toutes les colonnes agrégées (dont le résultat n'est pas composé de plusieurs enregistrements) dans le group by :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 37 Messages

01 juin 2007, 13:59

Re merci pour vos réponses

Donc j'ai mis le or die(mysql_error()); et il me renvoi :" Aucune base n'a été sélectionnée".

Et c'est la que je comprend pas car si je remet ma requête initial tout fonctionne correctement ?

Pour le GROUP BY, j'ai essayé avec et sans et mettant un order by... mais rien n'y fait de plus le but est d'imprimer des étiquettes à coller sur une boîte et une ordonnance peux avoir plusieurs médicaments sous le même N° d'ordonnance il ne faut pas que j'ai 4 étiquettes si j'ai 4 ordonnances sous le même numéro (donc 4 médicaments) Donc je pense être obligé de garder mon GROUP BY.

L'étiquette ne contient que le N° d'ordonnance et le nom du patient concerné.

ViPHP
ViPHP | 2144 Messages

01 juin 2007, 14:02

La sélection de la base de donnée doit se faire avant le mysql_query().

Eléphanteau du PHP | 37 Messages

01 juin 2007, 14:13

Plop re alors vraiment je suis trop CON désolé pour le gros mot mais il y à des jours ou vraiment ca dépasse l'entendement. |*()

Ma requête aurait super bien marché si j'avais séléctionné la bonne TABLE dans ma requête SQL.

Depuis que c'est le cas tou fonctionne à merveille.

Vous qui devez passé beaucoup de temps devant ces lignes de codes, personnelement pour moi ce sont mes débuts, comment vous faites pour vous sortir la tête du guidon et pour eviter ce genre de connerie. J'ai certes augmenté considerablement ma consommation de cigarette mais je fais toujours des conneries.

Alors je suis vraiment désolé de vous avoir fait perdre du temps avec cela à vous faire corriger une erreur qui en faite existe pas encore désolé.

Et bravo pour la qualité de PHP France et de ces adhérents.

ViPHP
ViPHP | 2144 Messages

01 juin 2007, 14:18

Pas de soucis, on est là pour ça :D c'est vrai qu'on a parfois besoin de s'aérer les neurones :D

Bonnne continuation.

Eléphanteau du PHP | 37 Messages

01 juin 2007, 14:21

Merci et bon courage à vous !