Affecter une variable par des requetes imbriquées ?
Résolu
emrh
Messages postés
427
Date d'inscription
Statut
Membre
Dernière intervention
-
emrh Messages postés 427 Date d'inscription Statut Membre Dernière intervention -
emrh Messages postés 427 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Dans la WebApplication que je développe, j'ai besoin de récupérer des informations dans différentes
tables, liées entre elles par une clé étrangère. Une fois récoltées, j'aimerai concaténer toutes ces data
dans une variable que je passerai à Javascript pour la partie locale et dynamique.
1. Pour vérifier mes requêtes, j'arrive à faire un print du résultat, ça fonctionne mais je ne suis certain
que la méthode employée n'est pas la bonne ! En effet, j'ai utilisé des requêtes imbriquées les unes
dans les autres !!!
2. Je ne trouve pas le moyen de créer une variable commençant par |
Les différents résultats par contre sont bien séparés par un ; par contre dans :
print $prestation['designation'] . ';';
3. var chaine_contrat="<?php echo $chaine_contrat?>";
Est-ce une syntaxe correcte pour passer ma chaine PHP (une fois que j'aurai réussi à la construire)
dans mon script ?
Merci d'avance pour votre aide (ou pistes de recherches)
Dans la WebApplication que je développe, j'ai besoin de récupérer des informations dans différentes
tables, liées entre elles par une clé étrangère. Une fois récoltées, j'aimerai concaténer toutes ces data
dans une variable que je passerai à Javascript pour la partie locale et dynamique.
1. Pour vérifier mes requêtes, j'arrive à faire un print du résultat, ça fonctionne mais je ne suis certain
que la méthode employée n'est pas la bonne ! En effet, j'ai utilisé des requêtes imbriquées les unes
dans les autres !!!
2. Je ne trouve pas le moyen de créer une variable commençant par |
Les différents résultats par contre sont bien séparés par un ; par contre dans :
print $prestation['designation'] . ';';
3. var chaine_contrat="<?php echo $chaine_contrat?>";
Est-ce une syntaxe correcte pour passer ma chaine PHP (une fois que j'aurai réussi à la construire)
dans mon script ?
Merci d'avance pour votre aide (ou pistes de recherches)
// Si l'ID contrat existe, on va chercher toutes les données du contrat à afficher : // CONTRAT : require ("connexion.php"); $requete1 = $bdd->prepare('SELECT * FROM contrats WHERE id_contrat = :id_contrat'); $requete1->execute(array( 'id_contrat' => $_GET['id_contrat'] )); $entete_contrat = $requete1->fetch(); // On récupère aussi la composition du contrat à afficher : $requete2 = $bdd->prepare('SELECT * FROM compositions WHERE id_contrat = :id_contrat'); $requete2->execute(array( 'id_contrat' => $_GET['id_contrat'] )); $composition_contrat = $requete2->fetchAll(); foreach ($composition_contrat as $data) { // On récupère ici la désignation de la prestation : $requete2bis = $bdd->prepare('SELECT designation FROM prestations WHERE id_prestation = :id_prestation'); $requete2bis->execute(array( 'id_prestation' => $data['id_prestation'] )); $prestation = $requete2bis->fetch(); print $prestation['designation'] . ';'; } echo '<br>'; print_r ($entete_contrat); echo '<br>'; print_r ($composition_contrat); echo '<br>'; print_r ($prestation); echo '<br>';
A voir également:
- Affecter une variable par des requetes imbriquées ?
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Virus
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
as-tu déjà étudié les jointures en SQL?
as-tu déjà étudié les jointures en SQL?
Merci @yg_be
Je n'avais jamais eu besoin de ces fonctionnalités donc j'avais survolé
puis oublié ce chapitre... C'est bien moins usine à gaz que mes requêtes
imbriquées ! Je vais regarder ça de près..., je viendrai poster ici ce que j'aurai
écrit.
Que me conseilles-tu pour mettre le résultat des réponses trouvées
(quelques fois plusieurs lignes) dans la deuxième table dans une variable ?
En fait, j'aimerai pouvoir concaténer les réponses comme ça :
|designation1;prix1;quantites1|designation2;prix2;quantites2|designation3;prix3;quantites3...
Je suppose qu'il faut inclure la concaténation dans une boucle style foreach ou while,
mais je ne vois pas comment écrire ça...
Je n'avais jamais eu besoin de ces fonctionnalités donc j'avais survolé
puis oublié ce chapitre... C'est bien moins usine à gaz que mes requêtes
imbriquées ! Je vais regarder ça de près..., je viendrai poster ici ce que j'aurai
écrit.
Que me conseilles-tu pour mettre le résultat des réponses trouvées
(quelques fois plusieurs lignes) dans la deuxième table dans une variable ?
En fait, j'aimerai pouvoir concaténer les réponses comme ça :
|designation1;prix1;quantites1|designation2;prix2;quantites2|designation3;prix3;quantites3...
Je suppose qu'il faut inclure la concaténation dans une boucle style foreach ou while,
mais je ne vois pas comment écrire ça...
Avt de faire du code PHP, j'essaie déjà de faire mes requêtes dans PhpMyAdmin mais ça ne fonctionne pas..
J'ai essayé dans plusieurs syntaxe la commande suivante :
J'ai essayé dans plusieurs syntaxe la commande suivante :
SELECT prestations.designation,compositions.prix, compositions.quantites FROM prestations, compositions WHERE prestations.id_prestation=compositions.id_prestation AND contrats.id_contrat=62
J'avais soit des messages d'erreur de syntaxe sql soit j'avais l'intégralité d'une table...
J'ai regardé ce tuto https://www.youtube.com/watch?v=umB_0eDOrp8&feature=youtu.be et appliqué la première jointure,
c'est à dire celle d'INNER JOIN et ça fonctionne... Enfin presque !
Voici mon code sql de test :
J'ai bien la totalité de la table compositions grace à * mais je
ne veux pas l'intégralité de prestations car prestations contient
'prix' qui est le prix proposé par défaut à l'utilisateur qui peut
être changé et qui est enregistré dans la table compositions
une fois le formulaire validé...
Comment faire pour ne récupérer QUE la prestations.designation
si son prestation.id_prestation = compositions.id_prestation ?
me donne :
MySQL a répondu : Documentation
#1066 - Table/alias: 'prestations' non unique
J'ai regardé ce tuto https://www.youtube.com/watch?v=umB_0eDOrp8&feature=youtu.be et appliqué la première jointure,
c'est à dire celle d'INNER JOIN et ça fonctionne... Enfin presque !
Voici mon code sql de test :
SELECT * FROM compositions INNER JOIN prestations ON prestations.id_prestation=compositions.id_prestation WHERE compositions.id_contrat=62
J'ai bien la totalité de la table compositions grace à * mais je
ne veux pas l'intégralité de prestations car prestations contient
'prix' qui est le prix proposé par défaut à l'utilisateur qui peut
être changé et qui est enregistré dans la table compositions
une fois le formulaire validé...
Comment faire pour ne récupérer QUE la prestations.designation
si son prestation.id_prestation = compositions.id_prestation ?
SELECT prestations.designation,compositions.quantites, compositions.prix FROM compositions, prestations
me donne :
MySQL a répondu : Documentation
#1066 - Table/alias: 'prestations' non unique
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Après une multitude d'essais :
Me donne :
Chambre côté Village (1 personne) 1 50.00
C'est exactement ce que je cherchais !
SELECT prestations.designation,compositions.quantites, compositions.prix FROM compositions INNER JOIN prestations ON prestations.id_prestation=compositions.id_prestation WHERE compositions.id_contrat=62
Me donne :
Chambre côté Village (1 personne) 1 50.00
C'est exactement ce que je cherchais !