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 03/06/2006, 11h43   #1
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Par défaut [SQL] Stocker le resultat d'une requette

Voila j'ai un probleme j'ai des requettes imbriqué mais qui utilise tout ou partie d'un resultat.

Pour l'instant je reeffectue ma requete à chaque fois ce qui fait que j'en ai plus d'une 20aine ce que es tlargement trop

Je voudrais stocker le resultats dans un tableau pour le parcourir comment ca se passe car je recupere toute les données de ma table.

j'aimerais qu'a chaque ligne du tableau numérote de 1 à X corresponde une ligne de la table avec toutes les donnée sytle $tab[$i]['id'],$tab[$i]['membre'] ect....

Le problème est que je n'y arrive pas quelqu'un pour m'aider.
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 11h47   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Alors tout d'abord Bonjour, et j'ai pas compris ce que tu veux faire
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 11h56   #3
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
alors pour parcourir un resultat normalement je fais comme suit

Code :
1
2
while($sous_categorie = mysql_fetch_array($query))
	{$tpl->set_var('S_LIEN',$sous_categorie['lien']);}

Moi ce que je voudrais c'est stocker le resultat entier et le parcourir grace à une boucle for ou je pourrais choisir ou commencer la lecture.

exemple ma ligne de table
table : membre
id,nom,lien

Grace a une requete je recupere les lignes que je souhaite dans un ordre etablit (ca je sais faire)
Mais a la place du while je voudrais un for comment faire?
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h02   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
A moins que je me trompe (je suis pas très réveillé donc je vais tenter), dans ton
Code :
$sous_categorie = mysql_fetch_array($query)
tu obtiens déjà un tableau à deux dimensions, il te reste plus qu'à tenter ta boucle for

msql_fetch_array
Citation:
msql_fetch_array() est une version évoluée de msql_fetch_row(). En plus d'enregistrer les données dans un tableau à indice numérique, il enregistre aussi les données dans un tableau associatif, en utilisant les noms des champs comme clés.
C'est bien ce que tu veux ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h08   #5
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
oui mais comment j'appel la ligne X de mon tableau a la case membre pour en retirer la valeur?

je fais $tab['$x']['membre'] ???
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h11   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Comme il est dit c'est comme un tableau associatif donc oui comme ceci :
Code :
 $sous_categorie[0]['membre']
Le 0 c'est une valeur par défaut mais tu peux mettre un $i
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h16   #7
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
ouais donc c'est ce que j'ai testé depuis un momment mais ca fonctionne pas

Code :
1
2
3
4
5
6
7
8
9
10
11
$querylvlbis = mysql_query("SELECT titre,level FROM ".$bdd."_type_membre ORDER BY level")
 OR die('Erreur !<br/>' .mysql_error());
$lvlbis = mysql_fetch_array($querylvlbis);
 
$j=0;
for($j==3;$j < 9; $j++){
	$tpl->set_var("tv",$lvlbis[$j]['level']);
	$tpl->set_var("tt",$lvlbis[$j]['titre']);
 
	$tpl->parse("TEST","test",true);
}
et du coup j'ai des erreurs

Citation:
Undefined offset: 2 in c:\program files\easyphp1-8\www\friendsnco\module\admin\modifmenu.php on line 170

Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\friendsnco\module\admin\modifmenu.php on line 171

Notice: Undefined offset: 3 in c:\program files\easyphp1-8\www\friendsnco\module\admin\modifmenu.php on line 170

Notice: Undefined offset: 3 in c:\program files\easyphp1-8\www\friendsnco\module\admin\modifmenu.php on line 171

etc......
Donc ca me dit que ca existe pas l'enregistrement mais il existe bien donc je pige pas.
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h28   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tu as testé en affichage juste un champ du tableau ?
Par exemple $tab[0]['membre'] ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h33   #9
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
ca m'affiche 0 ou v ou rien j'ai testé tout les champs

alors que ca devrais afficher un mot
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h45   #10
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Laisses le while pour remplir le tableau avec :
Code :
tu mets dans la boucle  $lvlbis[] = mysql_fetch_row($querylvlbis);
ou tu fais comme l'exemple ci dessous :
Code :
1
2
3
while ($row = mysql_fetch_row($query)) {
       $return[] = $row;
     }
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h49   #11
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Si je laisse le while je reviens a mon probleme de debut qui est que je veux pas parcourir tout l'enregistrement et que je ne peux pas reutiliser le tableau plus loin dans mon code.

EN fait ma requete SQL me renverra au maximum 11 lignes c'est a dire toute.

Mais je reutilise plusieurs fois les valeur de certaines des 11lignes qui peuvent etre classé.

Et pour eviter une requete a chaque fois pour recupérer les lignes que je veux je veux toutes les stocker dans un tableau pour les recupérer quand je veux dans le codes sans refaire une requete.
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h57   #12
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Alors je reprends tu mets le code comme l'exemple et après tu peux faire ta boucle for.

La boucle while c'est pour remplir ton tableau correctement, afin qu'il soit utilisable plus tard
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 13h32   #13
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
j'ai resolu mon probleme ca correspond un peu a ce que tu m'as dis merci

voila le code pour ceux que ca interesse

creation dans un premier temps d'un tableau associatif
Code :
1
2
3
4
5
6
7
$querylvl = mysql_query("SELECT * FROM ".$bdd."_type_membre ORDER BY level") 
OR die('Erreur !<br/>' .mysql_error());
$nbtype = mysql_num_rows($querylvl);
$tab = array();
while($lvl = mysql_fetch_array($querylvl)){
	$tab[$lvl['level']] = $lvl['titre'];
}
puis utilisation du tablea
Citation:
$j = 0;
for($j=$lvlc+1; $j<$nbtype; $j++){
$tpl->set_var('L_VALUE_M',$j);
$tpl->set_var('L_TITREM',$tab[$j]);

if($j == $lvlsc)
$tpl->set_var('SELECT','SELECTED');
else
$tpl->set_var('SELECT','');

$tpl->parse("S_C_LVLM","S_C_LEVELM",true);
}
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 13h47   #14
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Si ca fonctionne
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2006, 11h52   #15
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
ouais ca fonctionne mais je pensais comme toi qu'un simple $tab[$i]['nomchamp'] suffisait.

si quelqu'un sait comment faire directement c'est le bienvenue.
zulot 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 15h57.


 
 
 
 
Partenaires

Hébergement Web