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
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)
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) :
Merci
Modifié par dark.tonin (16 Jul 2011 - 23:59)
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

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