1 pièce(s) jointe(s)
Problème sur mon moteur de recherche
Bonjour à toutes et tous, j'ai un petit problème et peut être que vous, amis développeurs, vous trouvez une solution pour m'aider.
Je suis en train de développer un site internet qui utilise un moteur de recherche de ma création que vous trouverez en pièce jointe.
Mon moteur de recherche est rédigé en PHP et il a pour but de rechercher dans une base de données appelé: liste_carte. Pour l'instant, cette base ne comportait qu'une seul table appelé "liste_carte" (je sais que cela ne doit pas être pratique d'avoir appelé la table du même nom que la base mais bon ^^).
Tout marche parfaitement mais je viens de rajouter une nouvelle table dans ma base appelé "reedition" et je voulais savoir comment faire pour que mon moteur de recherche puisse cherché dans les deux tables et en extraire les réponses correspondantes.
Merci d'avance pour votre aide et j'attends vos réponses.
Cordialement,
Clairetj
Factorisation du traitement du formulaire
Bonjour,
Ayant un peu de tps :), J'ai essayé de factoriser un peu le traitement du formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("liste_carte"); // Sélection de la base liste_carte
mysql_query("SET NAMES UTF8"); // Corrige bug d'affichage des accents
if (isset($_POST['textnom']))
{
var_dump($_POST);
$e= array(
0=>'Veuillez entrer au moins un critère de recherche'
);
$error = 0;
$q = $p = '';
$op = "OR"; //OPERATEUR SQL
foreach ($_POST as $k=>$v)
{
$POST[$k] = addslashes($v); //rajoute un / devant les apostrophes, si la recherche en contient
if($POST[$k] != ""){
$error ++;
}
}
echo $error;
if($error == 0){
echo $e[0];
}else{
echo 'Recherche : ';
foreach($POST as $k=> $Vs){
if($k != "selectcolor"){
$v = explode(" ", $Vs); //séparation des mots
$v_nb = count($v);
for($i = 0; $i < $v_nb; $i++)
{
$field = str_replace('text','',$k);
$q.= $op.' `'.$field.'` LIKE \'%' . $v[$i] . '%\' ';
}
$q = ltrim($q,$op); //suppression de l'opérateur au début de la boucle
}
}
$q_more = $q;
echo "<pre>".$q."</pre>";
$q = "SELECT * FROM liste_carte WHERE ".$q_more;
echo $q;
$r = mysql_query($q);
$nb = mysql_num_rows($r);
if ($nb == 0){
$p_debut = 'Aucun résultat ne correspond à votre recherche.';//Affichage si il n'y a aucun résultat
}elseif ($nb == 1){
$p_debut = $nb.' résultat :';//si il y a 1 résultat
}else{
$p_debut = $nb.' résultats :'; //si il y a plusieurs résultats
}
while ($d = mysql_fetch_array($r)){
$p .= '<p>';
$p .= '<a href="SiteRecherche.php?page=SiteCarte&id='.$d['id'].'"> '.$d['nom'];
$p .= '<span class="marge"><span class="marge"> <img src="../image_mana/'.$d['mana'].'.png" /> </br>';
$p .= '</p>';
}
echo $p_debut.'<br/>'.$p;
mysql_close();
}
}
?> |