Boumbadaboum Posté 8 Août 2005 Posté 8 Août 2005 (modifié) Bonjour à tous, Je viens d'essayer une requête SQL d'un nouveau genre, je résiste pas à vous la faire admirer : $plat="SELECT plat.* ,recette.libelle FROM plat,recette WHERE plat.libelle like '$nouveauPlat%' AND recette.vue=0 AND recette.libelle like '$nouveauPlat%' LIMIT 1" qui à dit " " ? En plus ça fonctionne ! nan c'est pas vrai Bon cela étant l'objectif est le suivant : J'ai une table plat et une table cuisine. J'essaie de récupérer tous les champs du tuple de la table 'plat' où le champ 'libelle' correspond à la variable $nouveauPlat et aussi le tuple de la table recette où le champ libelle correspond aussi à la variable $nouveauPlat. En plus il ne faut récupérer les tuples de la table 'plat' et 'recette' que si le champ 'vue' de la table 'plat'= 1 (le tout LIMIT 1 dès fois que y'ai des tuples malins qui se dédoublent). Bon sans rire, je veux bien un coup de main là Modifié 8 Août 2005 par Boumbadaboum
Portekoi Posté 8 Août 2005 Posté 8 Août 2005 Bonjour, Quelle est la structure de tes tables? Plat : ID /Nom Recette : ID / Nom / Plat_id ? As tu une clé étrangère dans ta table 'recette' qui correspondrait à un enregistrement de la table 'plat' ? Portekoi
Sarc Posté 8 Août 2005 Posté 8 Août 2005 le champ 'vue' de la table 'plat'= 1 Alors pourquoi dans ta requète tu as =0 ? Tu vas pas aller loin avec ça ! $plat="SELECT DISTINCT plat.* ,recette.libelle FROM plat,recette WHERE plat.libelle like '%$nouveauPlat%' AND recette.vue=1 AND recette.libelle = plat.libelle" Ca te va pas ça ? Il te pose problème ?
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 et bien les deux champs commun sont les champs 'libellé'.
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 Ca te va pas ça ? Il te pose problème ? J'essaie ta requête Sarc, je te dis le résultat dans 5-10 minutes
Sarc Posté 8 Août 2005 Posté 8 Août 2005 que si le champ 'vue' de la table 'plat'= 1 Ca c'est ce que tu aimerais avoir, et dans ta requète initiale tu marques : recette.vue=0 Je comprend plus ce que tu veux, tu as mis une chose et son contraire !! Donc ma dernière requète serait plutôt $plat="SELECT DISTINCT plat.* ,recette.libelle FROM plat,recette WHERE plat.libelle like '%$nouveauPlat%' AND plat.vue=1 AND recette.libelle = plat.libelle" Si je suis ce que tu mets dans ton texte
Portekoi Posté 8 Août 2005 Posté 8 Août 2005 Faire une jointure, c'est important pour mysql Essaie d'optimiser la structure de ta table en ayant une clé 'numérique' dans chaque table dont 2 dans celle de recette. (ID et Plat_ID) Ainsi tu pourras faie quelque chose comme : "select recette.* from recette inner join plat on recette.plat_id = plat.id where recette.libelle = '".$mavar."' etc..." Portekoi
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 (modifié) J'ai un problème bête la : Comment je récupère dans le tableau des valeurs provenant de deux tables ? je veux dire : Je fais ma boucle while, comme d'habitude, puis je dis echo" $req[libelle]". Mais là j'ai deux champs libellé provenant de deux tables. Alors je viens d'essayer $req[plat.libelle] mais j'obtiens : Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting'[' donc? Modifié 8 Août 2005 par Boumbadaboum
Portekoi Posté 8 Août 2005 Posté 8 Août 2005 (modifié) select recette.libelle as libelle1, plat.libelle as libelle2 etc.. $req["libelle1"] ou $req["libelle2"] Mais comme ils sont égaux, tu peux en afficher qu'un Portekoi EDIT : Preum's Modifié 8 Août 2005 par portekoi
Sarc Posté 8 Août 2005 Posté 8 Août 2005 $plat="SELECT DISTINCT plat.* ,recette.libelle AS rec_libelle FROM plat,recette WHERE plat.libelle like '%$nouveauPlat%' AND plat.vue=1 AND recette.libelle = plat.libelle" Avec le AS, tu auras par la suite deux variables : $req[libelle] qui est celui de plat, et $req[rec_libelle] qui sera celui de recette
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 (modifié) Mais comme ils sont égaux, tu peux en afficher qu'un fais pas le malin lol Modifié 8 Août 2005 par Boumbadaboum
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 (modifié) Non ça fonctionne pas j'ai une erreur sql warning : mysql_fetch_array. ma requête : $validerNvComp="SELECT DISTINCT plat.* ,recette.libelleDef AS recette_libelleDef FROM plat,recette WHERE plat.libelle like '$variable%' AND plat.vue=0 AND plat.libelle=recette.libelle" Donc je récupère deux tuples de deux tables différentes ayant le même contenu pour le champ libellé mais par contre pour la table recette je veux récupérer un champ qui n'est pas dans la table plat. et j'utilise ça dans le tableau : $res[recette_libelleDef] Modifié 8 Août 2005 par Boumbadaboum
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 (modifié) Bon j'ai essayé autre chose qui devrait fonctionner vu que c'est très simple pourtant ça marche pas : je fais : $req="SELECT plat FROM recette WHERE libelle like '$nouvelleRecette%' LIMIT 1" Bon et bien ça ne m'affiche que les plat dont le libelle ne comporte ni accent (é par ex), ni mots composés ni rien, que des mots simple. C'est n'importe quoi j'ai jamais vu ça. En plus je programme depuis 7 heure du matin mon QI vient de tomber à 75. La preuve je met un LIMIT 1 avec un mysql_fetch_array pour récuper les résultats alors qu'il y a qu'un résultat à récupérer et je ne sais plus comment l'afficher sans une boucle while. Modifié 8 Août 2005 par Boumbadaboum
snwoman49 Posté 8 Août 2005 Posté 8 Août 2005 (modifié) L'argument limit est pas valide,il faut mettre LIMIT 0,1 EDIT:"Pas lu la fin de ton poste" Et je ne pense pas que le QI est grand chose avec le temps de programmation. Modifié 8 Août 2005 par snwoman49
Dan Posté 8 Août 2005 Posté 8 Août 2005 En plus je programme depuis 7 heure du matin mon QI vient de tomber à 75. Si ton QI descend sous ton indice de protection solaire il faut aller dormir à l'ombre
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 ouais mais les champs avec accents ou composé s'affichent pas quand même.
Dan Posté 8 Août 2005 Posté 8 Août 2005 Une question: tu ne serais pas en mysql 4.1.x avec des tables encodées en UTF-8 ?? Ca gène pas mal pour les accents
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 bouh la vilaine question je suis chez ovh c'est tout ce que je sais lol
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 (modifié) oui j'ai pas bien trouvé dans phpinfo mais de toute façon c'est mysql 6 chez ovh je crois me souvenir. Mais vraiment cette erreur je la comprend pas surtout que le problème ne se pose pas ailleur : J'ai un select. Je fais un choix. j'affiche divers champs d'une table en fonction de ce choix. ça fonctionne. J'affiche un champ d'une autre table en fonction de ce même choix. ça fonctionne pas avec les accents et les mots composés. N'importe quoi. Modifié 8 Août 2005 par Boumbadaboum
snwoman49 Posté 8 Août 2005 Posté 8 Août 2005 Pour l'instant d'après ce que je me souviens on est à mysql 5
Boumbadaboum Posté 8 Août 2005 Auteur Posté 8 Août 2005 bon bah je sais pas la version . Mais c'est pas la question puisque ça fonctionne bien pour un autre script. Bon je m'énerve à force j'vais prendre un bain ça ira mieux après.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant