Bonjour,
je suis en train de faire un moteur de recherche sur une base de données en Mysql,pour cela je dispose d'un formulaire de recherche avec input text ,
et avec ces mots entres, je les decoupe et je gènere une requete automatiquement.
mon problème est que j'ai toujours Union à la fin de la requete;voici le formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 <p>
        Vous allez rechercher votre serveur dans la base, choisissez un ou plusieurs critères de recherche :
    </p>
        <form action="recherche_bd.php" method="Post"/>
            <div class="gauche"> 
                <label for="RefESI">Référence ESI :</label><input type="text" name="RefESI" id="RefESI" ><br >
                <label for="RefConstructeur">Référence constructeur :</label><input type="text" name="RefConstructeur" id="RefConstructeur" ><br >
                <label for="Prix">Prix :</label><input type="text" name="Prix" id="Prix" ><br >
                <label for="Description">Description :</label><input type="text" name="Description" id="Description" ><br >
                <input type="submit" value="Rechercher"/>
            </div>
        </form>
et le fichier qui traite le formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 extract($_POST);
 
    include("fonctions.conect.deconnect.php");
    //conexion à la base
    $connect_db = connect();
    function Requete ($champ,$table,$Colonne)
    {
		$TableauChamp=explode(" ",$champ);
		$NbMotsChamp=sizeof($TableauChamp);
		$ReqChamp="";
		foreach($TableauChamp as $key=>$mot)
		{
			$mot=trim($mot);
			$ReqChampinter="(SELECT * from $table WHERE $Colonne like '%$mot%' LIMIT 30)";
			$ReqChamp.=$ReqChampinter." UNION ";
 
		}
		return $ReqChamp; 
    }
 
    $RequeteRefESI=Requete($RefESI,"inventaireproduits","RefESI");
	echo $RequeteRefESI.'<br/>';
    $RequeteRefConstructeur=Requete($RefConstructeur,"inventaireproduits","RefConstructeur");
    $RequeteDescription=Requete($Description,"inventaireproduits","Description");
 
    $BigRequete=($RequeteRefESI)."  ".($RequeteRefConstructeur)."  ".($RequeteDescription);
    echo $BigRequete;
    $resultat=  mysql_query($BigRequete);
    echo $resultat;
    ?>
    <h3>Résultats de votre recherche.</h3>
    <p>
    Nous avons trouvé dans notre base de données. Voici les fonctions que nous avons trouvées :<br/>
    <br/>
    <table border="1em">
    <tr>
    <th>ID</th>
    <th>Référence ESI</th>
    <th>Référence constructeur</th>
    <th>Description</th>
    <th>Prix</th>
    <th>Quantité neuf</th>
    <th>Quantité occasion</th>
    </tr>
    <?php
    // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
 
    while($donnees = mysql_fetch_array($resultat)) 
    {
        echo '<tr>'."\n";
        echo '  <td>'.$donnees['IdProduit'].'</td>'."\n";
        echo '  <td class="Nserie"> '.$donnees['RefESI'].'</td>'."\n";
        echo '  <td>'.$donnees['RefConstructeur'].'</td>'."\n";
        echo '  <td>'.$donnees['Designation'].'</td>'."\n";
        echo '  <td>'.$donnees['Prix'].'</td>'."\n";
        echo '  <td>'.$donnees['QuantiteNeuf'].'</td>'."\n";
        echo '  <td>'.$donnees['QuantiteOccasion'].'</td>'."\n";
        echo '  <td><a href="modif2.php?iddonnees='.$donnees['IdProduit'].'">Modifier</a></td>'."\n";
        echo '  <td><a href="supprimer.php?iddonnees='.$donnees['IdProduit'].'" onClick="return(ConfirmSupprimer('.$donnees['IdProduit'].'));" >supprimer</a></td>'."\n";
        echo '</tr>'."\n";		
    } // fin de la boucle
    echo '</table>'."\n";
    ?><br/><br/>
    <a href="recherche.php">Faire une nouvelle recherche</a>
Si vous trouvez une erreur ou une solution pour enlever l'union a la fin de la requete pour un champ, je vous serai reconnaissant.
Merci beaucoup.