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

PHP & Base de données Discussion :

incrementer un tableau dans une boucle [MySQL]


Sujet :

PHP & Base de données

  1. #1
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut incrementer un tableau dans une boucle
    Bonjour,
    Je voudrai savoir comment incrémenter un tableau a chaque enregistrement lu dans une boucle.
    J'ai un code qui ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    .
    .
    mysql_select_db($database_connection, $connection);
    $query_Recordset = "SELECT * FROM Matable  ORDER BY index ASC";
    $Recordset = mysql_query($query_Recordset, $connection) or die(mysql_error());
    $row_Recordset = mysql_fetch_assoc($Recordset) ;
    $tableau = array($row_Recordset['Z1'], $row_Recordset['Z2'], $row_Recordset['Z3']);
    do {
    .
    .
    while ($row_Recordset = mysql_fetch_assoc($Recordset)); 
    ?>
    Quand je fais ça ou qu'a l'interieur du do je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tableau[0] = $row_Recordset['Z1'];
    $tableau[1] = $row_Recordset['Z2'];
    $tableau[2] = $row_Recordset['Z3'];
    a la fin dans mon tableau je n'ai que l'information du dernier enregistrement alors que je voudrais les infos de tous les enregistrements!
    Merci de m'aider

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $i = 0;
    do {
    $tableau[$i]['Z1'] = $row_Recordset['Z1'];
    $tableau[$i]['Z2'] = $row_Recordset['Z2'];
    $tableau[$i]['Z3'] = $row_Recordset['Z3'];
    $i++;
    while ($row_Recordset = mysql_fetch_assoc($Recordset));
    En fait le principe est que actuellement, tu réécris toujours dans ton tableau a la case 1/2/3.
    Donc en rajoutant une dimension a ton tableau, tu obtiens pour chaque ligne ($i) tes trois enregistrements (Z1, Z2, Z3).

  3. #3
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour Rakken,
    Merci de ta réponse.
    Une question par rapport à ta solution:
    $i prend t'elle la position [0] dans le tableau ce qui fait un tableau avec une zone supplémentaire ou est-ce un indice ne figurant pas dans le tableau.
    A+

  4. #4
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Tel que c'est écrit, $tableau[0] contient ton premier enregistrement.
    Mais si tu preferes, tu peux intialiser $i directement à 1 pour commencer à la case 1.
    Les tableaux fonctionnent par un système de clef => valeur.
    Quelque soit le contenu de clef (0, 1, 'test', 'test01', ...), quand tu liras ton tableau et que tu demandera le contenu de la case $clef, il te retournera ce que as rentré comme valeur.

  5. #5
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Je pensais que tel que c'était écrit $tableau[0] contenait soit $row_Recordset['Z1'],
    c'est a dire un champ de mon premier enregistrement et nom pas un enregistrement complet, soit $i ???

  6. #6
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Mon post précédent expliquait brièvement le fonctionnement général des tableaux.
    Dans ce cas précis, en fait, $tableau[$i] contient lui même un tableau à trois entrées qui sont Z1, Z2 et Z3.
    Donc pour acceder à la premiere ligne renvoyé par ta base et l'élément Z1, tu écrits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $tableau[0]['Z1'];
    Pour t'aider a comprendre, tu peux afficher le contenu complet de ton tableau comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo ('<pre>');
    print_r($tableau);
    echo ('</pre>');
    Le print_r te fait un echo récursif et les balises pre te font une mise en forme pour que l'affichage soit plus agréable à lire.

  7. #7
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    merci pour ta réponse très complète.
    Je vais tester
    Bonne journée

  8. #8
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    J'ai un petit probleme:
    A la définition du tableau
    $tableau = array($row_Recordset['Z1'], $row_Recordset['Z2'], $row_Recordset['Z3']);
    cela me prend 3 index du tableau et j'ai
    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
     
    Array
    (
        [0] => 2
        [1] => 207276
        [2] => 20294
        [3] => Array
            (
                [Z1] => 4
                [Z2] => 104699
                [Z3] => 20265
            )
     
        [4] => Array
            (
                [Z1] => 5
                [Z2] => 132449
                [Z3] => 20507
    etc..

    Pourquoi ?

  9. #9
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Affiche le contenu de $row_Recordset['Z1'], $row_Recordset['21'] et $row_Recordset['Z3'], ca devrait t'aider.

    Sinon pour le fonctionnement même des tableaux, car c'est visiblement ca qui te pose problème, n'hésite pas a consulter la faq phpla doc, tu y trouveras plein d'exemple pour bien comprendre comment ca marche.

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

Discussions similaires

  1. comment mettre un tableau dans une boucle et sur la meme page
    Par pikkolina dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 24/05/2009, 19h21
  2. Remplir un tableau dans une boucle
    Par floctc dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2009, 10h23
  3. [PHP 5.2] créer un tableau dans une boucle
    Par Giantrick dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2009, 15h52
  4. incrementation de 2 dans une boucle for
    Par scorpion.os dans le forum Flash
    Réponses: 4
    Dernier message: 26/01/2007, 16h09
  5. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23

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