CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Questionnement requête préparée "dynamique" SQL

Diabolo09
Diabolo09
Niveau 10
09 mars 2017 à 11:23:59

Bonjour,

Je viens vers vous ajd car j'ai un petit soucis pour construire une requête.

Je vous fait le topo rapidement, sur une page l'utilisateur complète différents champs (acheteur, lieu de livraison, produit désiré, date...)
En fonction de ces critères, plusieurs choix de fournisseur/transporteurs sont fait a l'utilisateur.

J'ai réussi à filtrer sur tout les critères, sauf un, les suppléments. Chaque commande encodée par l'utilisateur peu contenir un ou plusieurs suppléments.

Je récupère ces suppléments en js (comme le reste des inputs) et les passes ensuite a un script php, qui lui me renvois l'html contenant les différents choix possible de fournisseurs, transporteurs.

Le soucis étant que le nombre de ces suppléments n'est pas défini, et de ce fait je rencontre des soucis à construire ma requête.

Je vous la pose là (elle n'est évidement pas fonctionnelle, mais je pense que vous devriez pouvoir comprendre ce que je souhaite faire, si pas, demandez ;) )

$reqf = $bdd->prepare('SELECT t.nom, tt.prix, t.id
FROM trajets_transporteurs as tt
LEFT JOIN transporteurs as t ON t.id = tt.id_transporteur
WHERE tt.id_trajet = :id_trajet
'
foreach ($supinter as $sup) {
'AND EXISTS (SELECT * FROM supplements_trans as st WHERE st.id_sup = '.$sup.' AND st.actif = 1 AND st.id_trans = tt.id_transporteur)'
}
'
');
$reqf->execute(array(
'id_trajet' => $id_trajet,
)) or die(print_r($reqf->errorInfo(), TRUE));

Je me demande donc s'il y a moyen de faire qqchose de dynamique, ou si je dois count l'array sur lequel je fait le foreach, et faire autant de requête que nécessaire (p-e en limitant le nombre max de suppléments sur une commande, ce qui est faisable).

Merci à ceux qui ont lu, et doublement merci à ceux qui se pencheront sur mon soucis ! :-d

darkiron_natty
darkiron_natty
Niveau 8
09 mars 2017 à 11:41:04

Regarde comment marche prépar sur la doc php [[sticker:p/1kkn]] ensuite pas de ordie() [[sticker:p/1kkn]]

darkiron_natty
darkiron_natty
Niveau 8
09 mars 2017 à 11:45:07

Mais tu pense peut être pas de la bonne façon tu peux faire un in

Diabolo09
Diabolo09
Niveau 10
09 mars 2017 à 11:51:33

Bon ben j'ai posté trop vite pour le coup ^^

J'ai ça, et ça fonctionne comme je le voulais :

$sql='SELECT t.nom, tt.prix, t.id
FROM trajets_transporteurs as tt
LEFT JOIN transporteurs as t ON t.id = tt.id_transporteur
WHERE tt.id_trajet = :id_trajet
';
foreach ($supinter as $sup) {
if ($sup == 'NULL') {
$sup = NULL;
}
if ($sup != NULL || $sup != '') {
$sql.=' AND EXISTS (SELECT * FROM supplements_trans as st WHERE st.id_sup = '.$sup.' AND st.actif = 1 AND st.id_trans = tt.id_transporteur)';
echo 'sup '.$sup.'<br/>';
}
}
$reqf = $bdd->prepare($sql);
$reqf->execute(array(
'id_trajet' => $id_trajet,
)) or die(print_r($reqf->errorInfo(), TRUE));

Maintenant si vous avez mieux, j'suis preneur !

Diabolo09
Diabolo09
Niveau 10
09 mars 2017 à 11:52:46

Et pour le or die, j'suis en dev la, j'ai besoin de voir les erreurs, s'plus simple pr le debug.

darkiron_natty
darkiron_natty
Niveau 8
09 mars 2017 à 13:11:26

Non c'est pas plus simple [[sticker:p/1lmh]]

Diabolo09
Diabolo09
Niveau 10
09 mars 2017 à 14:32:02

Ben explique-moi alors...

Tu veux que j'aille consulter les logs pour chaque erreur?

darkiron_natty
darkiron_natty
Niveau 8
09 mars 2017 à 15:52:54

Je vais pas t'apprendre à gérer les erreurs . De un : y'a pas de solution unique .
De deux c'est juste mal et je pense pas que tu va changer ca en prod .

Je connais pas ton métier [[sticker:p/1kkn]]

Le mieux serais d'avoir une constante prod, dev de checker avec un if et non in or die le résultat de la requête et d'afficher en fonction de la constante dev et de l'ip ( uniquement pour les dev donc la tienne) d'afficher le debug. Et prod d'afficher un simple message d'erreur.

Sinon tu peux générer une exception [[sticker:p/1kkn]]

Diabolo09
Diabolo09
Niveau 10
09 mars 2017 à 16:59:10

Ben pourtant tu viens de le faire, c'est pas si compliqué.

Puis bon si le principe d'un forum c'est pas l'entraide, ben j'ai du louper une maj.

Sur ce merci et bonne journée.

darkiron_natty
darkiron_natty
Niveau 8
09 mars 2017 à 17:08:01

Mes de rien [[sticker:p/1lmh]]

T'es vraiment dev ?[[sticker:p/1kkr]]

Message édité le 09 mars 2017 à 17:08:43 par darkiron_natty
Diabolo09
Diabolo09
Niveau 10
09 mars 2017 à 17:13:52

Et toi tu fais vraiment de la muscu? :noel:

darkiron_natty
darkiron_natty
Niveau 8
09 mars 2017 à 19:37:25

:lol: je parle pas loisirs mais pro
Mais oui et j'ai aussi fait 3 ans de Kung-fu :ok:
et développeur php depuis un moment (~2010)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment