david96 Posté 2 Avril 2005 Posté 2 Avril 2005 J'ai créée plusieurs tables (13). Je n'ai pas eu de mal à faire les jointures, par contre j'ai un petit problème avec la commande SELECT effectivement : <?php $_POST["clef"]="exemple"; $requete="SELECT table1_nom, table2_nom, table3_nom FROM table1, table2, table3 WHERE table1_nom LIKE ('$_POST[clef]') AND table2_nom LIKE ('$_POST[clef]') AND table3_nom LIKE ('$_POST[clef]')"; ?> Voilà donc le problème et qu'apparement la variable $_POST["clef"] ne peut être attribuée qu'à une table. Comment faire en sorte qu'elle soit active pour toutes les tables ?
Compte supprimé Posté 2 Avril 2005 Posté 2 Avril 2005 1/ Pourquoi diable veut tu définier la variable $_POST["cle"] ? Elle est normalement définie automatiquement sur un formulaire de type POST. 2/ Je ne vois pas de jointure sur ta requête ?
Developer Posté 2 Avril 2005 Posté 2 Avril 2005 Je pense qu'il l'a définie juste pour montrer l'exemple.
david96 Posté 2 Avril 2005 Auteur Posté 2 Avril 2005 (modifié) Voilà c'est ça Developer En fait la variable $clef est dans un formulaire. <input type="text" name="clef"> 2/ Je ne vois pas de jointure sur ta requête ? <{POST_SNAPBACK}> J'ai omis cette partie mais je peux la mettre si cela peut t'aider à m'aider Modifié 2 Avril 2005 par david96
xpatval Posté 2 Avril 2005 Posté 2 Avril 2005 Salut, D'une part, je te conseille de coder ta variable de la sorte: $_POST['cle'] = "exemple"; au lieu de:$_POST["cle"] = "exemple"; D'autre part, pourquoi utiliser le LIKE, alors que le = suffirait, dans ton exemple ? De plus, il vaudrait mieux écrire ta requête de cette façon: $requete="SELECT table1_nom, table2_nom, table3_nomFROM table1, table2, table3WHERE table1_nom = '". $_POST['clef'] ."'AND table2_nom = '". $_POST['clef'] ."'AND table3_nom = '". $_POST['clef'] ."'"; xpatval
david96 Posté 2 Avril 2005 Auteur Posté 2 Avril 2005 Merci mais toujours le même blème. On va décortiquer vite fait sans rentrer dans les détails page1.htm <form action="page2.php" method="POST" > <input type="text" name="clef" > <input type="submit"> </form> page2.php $requete="SELECT table1_nom, table2_nom, table3_nom FROM table1, table2, table3 WHERE table1_nom = '". $_POST['clef'] ."' ; ça marche, par contre pour le reste : NON ! Comment procéder ??? j'ai essaier avec OR à la place de AND . Je ne vous dit pas le BUG
-ZN- Posté 2 Avril 2005 Posté 2 Avril 2005 ça marche, par contre pour le reste : NON !Comment procéder ??? j'ai essaier avec OR à la place de AND . Je ne vous dit pas le BUG <{POST_SNAPBACK}> Pas tres claires tes explications ... peux-tu donner plus d'infos?
xpatval Posté 2 Avril 2005 Posté 2 Avril 2005 Le bug vient en premier lieu de nos neurones, ne crois-tu pas...? Le champ dans tes différentes tables comportent-ils bien la valeur demandée ? As-tu tenté d'effectuer la requête directement dans phpmyadmin ? xpatval
david96 Posté 2 Avril 2005 Auteur Posté 2 Avril 2005 (modifié) Bon Ok je vais tenter d'être plus clair. Je vous met carrèment ce qu'on peut trouver pour cette requete de recherche par mot Clef page2.php $requete="SELECT table_code, table2_nom, table2_logo, table3_nom, table4_nom, table5_nom, table6_nom, table_intitule, table7_nom, table_experience, table_salaire, table_profil, table2_adresse, table2_telephone, table2_fax, table2_email, table2_site, table_condition FROM table, table2, table3, table4, table5, table6, table7 WHERE table5_nom LIKE '".$_POST['clef']."' AND tabe.offre_collectivite_id=table2.collectivite_id AND table.offre_contrat_id=table7.contrat_id AND table.offre_region_id=table3.region_id AND table_departement_id=table4.departement_id AND table.offre_rubrique_id=table5.rubrique_id AND table.offre_cadre_id=table7.cadre_id "; Comme ça cela marche. Par contre si je veux que la variable ($clef) fasse aussi des recherches dans les autres tables, ça ne marche plus Modifié 2 Avril 2005 par david96
-ZN- Posté 2 Avril 2005 Posté 2 Avril 2005 (modifié) Je reve ou c'est exactement le meme post que le precedent? ... effectivement y'a eut bug ... Modifié 2 Avril 2005 par -ZN-
-ZN- Posté 2 Avril 2005 Posté 2 Avril 2005 C'est un copier/coller de ton script? (au cas ou , y'a une faute de frappe: tabe.offre_collectivite_id=table2.collectivite_id) Qu'entends-tu par "une variable qui fait des recherches dans une autre table"? que tu veux verifier que table1.clef= $clef table1.clef = table2.clef table2.clef = table3.clef etc?
david96 Posté 2 Avril 2005 Auteur Posté 2 Avril 2005 Qu'entends-tu par "une variable qui fait des recherches dans une autre table"? <{POST_SNAPBACK}> Ce que je veux dire c'est que dans la cellule ou il y a $clef (dans la page1.htm du formulaire). que le mot taper par exemple "Culturel" aille vérifier aussi bien dans la table tabe.rubrique que dans la table table.cadre. etc... J'espère être clair.
-ZN- Posté 2 Avril 2005 Posté 2 Avril 2005 Ben table1.clef= $clef AND table2.clef = $clef AND table3.clef = $clef ca marche pas a partir du moment ou ton l'attribut clef est declare dans toutes les tables? pas de probleme de majuscules ou de frappe?
david96 Posté 2 Avril 2005 Auteur Posté 2 Avril 2005 Aucune faute de frappe j'ai mainte fois vérifié. Ton truc ne marche pas cela revient au même que précédemment. Si je met par exemple le mot clef "culturel" il ne le trouve pas alors qu'il se trouve dans la table2 mais pas dans la table3. Hmmm...
-ZN- Posté 2 Avril 2005 Posté 2 Avril 2005 mais pas dans la table3. ben s'il existe pas dans table3 c'est normal qu'il ne retourne rien puisque tu fais une jointure... Es-tu sur d'avoir bien concu ta base?
xpatval Posté 2 Avril 2005 Posté 2 Avril 2005 Si je met par exemple le mot clef "culturel" il ne le trouve pas alors qu'il se trouve dans la table2 mais pas dans la table3. ALors c'est tout à fait normal que ta requête ne ramène aucune donnée. l'as-tu effectué directement dans phpmyadmin ? De plus, à moins que ce ne soit qu'une faute de frappe, cette ligne me paraît erronée: AND table_departement_id=table4.departement_id xpatval
david96 Posté 2 Avril 2005 Auteur Posté 2 Avril 2005 (modifié) Je ne pensais pas que les jointures empêcheraient cela. Bon je vais créer une table spécial mots clefs, comme ça plus de souci En tous cas merci à tous pour votre aide et votre patiente. Au fait xpatval pourquoi tu tiques sur mon code Modifié 2 Avril 2005 par david96
xpatval Posté 2 Avril 2005 Posté 2 Avril 2005 Au fait xpatval pourquoi tu tiques sur mon code Parce qu'à la vue de ton code, j'imaginais qu'il s'agissait aussi d'une jointure: AND table.departement_id=table4.departement_id au lieu de AND table_departement_id=table4.departement_id xpatval
david96 Posté 3 Avril 2005 Auteur Posté 3 Avril 2005 (modifié) J'avoue qu'à force d'éditer, mes neuronnes crament aussi vite qu'une pauvre cigarette. Que penses tu de ma solution (Créer une table dédié aux mots clefs) ? requête SQL: CREATE TABLE 'mot_clef' ( 'mot_clef_id' INT( 8 ) NOT NULL AUTO_INCREMENT , 'mot_clef_nom' VARCHAR( 40 ) NOT NULL , PRIMARY KEY ( 'mot_clef_id' ) , UNIQUE ('mot_clef_nom') ); Modifié 3 Avril 2005 par david96
xpatval Posté 3 Avril 2005 Posté 3 Avril 2005 Je serais bien incapable de te dire si ta solution est bonne, sans connaître ton modèle de conception. La seule idée que je puisse émettre, c'est que si le champ "cle" est déjà un idex dans une table spécifique, et que ce champ est reconduit dans plusieurs autres tables, l'une des facilité est de créer une table de jointure, mais comme dit au départ, difficile de se faire une idée comme cela. xpatval
-ZN- Posté 3 Avril 2005 Posté 3 Avril 2005 Je serais bien incapable de te dire si ta solution est bonne, sans connaître ton modèle de conception. Tout pareil impossible de juger sans l'analyse qui va avec ...
david96 Posté 3 Avril 2005 Auteur Posté 3 Avril 2005 (modifié) Bâ écoutez j'ai mis en pratique cette solution et ça marche nickel. Modifié 3 Avril 2005 par david96
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant