Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete AND ou OR ?

3 réponses
Avatar
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

3 réponses

Avatar
Jacques-A
"SuperG2" a écrit dans le message de
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


Avatar
Bruno Desthuilliers
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

Avatar
SuperG2
Merci, je test, ca parait pas trop mal ?

J'ai amélioré le systeme proposé en concatainant..