Rectifictation du code ou script
Fermé
speedy fernandez
Messages postés
11
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
17 octobre 2014
-
Modifié par speedy fernandez le 26/05/2014 à 14:08
speedy fernandez Messages postés 11 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 17 octobre 2014 - 3 juin 2014 à 18:51
speedy fernandez Messages postés 11 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 17 octobre 2014 - 3 juin 2014 à 18:51
A voir également:
- Rectifictation du code ou script
- Script vidéo youtube - Guide
- Voici du code ascii : - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
6 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
Modifié par Pitet le 26/05/2014 à 14:26
Modifié par Pitet le 26/05/2014 à 14:26
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
speedy fernandez
Messages postés
11
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
17 octobre 2014
26 mai 2014 à 15:44
26 mai 2014 à 15:44
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
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
Modifié par Pitet le 26/05/2014 à 17:19
Modifié par Pitet le 26/05/2014 à 17:19
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
speedy fernandez
Messages postés
11
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
17 octobre 2014
30 mai 2014 à 11:06
30 mai 2014 à 11:06
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
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
30 mai 2014 à 18:11
30 mai 2014 à 18:11
C'est que ta requête n'est pas bonne, mysql_query renvoi alors False (Un booléen) qui n'est pas valide pour un fetch_array.
Fais un petit echo mysql_error(); après ton mysql_query, ta base de donnée t'indiquera alors une erreur précise pour ta requête.
Fais un petit echo mysql_error(); après ton mysql_query, ta base de donnée t'indiquera alors une erreur précise pour ta requête.
speedy fernandez
Messages postés
11
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
17 octobre 2014
3 juin 2014 à 18:51
3 juin 2014 à 18:51
je veut afficher mon resultat avec mysql_fetch_array, avec cela je pourai ragler mon problème en faisant la difference entre les deux tableaux avec array_diff
est ce possible?
est ce possible?