Rectifictation du code ou script
speedy fernandez
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
speedy fernandez Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
speedy fernandez Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
bonjour
j'ai crée un moteur de recherche dans un site une j'ai fait pour une entreprise de construction et lorsque l'internaute tape sa recherche, selon le code php que jai fait, le resultat exacte de sa recherche apparait, et ensuit, des resultats correspondand a un des champ rempli lui sont proposés.
je vous montre mon code php.
<?php
$req_AND = mysql_query("select * from batiment where lieu='$lieu' and superficie='$superf' and prix='$prix'");
$nombre_de_resultat = mysql_num_rows($req_AND);
if($nombre_de_resultat == 0){
echo "<p align=center><font color=red size=+2>AUCUN RESULTAT NE CORRESPOND A VOTRE RECHERCHE!</font></p>";
}
else{
while($dnn_AND = mysql_fetch_array($req_AND)){
?>
<tr>
<td bgcolor="#CCCCCC"><?php echo($dnn_AND['id']); ?></td>
<td><?php echo htmlentities($dnn_AND['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="152"><?php echo htmlentities($dnn_AND['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="132"><?php echo htmlentities($dnn_AND['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
<td bgcolor="#CCCCCC" width="152"><?php echo($dnn_AND['description']); ?></td>
</tr>
<?php
}
}
?>
<tr>
</table>
<BR/><BR/>
<HR/>
<p><font color="#006600" size="+2">Résultats qui pourraient vous interrésser...</font></p>
</table>
<table width="596" border="1" align="center">
<tr>
<td width="70" align="center" bgcolor="#FFFFFF">ID</td>
<td width="169" align="center" bgcolor="#FFFFFF">LIEU</td>
<td align="center" bgcolor="#FFFFFF">SUPERFICIE</td>
<td align="center" bgcolor="#FFFFFF">PRIX</td>
<td align="center" bgcolor="#FFFFFF">DESCRIPTION</td>
</tr>
<?php
$req = mysql_query("select * from batiment where lieu='$lieu' or superficie='$superf' or prix='$prix'");
while($dnn = mysql_fetch_array($req)){
?>
<tr>
<td bgcolor="#FFFFFF"><?php echo($dnn['id']); ?></td>
<td><?php echo htmlentities($dnn['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="152"><?php echo htmlentities($dnn['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="132"><?php echo htmlentities($dnn['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
<td bgcolor="#CCCCCC" width="152"><?php echo($dnn['description']); ?></td>
</tr>
<?php
}
?>
mon souci est que meme lorsque un resultat est trouvé avec la première requete AND, le meme resultat aparait avec la deuxième requete OR; c'est ce que je veux eviter.
aidez moi s'il vous plait. merci d'avance
j'ai crée un moteur de recherche dans un site une j'ai fait pour une entreprise de construction et lorsque l'internaute tape sa recherche, selon le code php que jai fait, le resultat exacte de sa recherche apparait, et ensuit, des resultats correspondand a un des champ rempli lui sont proposés.
je vous montre mon code php.
<?php
$req_AND = mysql_query("select * from batiment where lieu='$lieu' and superficie='$superf' and prix='$prix'");
$nombre_de_resultat = mysql_num_rows($req_AND);
if($nombre_de_resultat == 0){
echo "<p align=center><font color=red size=+2>AUCUN RESULTAT NE CORRESPOND A VOTRE RECHERCHE!</font></p>";
}
else{
while($dnn_AND = mysql_fetch_array($req_AND)){
?>
<tr>
<td bgcolor="#CCCCCC"><?php echo($dnn_AND['id']); ?></td>
<td><?php echo htmlentities($dnn_AND['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="152"><?php echo htmlentities($dnn_AND['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="132"><?php echo htmlentities($dnn_AND['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
<td bgcolor="#CCCCCC" width="152"><?php echo($dnn_AND['description']); ?></td>
</tr>
<?php
}
}
?>
<tr>
</table>
<BR/><BR/>
<HR/>
<p><font color="#006600" size="+2">Résultats qui pourraient vous interrésser...</font></p>
</table>
<table width="596" border="1" align="center">
<tr>
<td width="70" align="center" bgcolor="#FFFFFF">ID</td>
<td width="169" align="center" bgcolor="#FFFFFF">LIEU</td>
<td align="center" bgcolor="#FFFFFF">SUPERFICIE</td>
<td align="center" bgcolor="#FFFFFF">PRIX</td>
<td align="center" bgcolor="#FFFFFF">DESCRIPTION</td>
</tr>
<?php
$req = mysql_query("select * from batiment where lieu='$lieu' or superficie='$superf' or prix='$prix'");
while($dnn = mysql_fetch_array($req)){
?>
<tr>
<td bgcolor="#FFFFFF"><?php echo($dnn['id']); ?></td>
<td><?php echo htmlentities($dnn['lieu'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="152"><?php echo htmlentities($dnn['superficie'], ENT_QUOTES, 'UTF-8'); ?></td>
<td width="132"><?php echo htmlentities($dnn['prix'], ENT_QUOTES, 'UTF-8'); ?></td>
<td bgcolor="#CCCCCC" width="152"><?php echo($dnn['description']); ?></td>
</tr>
<?php
}
?>
mon souci est que meme lorsque un resultat est trouvé avec la première requete AND, le meme resultat aparait avec la deuxième requete OR; c'est ce que je veux eviter.
aidez moi s'il vous plait. merci d'avance
A voir également:
- Rectifictation du code ou script
- Code ascii - Guide
- Script vidéo youtube - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
6 réponses
Salut,
Tu pourrais le faire comme ceci :
L'inconvénient des requêtes imbriquées est qu'elles ne sont plus lentes à exécuté que des jointures.
Au passage :
- l'api Mysql de php est obsolète, il faudrait passer à PDO ou Mysqli
- attention aux injections sql
Bonne journée
Tu pourrais le faire comme ceci :
$req = mysql_query("select * from batiment where (lieu='$lieu' or superficie='$superf' or prix='$prix') AND id NOT IN (select id from batiment where lieu='$lieu' and superficie='$superf' and prix='$prix')");
L'inconvénient des requêtes imbriquées est qu'elles ne sont plus lentes à exécuté que des jointures.
Au passage :
- l'api Mysql de php est obsolète, il faudrait passer à PDO ou Mysqli
- attention aux injections sql
Bonne journée
pitet
lorsque j'ai modifier avec la partie que voous avez proposez, se plante car l'exécution est aparament longue.
merci
lorsque j'ai modifier avec la partie que voous avez proposez, se plante car l'exécution est aparament longue.
merci
Puisqu'on exécute déjà la première requête au début du traitement, on peux récupérer le résultat dans un tableau plutôt que d'utiliser une requête imbriquée :
Ajout à ton premier code :
- ligne 2 : création d'un tableau $ids_req_AND
- ligne 11 : enregistrement des id dans ce tableau
- ligne 43 : modification de la requête OR
<?php $ids_req_AND = array(); // on crée un tableau où on va enregistrer les id de la req_AND $req_AND = mysql_query("select * from batiment where lieu='$lieu' and superficie='$superf' and prix='$prix'"); $nombre_de_resultat = mysql_num_rows($req_AND); if($nombre_de_resultat == 0){ echo "<p align=center><font color=red size=+2>AUCUN RESULTAT NE CORRESPOND A VOTRE RECHERCHE!</font></p>"; } else{ while($dnn_AND = mysql_fetch_array($req_AND)){ $ids_req_AND[] = $dnn_AND['id']; // on enregistre les id ?> <tr> <td bgcolor="#CCCCCC"><?php echo($dnn_AND['id']); ?></td> <td><?php echo htmlentities($dnn_AND['lieu'], ENT_QUOTES, 'UTF-8'); ?></td> <td width="152"><?php echo htmlentities($dnn_AND['superficie'], ENT_QUOTES, 'UTF-8'); ?></td> <td width="132"><?php echo htmlentities($dnn_AND['prix'], ENT_QUOTES, 'UTF-8'); ?></td> <td bgcolor="#CCCCCC" width="152"><?php echo($dnn_AND['description']); ?></td> </tr> <?php } } ?> <tr> </table> <BR/><BR/> <HR/> <p><font color="#006600" size="+2">Résultats qui pourraient vous interrésser...</font></p> </table> <table width="596" border="1" align="center"> <tr> <td width="70" align="center" bgcolor="#FFFFFF">ID</td> <td width="169" align="center" bgcolor="#FFFFFF">LIEU</td> <td align="center" bgcolor="#FFFFFF">SUPERFICIE</td> <td align="center" bgcolor="#FFFFFF">PRIX</td> <td align="center" bgcolor="#FFFFFF">DESCRIPTION</td> </tr> <?php // on récupère le résultat de la req_OR sans les résultats $req = mysql_query("select * from batiment where (lieu='$lieu' or superficie='$superf' or prix='$prix') AND id NOT IN (" . implode(',', $ids_req_AND) . ")"); while($dnn = mysql_fetch_array($req)){ ?> <tr> <td bgcolor="#FFFFFF"><?php echo($dnn['id']); ?></td> <td><?php echo htmlentities($dnn['lieu'], ENT_QUOTES, 'UTF-8'); ?></td> <td width="152"><?php echo htmlentities($dnn['superficie'], ENT_QUOTES, 'UTF-8'); ?></td> <td width="132"><?php echo htmlentities($dnn['prix'], ENT_QUOTES, 'UTF-8'); ?></td> <td bgcolor="#CCCCCC" width="152"><?php echo($dnn['description']); ?></td> </tr> <?php } ?>
Ajout à ton premier code :
- ligne 2 : création d'un tableau $ids_req_AND
- ligne 11 : enregistrement des id dans ce tableau
- ligne 43 : modification de la requête OR
merci pitet....
mais j'ai un petit souci.
quand je complete avec les modification apporté l'erreur qui affiche me parle de bouléan.
qu'est ce que je peut faire?
merci
mais j'ai un petit souci.
quand je complete avec les modification apporté l'erreur qui affiche me parle de bouléan.
qu'est ce que je peut faire?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question