Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2007, 12h43   #1
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
Par défaut [SQL] création d'un tableau

bonjour

voila

j'ai deux tables, document qui contient la liste des documents et la table chapitre

je recupere dans une permiere requete tous les documents

Code :
1
2
3
4
 
 
$query= select * from document D
            left join chapitre C on C.id= D.id_chapitre
ensuite dans une deuxieme requete je recupere la liste de tous les chapitres

Code :
1
2
3
4
 
 
$query= select id, label
            from chapitre
comment je peux faire maintenant pour creer un tableau qui contient pour chaque chapitre le tableau des documents qui lui sont rattachés?

merci d'avance
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 12h53   #2
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
Je dirais quelque chose du genre

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$req_c = 'Ta requete qui récupère tous les chapitres';
$res_c = mysql_query($req_c);
 
while($enr_c = mysql_fetch_assoc($res_c)) {
 
  $req_d = 'Ta requete qui récupère les doc du chap courant';
  $res_d = mysql_query($req_d);
  echo '<table>';
  while($enr_d = mysql_fetch_assoc($res_d)) {
    echo '<tr><td>...</td></tr>';
  }
  echo '</table>';
}
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 13h11   #3
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
merci d'avoir pris le temps de repondre huntress!

mais c'estr de ma faute , je me suis mal exprimée

en fait avec mes deux requetes j'aimerai bien construire un tableau avec array, qui pour chaque chapitre met la liste des documents et je crois qu'il faut ultiser un array_push mais je ne sais pas comment tuilsier tout ca

merci d'avance
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 13h22   #4
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
C'est pas grave.

Donc si on traduit mot pour mot ce que tu veux, çà ressemble à un tableau à 2 dimensions...
Si tu reprends mon code tu devrais pouvoir y arriver aussi.

Code :
1
2
3
4
5
6
7
8
9
$req_c = 'Ta requete qui récupère tous les chapitres';
$res_c = mysql_query($req_c);
while($enr_c = mysql_fetch_assoc($res_c)) {
  $req_d = 'Ta requete qui récupère les doc du chap courant';
  $res_d = mysql_query($req_d);
  while($enr_d = mysql_fetch_assoc($res_d)) {
    $tab[enr_c['id']][] = enr_d['id'];
  }
}
J'espère que je me suis pas vautrée, j'suis super dans le pâtée.


Edit : Je crois pas m'être vautrée mais je pense pas avoir totalement répondu à ta question... je te laisse regarder çà... mais je pense que tu préfèrerais un truc du genre $tab[1] = '1, 2, 4, 9'; Me trompe-je ?
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 13h39   #5
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
non c'est comme vous avez ecrit avant ,

par exemple si j'ai dans ma liste des chapitres les chapitres 2, 4, 5 , 7

j'aimerai bien avoir comme tableau

Code :
1
2
3
4
5
6
7
8
9
10
 
 
array (
 
[2] => array ([0] => doc12, [1] => doc24 ),
[4] => array ([0] => doc1, [1] => doc2, [2]=> doc37),
[5] => array ([0] => doc17),
[7] => array ([0] => doc15, [1] => doc2, [2]=> doc33)
 
);
un tableau dans ce genre, et en plus j'ai l'impression que je dois faire ca dans la boucle while qui recupere les documents et je dois utiliser un array_push


le truc c'est que j'arrive pas a traduire en code ce que j'ai dans la tete
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 13h42   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Code :
array_push($tableau, $element)
est équivalent à cf code de Huntress
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h06   #7
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
ah merci! oui je savais pas ca

mais le truc c'est que je ne peux pas faire les requetes imbriquees

j'ai sur une page ma requete de selection des chapitres que j'ai appelle en fait les standards
Code :
1
2
3
4
5
6
 
 
$query2 ="SELECT id, label FROM standard_bloc"; // Récuperation des chapitres
$result2 = db_send_query("erreur recuperation standards", $query2);
while ($row = db_fetch_array($result2))
	$standard_name_tab[$row["id"]]=$row["label"];
