Requete tableaux croisés

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 : Requete tableaux croisés

Re: Requete tableaux croisés

par Chile » 13 avr. 2016, 21:32

Bonjour,
Bon finalement, j'ai opté pour une solution plus simple avec inner join, en remaniant un peu mes tables.
merci qm

Re: Requete tableaux croisés

par Chile » 25 févr. 2016, 21:36

Bonjour,
Merci pour ces réponses.
J'ai mis en place cette solution, mais je n'ai pas l'effet souhaité.
Ma connexion avec la base est bonne, car je peux réaliser un affichage simple d'une donnée de la base.
Par contre j'ai du mal à écrire le code pour l'affichage en boucle. Les étapes 3 et 4 de Sadeq. :?

J'ai écris/

Code : Tout sélectionner

$code = isset($_GET['code']) ? $_GET['code'] : 'S1'; $code_contenu = $ligne['j' + $j]; mysql_select_db($database_con..., $con...); $query_base_programme = "SELECT * FROM base_programme WHERE code = '$code_semaine'"; $base_programme = mysql_query($query_base_programme, $con...) or die(mysql_error()); $row_base_programme = mysql_fetch_assoc($base_programme); $totalRows_base_programme = mysql_num_rows($base_programme);
Je cale pour l'affichage. J'ai tenté plusieurs fois suivant les conseils de Sadeq, mais j'ai toujours une syntax error...

Merci si de votre aide.

Re: Requete tableaux croisés

par sadeq » 29 avr. 2015, 19:46

Sur l'étape 2 et la variable, doit je mémoriser tous les champs en créant un tableau avec les fonctions while et array ?
Bonjour, non la variable $ligne se remplie automatiquement par la fonction de lecture $ligne = mysql_fetch_array($result) que tu écrit bien sûr comme ça en PHP:

Code : Tout sélectionner

// Début du Programme // Etape 0 : se connecter à la base nommée ma_base sur le serveur localhost mysql_connect('localhost', 'root', ''); mysql_select_db('ma_base'); // Etape 1 : Exécuter la requête qui retourne un enregistrement correspondant à la semaine donnée $code_semaine = isset($_GET['code_semaine']) ? $_GET['code_semaine'] : 's1'; $sql = "SELECT * FROM base_programme WHERE code_semaine = '$code_semaine'"; $result = mysql_query($sql); // Etape 2 : Lire le résultat de cette requête dans une variable $ligne while ( $result && $ligne = mysql_fetch_array($result) ){ //ici $ligne est un tableau qui contient automatiquement tous les champs de la table base_programme // écrire ici les étapes 3 et 4 } // Fin du Programme

Re: Requete tableaux croisés

par Chile » 29 avr. 2015, 12:50

Bonjour Sadeq et merci. Me voila rassuré sur la faisabilité de cette affichage.
J'ai bien compris l'esprit de ton programme.
Sur l'étape 2 et la variable, doit je mémoriser tous les champs en créant un tableau avec les fonctions while et array ?

Re: Requete tableaux croisés

par sadeq » 28 avr. 2015, 21:59

Salut, voici l'algorithme de la procédure à suivre :

Code : Tout sélectionner

