Erreur à l'extraction de multi-table

Eléphant du PHP | 227 Messages

07 mars 2008, 19:35

Code : Tout sélectionner

CREATE TABLE `carnet_contact` ( `id_contact` smallint(6) NOT NULL auto_increment, `titre` varchar(10) NOT NULL, `nom` varchar(40) NOT NULL, `prenom` varchar(40) NOT NULL, `denomination` varchar(30) NOT NULL, `num_rue` varchar(10) NOT NULL, `rue` varchar(30) NOT NULL, `quartier` varchar(150) NOT NULL, `cp` varchar(20) NOT NULL, `ville` varchar(70) NOT NULL, `pays` varchar(70) NOT NULL, `day` varchar(20) NOT NULL, `mois` varchar(20) NOT NULL, `annee` varchar(10) NOT NULL, `remarque` text NOT NULL, PRIMARY KEY (`id_contact`), UNIQUE KEY `id_contact` (`id_contact`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; CREATE TABLE `carnet_histo` ( `id_histo` smallint(6) NOT NULL, `util_histo` varchar(40) NOT NULL, `date` date NOT NULL, `ip_histo` varchar(30) NOT NULL, PRIMARY KEY (`id_histo`), CONSTRAINT `carnet_histo_ibfk_1` FOREIGN KEY (`id_histo`) REFERENCES `carnet_contact` (`id_contact`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 CREATE TABLE `carnet_tel` ( `id_tel` smallint(6) NOT NULL, `fixe_1` varchar(20) NOT NULL, `fixe_2` varchar(20) NOT NULL, `port_1` varchar(20) NOT NULL, `port_2` varchar(20) NOT NULL, `fax` varchar(20) NOT NULL, `ind_num` varchar(10) NOT NULL, `mail_1` varchar(100) NOT NULL, `mail_2` varchar(100) NOT NULL, `web_1` varchar(150) NOT NULL, `web_2` varchar(150) NOT NULL, PRIMARY KEY (`id_tel`), CONSTRAINT `carnet_tel_ibfk_1` FOREIGN KEY (`id_tel`) REFERENCES `carnet_contact` (`id_contact`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Bonjour à tous,

j'ai un petit soucis, qui je que je n'arrive pas à résoudre malgré un bon moment de recherche. J'ai deux tables liées par "id_contact" et "id_tel"dont je voudrais extraire juste certaines données lié.
$nom    = $_POST['nom'];					
mysql_select_db($database_connect_base, $connect_base);// sélection de la base	
    	
$sql_extraire_liste = "SELECT c.id_contact, c.nom, c.prenom, c.ville, t.fixe_1 FROM carnet_contact AS c, carnet_tel AS t WHERE c.id_contact=t.id_tel, nom LIKE'$nom' ORDER BY c.nom,c.prenom";

$req_extraire_liste = mysql_query($sql_extraire_liste) or die('Erreur SQL !'.$sql_extraire_liste.'<br />'.mysql_error()); 		
		
$resultat_extrait = mysql_num_rows($req_extraire_liste);			
$nombre_de_reponse = $resultat_extrait;
Et voila l'erreur que cela provoque:

Code : Tout sélectionner

Erreur SQL !SELECT c.id_contact, c.nom, c.prenom, c.ville, t.fixe_1 FROM carnet_contact AS c, carnet_tel AS t WHERE c.id_contact=t.id_tel, nom LIKE'toto' ORDER BY c.nom,c.prenom You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' nom LIKE'toto' ORDER BY c.nom,c.prenom' at line 1
Ben en fait j'ai bien compris qu'il s'agit d'une erreur de syntaxe, mais j'ai beau chercher, y a surement un truc que j'ai pas compris.
Merci pour vos explications et de votre aide. :cry:

ViPHP
ViPHP | 2144 Messages

07 mars 2008, 19:39

Les clauses dans un where doivent être séparées par une expression logique OR ou AND et non pas des virgules.

Dans ton cas, c'est un and

Eléphant du PHP | 227 Messages

07 mars 2008, 19:46

Merci iclo, c'était bien ca.

Bonne soirée