IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] foreach sur un resultat de query ?


Sujet :

Langage PHP

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut [Tableaux] foreach sur un resultat de query ?
    Bon pour faire clair voici la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    sinon cela reste à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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'];	}

  3. #3
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Le foreach ne fonctionnera pas car cela restera sur le premier élément.
    Le foreach travaille sur une copie de tableau déjà existant.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    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 ?

  5. #5
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    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()

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    ou pour les enregistrements retournés par mysql_query : mysql_data_seek et mysql_field_seek

  7. #7
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Effectivement, je suis resté dans les array ^^

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    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 ... ?

  9. #9
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    J'ai bien une idée, mais c'est pas très propre et ça n'apporterait rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Question sur foreach
    Par jpascal dans le forum Langage
    Réponses: 5
    Dernier message: 09/04/2008, 11h42
  2. [Tableaux] Array sur deux colonnes et foreach..
    Par shadeoner dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2006, 08h46
  3. Réponses: 1
    Dernier message: 11/03/2006, 21h19
  4. [FLASH MX 2004] Traitements sur le resultat d'un AS.
    Par Med_Prog dans le forum Flash
    Réponses: 8
    Dernier message: 21/11/2004, 13h59
  5. Réponses: 7
    Dernier message: 21/04/2004, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo