Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 09/04/2008, 10h30   #1
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 139
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 139
Points : 45 308
Points : 45 308
Par défaut [Tableaux] foreach sur un resultat de query ?

Bon pour faire clair voici la requete:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
$sqlString="SELECT c.id_comm as IdUser, 
					c.nom_comm as Nom,
					c.fonc_comm as Fonction,
					c.titre_comm as Titre,
					c.adr_comm as Adresse,
					c.ag_comm as Agence,
					c.tc_comm as BinomeSed,
					c.fixe_comm as TelFixe,
					c.mob_comm as TelMob,
					c.fax_comm as Fax,
					c.mail_comm as Email,
					c.pass_comm as PassWord,
					c.access_comm as Droits,
					date_format(c.modif_comm,'%d-%m-%Y') as DateModif,
					z.dept_zone as Dept
					FROM contacts c
					LEFT OUTER JOIN zonage z 
					ON c.id_comm=z.idcomm_zone
					WHERE id_comm='".$user_id."'".
					"ORDER BY Dept";
et voici ce que je voudrais faire:
Basculer le resultat dasn un array:

Code :
1
2
3
4
5
6
7
 
$TabComm=array();
$TempComm=-1;
while($row = mysql_fetch_assoc($sqlResult)) {
if($TempComm!=$row['IdUser']){$TempComm=$row['IdUser'];
		$TabComm[$TempComm]=array("id" =>$row['IdUser'],"nom"=>$row['Nom'],"fonction"=>$row['Fonction'],"titre"=>$row['Titre'],"adresse"=>$row['Adresse'],"agence"=>$row['Agence'],"sedentaire"=>$row['BinomeSed'],"tel"=>$row['TelFixe'],"mob"=>$row['TelMob'],"fax"=>$row['Fax'],"mail"=>$row['Email'],"pass"=>$row['PassWord'],"droits"=>$row['Droits'],"modif"=>$row['DateModif'],"depts"=>$row['Dept']) ;}
else {	 $TabComm[$TempComm]["depts"].=','.$row['Dept'];	}
J'aurais voulu savoir si je pouvais simplifier ce code avec un foreach:
je n'arrive pas à le mettre sur pied ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h45   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
sinon cela reste à tester :
Code :
1
2
3
4
5
 
while($row = mysql_fetch_assoc($sqlResult)) {
if($TempComm!=$row['IdUser']){$TempComm=$row['IdUser'];
		$TabComm[$TempComm]=$row;
else {	 $TabComm[$TempComm]["depts"].=','.$row['Dept'];	}
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 11h47   #3
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Le foreach ne fonctionnera pas car cela restera sur le premier élément.
Le foreach travaille sur une copie de tableau déjà existant.
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 12h08   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 139
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 139
Points : 45 308
Points : 45 308
merci boo mon truc fonctionne je transfère bien dasn un array avec le code que j'ai donné, je voulais juste savoir on pouvait boucler avec un for each sur un resultat de requete

La reponse de Gats semble vouloir dire qu'il n'y a qu'avec le while ...

sinon on peut positionner le pointeur sur un enregistrement ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 12h21   #5
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Citation:
Envoyé par SpaceFrog Voir le message
sinon on peut positionner le pointeur sur un enregistrement ?
oui avec : (un tableau en paramètre)
next(), current(), end(), prev(), reset(), each(), key()
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 12h28   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
ou pour les enregistrements retournés par mysql_query : mysql_data_seek et mysql_field_seek
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 13h08   #7
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Effectivement, je suis resté dans les array ^^
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 13h23   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 139
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 139
Points : 45 308
Points : 45 308
oui merci Cel la question portait plus sur les retours de requête...

Donc pour clore, pas d'autre solution pour basculer le contenu du result dasn un array que de boucler en while et passer en détail mes champs ... ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 14h28   #9
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
J'ai bien une idée, mais c'est pas très propre et ça n'apporterait rien :
Code :
1
2
3
4
5
$foo = mysql_num_rows($query);
for($i = 0; $i < $foo, $i++) {
  mysql_data_seek ...
  blablabla
}
C'est le seul moyen à ma connaissance pour éviter le while.
guidav 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 15h13.


 
 
 
 
Partenaires

Hébergement Web