Mauvaise réponse MySQL

Résolu
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 26 mai 2005 à 15:16
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 27 mai 2005 à 00:59
Bonjour à tous !

Mon pb en gros c'est que MySQL me renvoie une valeur quand je
l'interroge par ma page php, alors qu'il ne devrait pas et que
d'ailleurs il ne me renvoie rien si je l'interroge directement par
phpMyAdmin.



L'idée du script est la suivante: j'ai une table ("references") avec
des noms de livres, et une autre ("livres") avec tous les livres en
stock. Je voudrais que pour chaque référence de livre trouvée, ma page
aille regarder dans l'autre table pour voir s'il existe des livres qui
ont le même nom en stock. Si oui, il affiche "à partir de x euros"
(cette info est donnée dans la table "livres") et sinon "article
indisponible".



Alors quand pour une référence donnée le livre existe en stock, il
écrit le bon prix. Mais quand le livre n'est pas en stock, au lieu
d'écrire "article indisponible" il met le prix du dernier livre ayant
été trouvé en stock.



Bon je sais pas si j'ai été clair, je donnerai un exemple si ce n'est pas le cas!

Merci d'avance d'éclairer ma lanterne...







$classiques = mysql_query("SELECT `nom`

FROM `references`

LIMIT 0 , 500");



while ($row = @mysql_fetch_array($references))

{

$nom=$row[0];



$pricestab = mysql_query("SELECT `prix`

FROM `livres`

WHERE `nom` LIKE ''$nom"

ORDER BY `prix` ASC LIMIT 1");

while ($prices = @mysql_fetch_array($pricestab)) {$price=$prices[0];}



if ($price==""){$affprix=' article indisponible';}
else
{$affprix=' à partir de '.$price.' ? ';}



echo $nom.' -->>'.$affprix;

}

9 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
27 mai 2005 à 00:59
Bon ben j'ai fini par trouver tt seul ma solution après avoir galéré... pour la peine je vais accepter ma propre réponse histoire de rire un peu. N'empêche que le système des sujets de forums qui disparaissent dans les entrailles du site même s'il y a des réponses dessus, c'est peut-être à revoir... m^me s'il y a des arguments contre...

bref la réponse qu'on ne m'a pas faite c'est que la fonction suivante ne touche pas du tout à $price si $prices[0] est vide, elle ne lui attribue donc pas "" :

while ($prices = @mysql_fetch_array($pricestab)) {$price=$prices[0];}

Bon bah merci qd même les gars...
3
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
26 mai 2005 à 15:36
éssaie :
if ($price==" "){$affprix=' article indisponible';}

L0rD...
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 mai 2005 à 15:40
euh non ça marche pas...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mai 2005 à 19:57
Salut,



poste-nous ta requête $references stp

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 mai 2005 à 20:11
Oui désolé, ay début au lieu de "$classiques" il faut lire "$references"
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 mai 2005 à 20:19
Je vois que tu fais 500 requêtes au maximum, c'est énorme, tu vas te
faire couper direct. Revois ta requête, donne-nous les structures de
tes deux tables, et dis-nous précisément ce que tu veux faire.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 mai 2005 à 21:20
Alors ma table "references" possède 5 champs dont un seulement sert
dans la première requête: le nom du livre. Cette table me sert de
catalogue.



Ma table "livres" possède 11 champs dont 2 seulement servent dans la
deuxième requête: le nom du livre et le prix qui lui est associé. Cette
table est plus l'état de mes stocks. Il peut y avoir plusieurs livres
portant le même nom mais à des prix différents.



Ma première requête passe en revue un par un tous les noms de livres
présents dans la tables "references" et à chaque nom différent, je veux
aller voir s'il existe dans la table "livres" des livres portant le
même nom. Dans la table "livres", s'il y a un ou plusieurs livres
portant le même nom que l'un des livres de mon catalogue, je les trie
selon le champs "prix" et je ne garde que la première ligne: autrement
dit j'ai le nom du livre en question mais aussi le prix le plus bas.
S'il n'y a aucun livre correspondant au nom de mon catalogue
("references"), normalement ma requête ne devrait rien me renvoyer.



Finalement j'affiche chaque nom de livre présent dans ma table "références":

Nom -->> à partir de x euros ou:

Nom -->> article indisponible si la deuxième requête ne m'a rien renvoyé.



Voilà, bon il y a qd même un truc bizarre que je signale:

Disons que je n'ai que deux livres intitulés "Hugo" et "Maupassant"
dans mon catalogue. Ensuite on suppose que j'ai Hugo en stock à 10
euros, mais je n'ai pas de Maupassant.

Il me répond:

Hugo -->> à partir de 10 euros

Maupassant -->> à partir de 10 euros



Par contre si je n'ai pas de Hugo mais des Maupassant à 12 euros, il me dit:

Hugo -->> article indisponible


Maupassant -->> à partir de 12 euros



Voilà à peu près tte l'histoire merci de m'avoir lu jusque là!!!
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 mai 2005 à 21:22
Alors ma table "references" possède 5 champs dont un seulement sert
dans la première requête: le nom du livre. Cette table me sert de
catalogue.



Ma table "livres" possède 11 champs dont 2 seulement servent dans la
deuxième requête: le nom du livre et le prix qui lui est associé. Cette
table est plus l'état de mes stocks. Il peut y avoir plusieurs livres
portant le même nom mais à des prix différents.



Ma première requête passe en revue un par un tous les noms de livres
présents dans la tables "references" et à chaque nom différent, je veux
aller voir s'il existe dans la table "livres" des livres portant le
même nom. Dans la table "livres", s'il y a un ou plusieurs livres
portant le même nom que l'un des livres de mon catalogue, je les trie
selon le champs "prix" et je ne garde que la première ligne: autrement
dit j'ai le nom du livre en question mais aussi le prix le plus bas.
S'il n'y a aucun livre correspondant au nom de mon catalogue
("references"), normalement ma requête ne devrait rien me renvoyer.



Finalement j'affiche chaque nom de livre présent dans ma table "références":

Nom -->> à partir de x euros ou:

Nom -->> article indisponible si la deuxième requête ne m'a rien renvoyé.



Voilà, bon il y a qd même un truc bizarre que je signale:

Disons que je n'ai que deux livres intitulés "Hugo" et "Maupassant"
dans mon catalogue. Ensuite on suppose que j'ai Hugo en stock à 10
euros, mais je n'ai pas de Maupassant.

Il me répond:

Hugo -->> à partir de 10 euros

Maupassant -->> à partir de 10 euros



Par contre si je n'ai pas de Hugo mais des Maupassant à 12 euros, il me dit:

Hugo -->> article indisponible


Maupassant -->> à partir de 12 euros



Voilà à peu près tte l'histoire merci de m'avoir lu jusque là!!!
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 mai 2005 à 23:35
Dites euh... ya qqn qui a une idée pour mon pb?
Please!!

Si vous n'en avez pas, vous pouvez ptêt qd même me dire:
ya pas une autre fonction que
while ($row = @mysql_fetch_array($references)) { }
pour récupérer le contenu du tableau references, en particulier si on ne veut que la première ligne?
0
Rejoignez-nous