Commande SELECT pour plusieurs tables

Eléphanteau du PHP | 24 Messages

02 avr. 2005, 10:48

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="[b]SELECT [/b]table1_nom, table2_nom, table3_nom

[b]FROM [/b]table1, table2, table3

[b]WHERE [/b]

table1_nom [b]LIKE [/b]('$_POST[clef]')
[b]AND [/b]table2_nom [b]LIKE [/b]('$_POST[clef]')
[b]AND [/b]table3_nom [b]LIKE [/b]('$_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 ?

Mammouth du PHP | 859 Messages

02 avr. 2005, 11:31

En fait je ne suis pas sûr de ma réponse mais quand tu fais appel à plusieurs tables il faut préciser le nom de la table et le nom du champ :

Code : Tout sélectionner

$requete="SELECT table1.table1_nom, table2.table2_nom, table3.table3_nom
En fait je ne suis pas sûr du sens si c'est table.champ ou champ.table

[edit] après vérification c'est table.champ ;)

http://www.nexen.net/docs/mysql/annotee ... n=jointure

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

02 avr. 2005, 12:06

et faire appel à trois tables sans jointure, je doute fortement que tu optionnes ce que tu veux

Eléphanteau du PHP | 24 Messages

02 avr. 2005, 12:20

Merci pour vos réponses mais ce n'est pas tout à fait là mon problème.
Je met les jointures (qui marche très bien), que j'avais omis de préciser en début de post.

Ce qui me pose problème c'est la variable $clef que j'ai mis dans un formulaire pour que les internautes recherche dans toute ma base de donnée celon un mot clef donné.
<input type="text" name="clef" />
<?php

$_POST["clef"]="exemple";


$requete="[b]SELECT [/b]table1_nom, table2_nom, table3_nom

[b]FROM [/b]table1, table2, table3

[b]WHERE [/b]
table1_id=blabla1_id
[b]AND [/b]table1_nom [b]LIKE [/b]('$_POST[clef]')

[b]AND [/b]table2_id=blabla2_id
[b]AND [/b]table2_nom [b]LIKE [/b]('$_POST[clef]')

[b]AND [/b]table3_id=blabla3_id
[b]AND [/b]table3_nom [b]LIKE [/b]('$_POST[clef]')";


?>
Merci pour la suite de vos réponses

Mammouth du PHP | 859 Messages

02 avr. 2005, 12:23

Code : Tout sélectionner

LIKE $_POST['clef']

Eléphanteau du PHP | 24 Messages

02 avr. 2005, 16:42

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 essayer avec OR à la place de AND .
Je ne vous dit pas le BUG :D

ViPHP
ViPHP | 2144 Messages

02 avr. 2005, 18:16

tes 3 tables ont la même structure ??

Eléphanteau du PHP | 24 Messages

02 avr. 2005, 18:27

C'est à dire. En fait j'ai une table principale "annonce" avec des clefs secondaire pour la relier aux autres qui sont dédiés par exemple pour les departements, les regions, les pays etc...

Mammouth du PHP | 859 Messages

02 avr. 2005, 18:57

Je t'ai déjà expliqué que si tu utilises les champs de plusieurs tables, tu dois spécifier la table à laquelle il appartient.

table.champ

Sinon comment veux-tu qu'il sache à qui elle appartient?

ViPHP
ViPHP | 2144 Messages

02 avr. 2005, 19:04

ok, mais ces différentes tables ont des structures identiques ?
Si oui, tu as problême, au niveau de la conception même de ta Db...

Eléphanteau du PHP | 24 Messages

02 avr. 2005, 20:02

Ouaich, en fait au lieu de me compliquer et en même temps vous prendre la tête :oops: .

Je vais créer une table spécial mots clefs, comme ça plus de souci :D

En tous cas merci à tous pour votre aide et votre patiente.

iclo elles ont toutes en commun une clef secondaire (ID), mais laisse tomber. En fait je me suis compliqué la vie :lol:

Mammouth du PHP | 859 Messages

02 avr. 2005, 20:22

mais laisse tomber. En fait je me suis compliqué la vie :lol:
On avait pas remarqué :roll: :wink:

Eléphanteau du PHP | 24 Messages

03 avr. 2005, 02:59

:lol:
Et que pensez vous 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')
);

ViPHP
ViPHP | 2144 Messages

03 avr. 2005, 12:28

out dépend du volume de donnée, mais pour un forum phpbb ça devient très vite l'usine à gaz...

Sinon, tu n'as toujours pas répondu à ma question : tes tables ont-elles toutes une structure identique : même liste de champs ??

Invité
Invité n'ayant pas de compte PHPfrance

03 avr. 2005, 16:20

out dépend du volume de donnée, mais pour un forum phpbb ça devient très vite l'usine à gaz...

Sinon, tu n'as toujours pas répondu à ma question : tes tables ont-elles toutes une structure identique : même liste de champs ??
Elles ont tous en commun le champ ID