Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
26 mai 2005 à 15:16
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 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.' ? ';}
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 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];}
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 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.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 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à!!!
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 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à!!!
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 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?