Début du programme 0. Ouvrir une connexion avec la bas de données de travail 1. Exécuter une première requête : SELECT * FROM base_programme WHERE code_semaine = '$code_semaine' qui doit retourner un enregistrement correspondant à la semaine donnée par la variable $code_semaine 2. Lire le résultat de cette requête dans une variable $ligne qui représente donc un enregistrement de la table base_programme, c'est donc un tableau composé des champs de cette table. Soit : $ligne['id'], $ligne['code_semaine'], $ligne['j1'], $ligne['j2'], $ligne['j3'], $ligne['j4'], $ligne['j5'], $ligne['j6'] et $ligne['j7'] 3. On peut désormais commencer à afficher l'entête de la fiche du programme repas de la semaine ; Par exemple: Afficher ("Le programme repas de la semaine " + $code_semaine + " est : ") 4. En suite, pour afficher les repas des jours, on doit utiliser par exemple pour le jour 1 la requête SELECT * FROM base_contenu WHERE code_contenu = '$ligne[j1]' et ainsi de suite pour les autres jours. Mais pour simplifier l'exécution de cette rafale de requêtes jours, on peut utiliser une boucle de jour $j allant de 1 à 7, pour parcourir les variables : $ligne['j1'], $ligne['j2'], $ligne['j3'], $ligne['j4'], $ligne['j5'], $ligne['j6'] et $ligne['j7'] et les utiliser une par une dans la requête. Voici donc l'algorithme de cette étape 4: Boucle $j allant de 1 à 7 faire: $code_contenu = $ligne['j' + $j] Exécuter la requête : SELECT * FROM base_contenu WHERE code_contenu = '$code_contenu' Lire le résultat de la requête dans une variable $repas composée des champs : $repas['id'], $repas['code_contenu'], $repas['petit dejeuner'], $repas['dejeuner'], $repas['diner'] Afficher le repas de ce jour: Afficher ("Jour "+$j+" : Petit déjeuner : "+$repas['petit dejeuner']+" - Déjeuner : "+$repas['dejeuner']+" - Dîner : "+$repas['diner']) Répéter la boucle pour $j+1 Fin du programme.
Ce programme affiche donc après exécution pour $code_semaine= 's1', le résultat suivant:

Le programme repas de la semaine s1 est :
Jour 1 : Petit déjeuner : jus d'orange + croissant - Déjeuner : salade - Dîner : quiche
Jour 2 : Petit déjeuner : café + pain - Déjeuner : pizza - Dîner : jambon
Jour 3 : Petit déjeuner : yaourt + céréale - Déjeuner : dorade - Dîner : saumon
Jour 4 : Petit déjeuner : jus d'orange + croissant - Déjeuner : salade - Dîner : quiche
Jour 5 : Petit déjeuner : café + pain - Déjeuner : pizza - Dîner : jambon
Jour 6 : Petit déjeuner : yaourt + céréale - Déjeuner : dorade - Dîner : saumon
Jour 7 : Petit déjeuner : jus d'orange + croissant - Déjeuner : salade - Dîner : quiche

Voilà.

Re: Requete tableaux croisés

par Chile » 27 avr. 2015, 03:18

bonjour,
merci pour votre réponse.
j'aimerai récupérer le programme repas de la semaine. Est-ce possible en une requete, ou dois je effectuer une requete pour chaque jour de la semaine ?
j'aimerai recuperer comme infos les 7 jours, j1,j2...et que chacun contiennent les 3 repas correspondant suivant le code contenu.

Re: Requete tableaux croisés

par sadeq » 26 avr. 2015, 23:08

Bonjour,
Oui c'est possible car pour tout $code_contenu que tu as dans une journée exemple j1, tu peux exécuter une requête SELECT * FROM base_contenu WHERE code_contenu = '$code_contenu' pour récupérer les repas du jour et les afficher.

Requete tableaux croisés

par Chile » 25 avr. 2015, 00:13

Bonjour, j'essaye de trouver une solution pour une requete speciale sur 2 tableaux, et je cale.
J'ai un tableau 1, base_contenu, contenant differents types de programme repas par jour (petit dej + dej + diner)
Image

puis un 2e tableau base_programme
Image
qui contient les combinaisons de repas sur une periode

Dans ma requete j'appelle la semaine 1 avec le code_semaine, et je souhaite donc retrouver dans les j1, j2, j3...le contenu correspondant.
Par exemple, en appelant s1, je souhaite afficher le programme repas de la semaine
j1 : petit dejeuner:jus d'orange + croissant - dejeuner: salade - diner:quiche
j2: petit dejeuner: cafe + pain - dejeuner:pizza - diner:jambon
j3: petit dejeuner: yaourt + cereale - dejeuner:dorade - diner:saumon
j4: petit dejeuner:jus d'orange + croissant - dejeuner: salade - diner:quiche
j5: petit dejeuner: cafe + pain - dejeuner:pizza - diner:jambon
j6: petit dejeuner: yaourt + cereale - dejeuner:dorade - diner:saumon
j7: petit dejeuner:jus d'orange + croissant - dejeuner: salade - diner:quiche

Est-ce possible ?

merci pour votre aide...