Recherche multicritères

chillnout Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 9 janvier 2009 - 12 déc. 2008 à 01:59
chillnout Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 9 janvier 2009 - 9 janv. 2009 à 20:25
Bonjour,

Je viens de me lancer dans un petit projet personnel, une page php pour
afficher la liste des fournisseurs de mon entreprise "par
dénomination", par "localité" et par "activité".

Bon, mon souci c'est de créer une page où je peux facilement chercher
un fournisseur soit par son nom, sa localité et son activité.

J'ai créer un formulaire avec une zone de texte pour la denomination, une menu deroulant pour l'activité et un autre menu deroulant pour la localité.

Je veux que je puisse chercher par activité seulement (ça veut dire selectionner FOURNITURES DE BUREAUX dans le menu - localité = vide et denomination=vide) ou par localité seulement ou par denomination seulement aussi.
ou avec des combinaisons de 2 par 2 ...

c'est à ce niveau que je bloque, j'ai pu faire la recherche par un seul critère, mais pour plusieurs avec la possibilitéque 1 ou 2 champs soient vides Non :s
 

Ce que je cherche à faire me semble pareil aux sites de l'immobilier où
on peut recherche un appart par exemple qui se trouve en sud de france,
au nord ...


J'ai besoin des conseils pour me guider dans mon travail.


Je pense que j'étais assez clair. :)


Merc beaucoup.

3 réponses

chillnout Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 9 janvier 2009
12 déc. 2008 à 14:22
Je vois que je n'ai pas recu de réponse :(

Jusqu'à maintenant je suis arrivé à ça :

PHP:, ----
<?php

mysql_connect("localhost", "root", "");

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\xxx\result.php on line 65


la ligne 65 est celle là :


while ($donnees = mysql_fetch_array($sql) )


Merci.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
14 déc. 2008 à 11:56
Salut,

Pense à bien traiter les données qui te sont transmises par le formulaire. Si j'envoie un apostrophe dans un des champs il y a de fortes chances pour que ça plante, je peux aussi écraser ta page en envoyant du code HTML dans ta base, etc ... (cf mysql_real_escape_string et strip_tags)
Pour ce qui est du "= '%';" ce n'est sans doute pas la meilleure solution si ta base comporte de très nombreux enregistrements.

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("frs_db"); // Sélection de la base

if (isset($_POST['denomination'])) {
  $denomination = mysql_real_escape_string(strip_tags($_POST['denomination']));
} else $denomination = '%';

if (isset($_POST['activite'])) {
  $activite = mysql_real_escape_string(strip_tags($_POST['activite']));
} else $activite = '%';

if (isset($_POST['localite'])) {
  $localite = mysql_real_escape_string(strip_tags($_POST['localite']));
} else $localite = '%';

$sql = "SELECT * FROM fournisseurs WHERE
denomination LIKE '$denomination' AND
activite LIKE '$activite' AND
localité LIKE '$localite'
";
if (false $query mysql_query($sql)) {
    //die (mysql_error()); => à ne pas faire hors tests !!
    // => redirection vers une page d'erreur, info au webmaster, ...
}

// Et si la requête ne donne aucun résultat ? => informer l'utilisateur

while ($donnees = mysql_fetch_array($sql, MYSQL_NUM)) {
    echo '
   
    Fournisseur : '.$donnees[0].'

    Son activité : '.$donnees[1].'

    Sa localité : '.$donnees[2].'

   

    ';
}
?>

Cordialement,

Kohntark -
0
chillnout Messages postés 5 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 9 janvier 2009
9 janv. 2009 à 20:25
// Et si la requête ne donne aucun résultat ? => informer l'utilisateur !

comment je peux faire ça . c'est a dire si la requete ne retourne aucun résultat, lui afficher qu'il doit modifier ses critères de recherche.

merci d'avance
0
Rejoignez-nous