Champ de recherche multiple avec php mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Champ de recherche multiple avec php mysql

Re: Champ de recherche multiple avec php mysql

par Ryle » 28 déc. 2011, 18:16

Quand je fais un echo sur ma req
il me remet ma requete
SELECT `id`, `idsiteinterne`, `idsiteprovider`, `site_name`, `adresseIP`, `service` FROM cyb_site WHERE 1=1 
Euh... le echo faut le faire juste avant le mysql_query() pour voir ce que tu envois à MySQL comme requête et comprendre ce qui ne lui convient pas :)

Si tu le fais juste après le premier $req= , tu loupes toutes les modifications qui sont apportées à cette variable avant que tu ne demandes à Mysql de l'exécuter ;)

Re: Champ de recherche multiple avec php mysql

par Mazarini » 28 déc. 2011, 17:08

J'avoue ne pas faire le raprochement entre la requete que tu indiques et le message d'erreur précédent. La requete me semble bonne sauf problème potentiel de nom de table, nom de colonne ou connexion (mais le message d'erreur serait autre).

A priori, si tu as remplacé les & par des . pour la concaténation, ca devrait marcher .

Re: Champ de recherche multiple avec php mysql

par glodybiss4 » 28 déc. 2011, 16:44

Quand je fais un echo sur ma req
il me remet ma requete
SELECT `id`, `idsiteinterne`, `idsiteprovider`, `site_name`, `adresseIP`, `service` FROM cyb_site WHERE 1=1 

Re: Champ de recherche multiple avec php mysql

par xTG » 28 déc. 2011, 14:53

Non là tu affiches le contenu de $result. ;)
echo $req;

Re: Champ de recherche multiple avec php mysql

par glodybiss4 » 28 déc. 2011, 14:48

Peux-tu s'il te plait m'expliquer
Affiche le contenu de $req, tu devrais rapidement voir le problème
Ce n'est pas ce que j'ai fais ici ?
echo $result = mysql_query($req)

Re: Champ de recherche multiple avec php mysql

par Ryle » 28 déc. 2011, 12:55

Affiche le contenu de $req, tu devrais rapidement voir le problème :)

Quant à l'opérateur qui permet de concaténer des chaines ensemble, c'est le point "." ... Le "&" seul permet de faire une comparaison bit à bit, mais ne colle pas deux chaines l'une avec l'autre :-*

Re: Champ de recherche multiple avec php mysql

par glodybiss4 » 28 déc. 2011, 12:21

Erreur SQL !DHEAT
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
c'est ça l'erreur affichée

Re: Champ de recherche multiple avec php mysql

par Mazarini » 28 déc. 2011, 12:02

echo $result = mysql_query($req);
Cela signifie que la requete ci-dessus s'est mal exécutée puisque $result n'est pas une ressource.

Pour savoir ce qui pose problème, il faut afficher mysql_error() et éventuellement $req. Il y a une erreur si mysql_errno() n'es pas à 0.

Champ de recherche multiple avec php mysql

par glodybiss4 » 28 déc. 2011, 11:49

Bonjour à tous !

J'ai créer un moteur de recherche qui permet de rechercher plusieurs catégorie avec plusieurs champs.
Une erreur #-o n'arrête pas d'apparaître lors de l'exécution de mon script.

L'erreur c'est sur la ligne 40

Code : Tout sélectionner

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\internetservices\sitemanage.php on line 40
Voici la ligne 40 de mon code

Code : Tout sélectionner

if (mysql_num_rows($result)==0)
Et voici le code entier

Code : Tout sélectionner

