Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
Questions, aides et recherches
Soucis avec mon code SQL et PHP
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Paul GTP" data-source="post: 7401996" data-attributes="member: 315249"><p>[CODE]</p><p>$annonce = $_GET['annonce'] ?? '';</p><p>$adresse = $_GET['adresse'] ?? '';</p><p>$categorie = $_GET['categorie'] ?? '';</p><p>$min = $_GET['min'] ?? '';</p><p>$max = $_GET['max'] ?? '';</p><p></p><p>// Tu es sûr de cette ligne ? Car là tu dis "si le prix est DESC, je veux order by ASC", ça me paraît bizarre...</p><p>if isset($_GET['tri']) && $_GET['tri'] == 'desc') {</p><p> $orderby = 'ASC';</p><p>} else {</p><p> $orderby = 'DESC';</p><p>}</p><p></p><p>$where = '';</p><p></p><p>if (!empty(trim($min))) {</p><p> $min = (int) $min; // Comme ça on est sûr que min sera un nombre et pas n'importe quoi rentré par l'utilisateur</p><p> $where .= 'prix >= :min AND'; // On ajoute la condition dans la variable $where si $min a été défini</p><p>}</p><p></p><p>// On fait la même chose avec max</p><p>if (!empty(trim($max))) {</p><p> $max = (int) $max;</p><p> $where .= ' prix >= :max AND';</p><p>}</p><p></p><p>$req = $bdd->prepare("SELECT * FROM membres WHERE {$where} CONCAT(produit, description) LIKE :annonce AND CONCAT(ville, region) LIKE :adresse AND categorie LIKE :categorie ORDER BY date {$orderBy}");</p><p>$req->execute([</p><p> 'annonce' => "%{$annonce}%",</p><p> 'adresse' => "%{$adresse}%",</p><p> 'categorie' => "%{$categorie}%",</p><p> 'max' => "$max",</p><p> 'min' => "$min",</p><p>]);</p><p>[/CODE]</p><p></p><p>Comme ça, si $min est pas défini, on rajoute pas la condition dans la requête, si $max est pas défini, on rajoute pas la condition à la requête, si aucun des deux n'est défini, non plus, mais si l'un, l'autre ou les deux sont définis on les rajoute à la requête</p><p>Je ne l'ai pas testé mais je suppose que ça marche, tu m'en diras des nouvelles <img src="/data/assets/smilies/joueur.gif" class="smilie" loading="lazy" alt=":p" title="Joueur :p" data-shortname=":p" /></p></blockquote><p></p>
[QUOTE="Paul GTP, post: 7401996, member: 315249"] [CODE] $annonce = $_GET['annonce'] ?? ''; $adresse = $_GET['adresse'] ?? ''; $categorie = $_GET['categorie'] ?? ''; $min = $_GET['min'] ?? ''; $max = $_GET['max'] ?? ''; // Tu es sûr de cette ligne ? Car là tu dis "si le prix est DESC, je veux order by ASC", ça me paraît bizarre... if isset($_GET['tri']) && $_GET['tri'] == 'desc') { $orderby = 'ASC'; } else { $orderby = 'DESC'; } $where = ''; if (!empty(trim($min))) { $min = (int) $min; // Comme ça on est sûr que min sera un nombre et pas n'importe quoi rentré par l'utilisateur $where .= 'prix >= :min AND'; // On ajoute la condition dans la variable $where si $min a été défini } // On fait la même chose avec max if (!empty(trim($max))) { $max = (int) $max; $where .= ' prix >= :max AND'; } $req = $bdd->prepare("SELECT * FROM membres WHERE {$where} CONCAT(produit, description) LIKE :annonce AND CONCAT(ville, region) LIKE :adresse AND categorie LIKE :categorie ORDER BY date {$orderBy}"); $req->execute([ 'annonce' => "%{$annonce}%", 'adresse' => "%{$adresse}%", 'categorie' => "%{$categorie}%", 'max' => "$max", 'min' => "$min", ]); [/CODE] Comme ça, si $min est pas défini, on rajoute pas la condition dans la requête, si $max est pas défini, on rajoute pas la condition à la requête, si aucun des deux n'est défini, non plus, mais si l'un, l'autre ou les deux sont définis on les rajoute à la requête Je ne l'ai pas testé mais je suppose que ça marche, tu m'en diras des nouvelles :p [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
Questions, aides et recherches
Soucis avec mon code SQL et PHP
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut