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 :

Comment remplir un array


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut Comment remplir un array
    Bonjour,

    Je n'arrive pas à résoudre mon problème. J'exécute un SELECT dans une base de données qui me retourne des enregistrements. Ces enregistrements sont sous la forme :
    Le souci est que le nom et le prénom peut être le même pour x enregistrements. J'aurai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TOTO TATA 01/01/2009 14:15:12
    TOTO TATA 02/01/2009 14:15:12
    TOTO TATA 03/01/2009 14:15:12
    COUCOU TUTU 01/01/2009 14:15:12
    Je voudrai afficher juste une seule fois le NOM et PRENOM et en dessous les dates et heures correspondants à cette personne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TOTO TATA
    01/01/2009 14:15:12
    02/01/2009 14:15:12
    03/01/2009 14:15:12
     
    COUCOU TUTU
    01/01/2009 14:15:12
    J'ai donc pensé à faire un array imbriqué :
    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
    22
    23
    while ( $row = $tmp->fetch(PDO::FETCH_ASSOC) ) {
    $pats[] = array (
    	''.$prenom.' '.$nom.'' => array (
    	'LASTACCD' => $row['LASTACCD']
    	)
    );
    }
     
    $tmp = null;
     
    				foreach ($pats as $key => $elt) {
    					foreach ($elt as $dkey => $val) {
    							echo "$dkey<br />";
    						foreach ($val as $kt => $vald) {
    							echo "$kt - $vald <br />";
    							/*$template->assign_block_vars('RESULT', array(
    							'LASTACCD' => $row['LASTACCD'],
    							'PRENOM' => $prenom,
    							'NOM' => $nom
    						));*/
    						}
    					}
    				}
    Mais ca ne fonctionne pas. Auriez-vous un petit exemple à me donner ?

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour, je ferais quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $tableau = array();
    $cle = null;
     
    while($row = $tmp->fetch(PDO::FETCH_ASSOC)) {
     
        if($cle == null || strtolower($row['nom'].$row['prenom']) != $cle)
            $cle = strtolower($row['nom'].$row['prenom']);
     
        $tableau[$cle]['date'][] = $row['date'];
        $tableau[$cle]['heure'][] = $row['heure'];
     
    }

  3. #3
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    C'est à peu près ce que je cherche, mais je n'y arrive toujours pas. Le code est maintenant bon, à savoir que j'ai le nom de la personne et en dessous les dates et heures.

    Le souci c'est qu'il me les affiche de la sorte :
    NOM PRENOM
    2010-05-17
    16:19:00

    Au lieu de :
    NOM PRENOM
    2010-05-17 16:19:00

    J'utilise un template avec le moteur de phpbb :
    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
    foreach ($tableau as $key => $elt) {
    					//echo $key."<br />";
    					$template->assign_block_vars('RESULT', array(
    						'NOM' => $key
    					));
    					foreach ($elt as $dkey => $val) {
    							//echo "$dkey<br />";
    						foreach ($val as $kt => $vald) {
    							//echo "$vald <br />";
    							$template->assign_block_vars('RESULT', array(
    								'LASTACCD' => $vald
    							));
    						}
    					}
    				}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="result">
    					<!-- BEGIN RESULT -->
    						{RESULT.PRENOM} {RESULT.NOM} {RESULT.NAISS}
    						{RESULT.LASTACCD}<br />
    					<!-- END TEST -->
    				</div>
    Je ne vois pas comment séparer /ajouter les champs dans l'array pour les afficher comme je le veux.

    Par contre tip top le code car je me rapproche un peu plus de ce que je souhaite faire.

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Si c'est juste un probleme de formatage, tu peux associer tes 2 champs dans une meme dimension. En gros passer de :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $tableau[$cle]['date'][] = $row['date'];
    $tableau[$cle]['heure'][] = $row['heure'];

    à

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tableau[$cle]['date_heure'][] = $row['date'].' '.$row['heure'];

  5. #5
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    J'y avais déjà pensé et tester, mais le souci, c'est que le contenu qui sera affiché dans le .tpl seront dans une table voir même carrément dans des div différentes.

    :s Va falloir que je continue à bosser :s

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/06/2011, 17h33
  2. [DOM] Comment remplir un champ de type array via Javascript ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/04/2008, 12h50
  3. [VB.NET] Comment remplir un Array
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/11/2005, 23h49
  4. [SWT] Comment remplir une Table ?
    Par simon77 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 23/08/2004, 10h31
  5. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 09h37

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