sur la meme page j'effecute une requete un peu compliquee avec pleins de tests mais qui peut se resumer a

Code :
1
2
3
4
 
 
$query= select * from document
            left join standard_bloc on document.id_standard= standard_bloc.id
le truc c'est que il y plein d'autres conditions et le $resultat de la deuxieme requete peut prendre differentes valeurs


sur une autre page , je commence comme ca

Code :
1
2
3
4
 
 
while ($row = db_fetch_array($resultat))
	{
et la si j'adapte le code a ce que vous m'avez dit , ca ne parche aps , ca me renvoie un talbeau simple avec juste les chapitres
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h12   #8
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
J'ai pas tout compris ton problème. Tu parles de pages différentes, de requete imbriquées (alors qu'on ne t'en propose pas), bref... ce n'est pas trop clair

Si on adapte le code proposé par Huntress, que donne ceci ?
Code :
1
2
3
4
5
6
7
8
9
10
11
$req_c = 'SELECT id, label FROM standard_bloc';
$res_c = db_send_query($req_c);
while($enr_c = mysql_fetch_assoc($res_c)) {
  $req_d = 'SELECT * FROM document WHERE document.id_standard = '. $enr_c['id'];
  $res_d = mysql_query($req_d);
  while($enr_d = mysql_fetch_assoc($res_d)) {
    $tab[$enr_c['id']][] = $enr_d['id'];
  }
}
//test
var_dump($tab);
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h25   #9
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
ben moi non plus je ne comprends pas comment expliquer mais svp , soyez patient la je pense que j'arriverai a vous expliquer cette fois ci

en fait ce que je fais vraiment

d'abord j'ecris une requete permettant de me retourner tous les documents que j'ai dans ma base avec toutes leurs proprietes et dans ma table document j'ai une colonne numero de chapitre qui permet de me donner le chapitre sur lequel s'appuie le document



ensuite, j'ecris une requete recuperant tous les chapitres

dans une autre page je veux creer ce fameux tableau

et donc j'ecirs

Code :
1
2
3
4
 
 
while ($row = db_fetch_array($resultat))
	{
avec $row['NUM_DOC'] je peux recuperer le numero de chaque document

et avec $row['numero chapitre'] je recupere le chapitre associé au document

svp dites moi franchement est ce que c'est plus clair? oubliez tout ce que j'ai dit dans les precendents posts
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h27   #10
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Je me disais bien qu'un documents possede plusieurs chapitres plutot que l'inverse
Sinon qu'entends-tu par "page" ?
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h35   #11
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
non c'est bien chaque chapitre qui contient plusieurs documents vu quz dans ma table document j'ai la colonne numero chapitre et chaque document ne contient que un seul ou pas de chapitre


en fait tout ca , ca se passe pour un formulaire de recherche de document dans lequel je peux effectuer une recherche par chapitre avec les documents renvoyes qui seront classées par chapitre


la page dans laquelle j'ecris les requetes est la page qui s'execute lorsque je valide ma recherche en appyer sur "rechercher"

et l'autre endroit ou je veux utiliser la boucle while, c'est pour l'affichage , mais ce tableau j'en ai besoin pour savoir pour chaque chapitre quels sont les documents qui appartienent a ce chapitre
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h41   #12
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Citation:
a page dans laquelle j'ecris les requetes est la page qui s'execute lorsque je valide ma recherche en appyer sur "rechercher"
Citation:
et l'autre endroit ou je veux utiliser la boucle while, c'est pour l'affichage ,
Ce n'est pas la meme page ?
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h41   #13
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
J'ai suivi la conversation... le tube d'aspirine y est passé

Grosso modo tu as un formulaire de recherche et un résultat...

QUESTION : A quoi ressemble ton formulaire ?
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h53   #14
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
comment vous exprimer mon sentiement a ce moment meme , moment ou je suis bloquee sur quelque chose et j'ai envi de pleurer mais l'histoire de l'aspirine, je n'ai jamais ri autant sur un forum d'info , je dirai meme je n'ai jamais ri sur un forum d'info


pour le formulaire, ben c'est un formulaire classique dans lequel j'entre le titre du document cherché, je peux meme chosir parmi une liste deroulante de chapitres pour effectuer la recherche dans un chapitre precis


mais je ne comprends pas trop en quoi ca pourra nous aider


pour la construction de mon tableau a deux dimensions j'ai ecris ca mais ca me renvoie n'emporte quoi


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
if ($_POST['orderby']==2) { // Triés par chapitre
 
	$standard= array();
	$tab=array();
	$i=0;
	while ($row = db_fetch_array($resultat))
	{					
                 $standard[$row['id_standard']]= array_push($tab[$i], $row['NUM_DOC']);
	    $i++;	
 
	}
var_dump($standard);	
}
je cherche une instruction danc ce type la meme si je sais que ce code ci est totalement fauxxxx
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h55   #15
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Ca ne serait pas plus facile de faire une seul requete au niveau de sql plutot que 2 imbriquées ?
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 14h59   #16
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
STOPPPP!! arret des neurones

desole, huntress vous aviez raison des le debut j'ai honte de vous avoir fait tous perdre du temps alors que huntress avait tout dit avant


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
if ($_POST['orderby']==2) { // Triés par chapitre
 
	$standard= array();
 
	$i=0;
	while ($row = db_fetch_array($resultat))
	{		
			$standard[$row['id_standard']][$i]= $row['NUM_DOC'];
			$i++;
		}
			var_dump($standard);	
	}

ca ca marche!!!!!!!!!!!!

merci a tous , desole pour les explications bizarres causant les maux de tete

j'essaierai de me rattraper
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 15h06   #17
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
J'essaye juste de savoir ce que tu as pour savoir où tu vas... mais en lisant ton code... j'comprends rien .

Hmmm... j'sais pas trop quoi faire là... ce que je fais généralement c'est que je "calcule" sur papier ce que je devrais obtenir, ensuite je ponds un code qui contient un affichage pas à pas, genre chaque tour de boucle j'affiche un max d'info. Et ensuite j'analyse la séquence et là je trouve où çà va pas... vois-tu ?
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 15h06   #18
Membre éclairé
 
Avatar de Huntress
 
Inscription : août 2004
Messages : 454
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 454
Points : 339
Points : 339
AaAhaaah merde je me suis torturée une fois de trop, rhhhaaaa c'est balo çà.
__________________

Règle n°1 du forum francophone : Parler le français...
Pas de question technique par MP, le forum est fait pour çà, merci.
Huntress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 15h15   #19
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 132
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 132
Points : 17
Points : 17
^^qu'est ce que je peux faire pour me faire pardonner

en fait vous posez la une question tres importante de la programmation , moi je ne suis qu'une debutante qui a du , a cause de son destion se mettre en seulement quelques mois a faire de l'info en etudiant pleins de langages

le probleme c'est que je n'ai pas eu le temps d'acquerir les bases des bases , oui j'ai fait de l'agorithmique, un petit peu, vraiment peu et je n'ai jamais vraiment appris a ecrire un bon programme avec des regles pour avoir un code bien et plusacile a deboguer

ce forum m'a beaucoup aidé , mais je n'ai pas le temps de lire des livres bien expliqués, mais je crois que je devrai m'organiser mieux

vous voyez meme moi je ne savais pas trop ou j'allais alors des fois ca marche et des fois ca marche pas

mais en regardant les autres ici , ca me permet d voir comment les autres raisonnent et ca m'aide pour mes propres raisonnements

en plus faut etre fort pour lire et comprendre le code de quelqu'un d'autre
eclipse012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 15h21   #20
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Citation:
Envoyé par eclipse012
je n'ai jamais ri autant sur un forum d'info , je dirai meme je n'ai jamais ri sur un forum d'info
C'est que tu ne vas pas sur les bons forums.
Citation:
Nous n'avons rien contre l'humour sympathique [...]
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h01.


 
 
 
 
Partenaires

Hébergement Web