Requete AND ou OR ?

Le
SuperG2
Bonjour, j'espere que vous pourez m'apporter de l'aide car je patauge.

J'ai un formulaire de recherche qui comprend 5 champs :
Ville
Code postal
Region
Type
Reference

Les 5 champs sont facultatifs.
Au moins un des champ doit être remplit

Je ne sais pas comment traiter l'information sur la page de traitement.php

Je récupère mes variable postées.Faut t'il un traitement particulier si un
champ reste vide ?

Mais surtout, je ne vois pas comment poser la requete.

SELECT * FROM table WHERE ville="" AND cp="" AND region="" AND type="" AND
reference=""


Voila, cela vous semble t'il possible ?

Merci de vos avis.

Bonne soirée à tous

SuperG2
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques-A
Le #939120
"SuperG2" news: 479cab70$0$21149$
Bonjour, j'espere que vous pourez m'apporter de l'aide car je patauge.

Bonjour,


J'ai un formulaire de recherche qui comprend 5 champs :
Ville
Code postal
Region
Type
Reference

Les 5 champs sont facultatifs.
Au moins un des champ doit être remplit

Je ne sais pas comment traiter l'information sur la page de traitement.php


Compter les champs vide et redemander le formulaire si ce compte=5 ?


Je récupère mes variable postées.Faut t'il un traitement particulier si un
champ reste vide ?

Mais surtout, je ne vois pas comment poser la requete.

SELECT * FROM table WHERE ville="" AND cp="" AND region="" AND type="" AND
reference=""


Ne rendra jamais rien car au moins un des champs ne sera pas vide.

Construire la requète avec seulement les champs non vides ? du genre :
$DbleQuote='"' ; // pour la lisibilité (double quote entre simples quotes)
$Req='SELECT * FROM table WHERE ';
if ($Ville != NULL) $Req.='`ville`='.$DbleQuote.$Ville;
etc. ;

utiliser la variable $Req pour la requète.

J'espère ne pas avoir fait d'erreur dans les " les `et les ' de la
construction de $Req.
A+

Jacques


Voila, cela vous semble t'il possible ?

Merci de vos avis.

Bonne soirée à tous

SuperG2


Bruno Desthuilliers
Le #939118
Bonjour, j'espere que vous pourez m'apporter de l'aide car je patauge.

J'ai un formulaire de recherche qui comprend 5 champs :
Ville
Code postal
Region
Type
Reference

Les 5 champs sont facultatifs.
Au moins un des champ doit être remplit

Je ne sais pas comment traiter l'information sur la page de traitement.php


// nb: en partant du principe que tu utilises MySQL,
// à adapter selon besoin

function lire_post($champ) {
if (isset($_POST[$champ]) {
$val = $_POST[$champ];
// nettoyage ici pour éviter
// pb sécurité
return $val;
}
return NULL;
}

$champs = array('ville', 'cp', 'region', 'type', 'reference');
$valeurs = array();
foreach($champs as $champ) {
if ($val = lire_post($champ)) {
$valeurs[$champ] = $val;
}
}

if (empty($valeurs)) {
// renvoyer vers le formulaire avec
// un message d'erreur
exit();
}

Je récupère mes variable postées.Faut t'il un traitement particulier si
un champ reste vide ?


Bin oui: ne pas l'utiliser pour la requête SQL.

Mais surtout, je ne vois pas comment poser la requete.

SELECT * FROM table WHERE ville="" AND cp="" AND region="" AND type=""
AND reference=""


$cnx = <ta connection à la base>;

$where = array();
foreach ($valeurs as $champ=>$val) {
$where[] = "$champ='" . mysql_real_escape_string($val, $cnx) . "'";
}

/*
* On ne peux pas décider pour toi si tu veux un ET ou un OU - à la
* limite, tu pourrais laisser le choix à l'utilisateur...
* Ceci étant, ça ne change pas grand chose à la construction de
* ta requete:
*/

$where = implode('AND', $where);

$sql = "SELECT * FROM table where $where";

Dernier point : d'une manière générale, évite les "SELECT *"

HTH

SuperG2
Le #938958
Merci, je test, ca parait pas trop mal ?

J'ai amélioré le systeme proposé en concatainant..
Publicité
Poster une réponse
Anonyme