8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai réalisé un tableau "dynamique" qui affiche pour chaque case un bonhomme composé de 3 éléments distincts lié entre eux dans la BDD. http://takeaphoto.eu/wof/index.php

Mon soucis se situe lors de la création d'un moteur de recherche.

En effet, ma requête MySQL "originaire" possède déjà un WHERE afin de faire correspondre les clés étrangères de chacun des éléments
SELECT a.id,a.first_name,a.last_name,a.id_body,a.id_flag,b.id,b.image_body,c.id,c.country,c.image_flag FROM wof_name AS a, wof_body AS b, wof_flag AS c WHERE a.id_body=b.id AND a.id_flag=c.id ORDER BY a.last_name ASC


Et quand je veut faire une requête MySQL avec WHERE LIKE '% %', cela pose problème pour l'affichage du résultat (car je ne sais pas comment écrire mon WHERE)
SELECT a.id,a.first_name,a.last_name,a.id_body,a.id_flag,b.id,b.image_body,c.id,c.country,c.image_flag FROM wof_name AS a, wof_body AS b, wof_flag AS c WHERE a.id_body=b.id AND a.id_flag=c.id AND a.first_name,a.last_name,c.country LIKE '%$requete%' ORDER BY a.last_name ASC"


Donc ma question est : Comment écrire une requête (et surtout le WHERE) pour effectuer une recherche quant on a des clés étrangers de plusieurs tables ?

Voici mon code en entier (qui marche si l'on fait une recherche avec un seul champ) :
<?php
mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
$requete = htmlspecialchars($_GET['cle']);
if(isset($_GET['cle']))
$requet="SELECT a.id,a.first_name,a.last_name,a.id_body,a.id_flag,b.id,b.image_body,c.id,c.country,c.image_flag FROM wof_name AS a, wof_body AS b, wof_flag AS c WHERE a.id_body=b.id AND a.id_flag=c.id AND a.first_name,a.last_name,c.country LIKE '%$requete%' ORDER BY a.last_name ASC";
else
$requet="SELECT a.id,a.first_name,a.last_name,a.id_body,a.id_flag,b.id,b.image_body,c.id,c.country,c.image_flag FROM wof_name AS a, wof_body AS b, wof_flag AS c WHERE a.id_body=b.id AND a.id_flag=c.id ORDER BY a.last_name ASC";

?>
<form id="monform" name="form1" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>" style="padding-left: 20px; padding-bottom: 30px;">
    	<label>
        	<input type="text" name="cle"/>
        </label>
    	<label>
        	<input type ="submit" name="bouton" value="Search" />
        </label>
</form>                    
<center><table cellspacing="0px" cellpadding="0px"><tr>
<?php
$retour = mysql_query($requet);
$i=1;

while ($donnees = mysql_fetch_array($retour)) 
{
	$flag=$donnees['image_flag'];
	$body=$donnees['image_body']; 
	$first_name=$donnees['first_name'];
	$last_name=$donnees['last_name'];
?>
<td><center><?php echo $flag; ?><?php echo $body; ?><br/><p><?php echo $first_name; ?><br/><?php echo $last_name; ?></p></center></td>

<?php 
if ($i%10 == 0) 
{ 
?> 
</tr> 
<tr> 
<?php 
} ?>
<?php
$i++; 
} 
mysql_close();
?> 
</tr>
</table></center>


Merci Smiley cligne
Modifié par dark.tonin (16 Jul 2011 - 23:59)