<?php //recherche des résultats dans la base de données$result = mysql_query( 'SELECT prenom if(isset($_GET['recherche'])){ extract($_GET); $req = "SELECT `id`, `idsiteinterne`, `idsiteprovider`, `site_name`, `adresseIP`, `service` FROM cyb_site WHERE 1=1 "; //Le WHERE 1=1 permet de pas s'embeter à savoir si le WHERE a déjà été mis ou pas après dans les différents "if isset..." //Ajout de la recherche sur le idsiteinterne s'il est renseigné if (isset($_POST['idsiteinterne'])) $req = $req & " AND idsiteinterne LIKE '%".htmlentities(trim($_post['idsiteinterne']))."%'"; //Ajout de la recherche sur le idsiteprovider s'il est renseigné if (isset($_POST['idsiteprovider'])) $req = $req & " AND idsiteprovider LIKE '%".htmlentities(trim($_post['idsiteprovider']))."%'"; //Ajout de la recherche sur site_name si elle est renseignée if (isset($_POST['site_name'])) $req = $req & " AND site_name LIKE '%".htmlentities(trim($_post['site_name']))."%' "; if (isset($_POST['adresseIP'])) $req = $req & " AND adresseIP LIKE '%".htmlentities(trim($_post['adresseIP']))."%' "; if (isset($_POST['service'])) $req = $req & " AND service LIKE '%".htmlentities(trim($_post['service']))."%' "; $req = $req & " LIMIT 10"; echo'<h4>Resultat de recherche</h4>'; echo '<table>'; echo '<tr>'; echo '<th class="td_seach_titre">N&deg;</th>'; echo '<th class="td_seach_titre">ID Provider</th>'; echo '<th class="td_seach_titre">ID Interne</th>'; echo '<th class="td_seach_titre">Etat du site</th>'; echo '<th class="td_seach_titre">Nom du site</th>'; echo '<th class="td_seach_titre">Adresse IP</th>'; echo '<th class="td_seach_titre">Service</th>'; echo '</tr>'; echo '</table>'; // affichage d'un message "pas de résultats" //$result = mysql_query($req) echo $result = mysql_query($req); if (mysql_num_rows($result)==0) { ?> <h3 style="text-align:center; margin:10px 0;">Pas de r&eacute;sultats pour cette recherche</h3> <?php } else { // parcours et affichage des résultats while( $result = mysql_query($result)) { ?> <div class="article-result"> <table> <tr> <td class="id"><?php echo $post->id; ?></td> <td class="td_seach"><a href="accueil.php?view=24&u='.$row['id'].'""><?php echo $post->idsiteinterne; ?></a></td> <td class="td_seach"><?php echo $post->idsiteprovider; ?></td> <td class="td_seach"><?php echo $post->idetatsite; ?></td> <td class="td_seach"><?php echo $post->site_name; ?></td> <td class="td_seach"><?php echo $post->adresseIP; ?></td> <td class="td_seach"><?php echo $post->service; ?></td> </tr></table> </table> </div> <?php } } } ?> <div id="boxManage"> <h4>Rechercher un site</h4> <p>Trouvez un site par son nom, sa date de cr&eacute;ation, son ID, son statut. </p> <form method="get" action=""> <table width="480" border="0" class="right"> <tr> <td class="recherche_text"><label for="id_interne">ID interne</label></td> <td > <input type="text" name="idsiteinterne" class="recherche" id="id_interne" value="<?php if (isset($_POST['idsiteinterne'])) echo htmlentities(trim($_POST['idsiteinterne'])); ?>"></td> </tr> <tr> <td class="recherche_text"><label for="id_provider" >ID Provider</label></td> <td > <input type="text" name="idsiteprovider" class="recherche" id="id_provider" value="<?php if (isset($_POST['idsiteprovider'])) echo htmlentities(trim($_POST['idsiteprovider'])); ?>"></td> </tr> <tr> <td class="recherche_text"><label for="nom_du_site">Nom du site</label></td> <td > <input type="text" name="site_name" class="recherche" id="nom_du_site" value="<?php if (isset($_POST['site_name'])) echo htmlentities(trim($_POST['site_name'])); ?>"></td> </tr> <tr> <td class="recherche_text"> <label for="adresse_ip">Adresse IP</label></td> <td > <input type="text" name="adresseIP" class="recherche" id="adresse_ip" value="<?php if (isset($_POST['adresseIP'])) echo htmlentities(trim($_POST['adresseIP'])); ?>"></td> </tr> <tr> <td class="recherche_text">Statut</td> <td class="seach_name" > <?php $query = "SELECT * FROM `etat_site`"; $result = mysql_query($query); echo '<SELECT name="idetatsite" class="recherche_select">'; while ($row = mysql_fetch_array($result)) { echo '<OPTION>'.$row['etatsite'].'</OPTION>'; } echo '</SELECT>'; ?> </td> </tr> <tr> <td></td> <td><input type="submit" name="recherche" class="recherche_submit" value="Rechercher" /></td> </tr> </table> </form> </div> <div id="results"></div>