[RESOLU] Comment faire une requete sql avec un CASE ou IF, HELP!!!!

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 : [RESOLU] Comment faire une requete sql avec un CASE ou IF, HELP!!!!

Re: Comment faire une requete sql avec un CASE ou IF, HELP!!!!

par max303 » 13 déc. 2021, 14:48

Ce serait plus simple de construire ta requête en php, en concaténant les conditions nécessaires, plutôt que de faire la requête entière en sql. D'autant que dans ce cas, la variable $_SESSION['lang'] contient exactement la chaîne de caractère variable qui permet de faire la sélection.

Un truc comme ça :

Code : Tout sélectionner

$sql = "SELECT C.id,"; $sql .= "C.nom_".$_SESSION['lang']; $sql .= " as C.nom,"; $sql .= " DESC_C.nom_".$_SESSION['lang']; $sql .= " as DESC_C.nom";
Après y a plus qu'à interroger la base avec cette requête, et le tour est joué.
Je n'avais pas pensé à la concaténation. Une très bonne idée, merci finipe :)

Re: Comment faire une requete sql avec un CASE ou IF, HELP!!!!

par finipe » 12 déc. 2021, 00:35

Ce serait plus simple de construire ta requête en php, en concaténant les conditions nécessaires, plutôt que de faire la requête entière en sql. D'autant que dans ce cas, la variable $_SESSION['lang'] contient exactement la chaîne de caractère variable qui permet de faire la sélection.

Un truc comme ça :

Code : Tout sélectionner

$sql = "SELECT C.id,"; $sql .= "C.nom_".$_SESSION['lang']; $sql .= " as C.nom,"; $sql .= " DESC_C.nom_".$_SESSION['lang']; $sql .= " as DESC_C.nom";
Après y a plus qu'à interroger la base avec cette requête, et le tour est joué.

Comment faire une requete sql avec un CASE ou IF, HELP!!!!

par max303 » 11 déc. 2021, 20:54

Bonjour, quelqu'un peut m'aider à mettre une condition pour les langues dans ma requête, merci :)
Voici mon code:

Code : Tout sélectionner

function getSouscategories(){ global $bdd; $sql="SELECT C.id , case $_SESSION['lang'] when 'FR' then C.nom_FR when 'EN' then C.nom_EN when 'ES' then C.nom_ES end as C.nom , case $_SESSION['lang'] when 'FR' then DESC_C.nom_FR when 'EN' then DESC_C.nom_EN when 'ES' then DESC_C.nom_ES end as DESC_C.nom FROM categories C "; try{ $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); }catch(Exception $e){ echo "Erreur dans la requête " . $sql; $res = false; } return $res; }
Le but est que $C.nom soit égale à toutes les autres en terme de langues selon celle choisie depuis le début :

Code : Tout sélectionner

$categories=getSouscategories(); <select name="categorie"> <?php foreach($categories as $C){ echo "<option value='".$C['id']."'>".$C['nom']."</option>"; } ?> </select>