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 :

Récupération des données d'une table [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut Récupération des données d'une table
    Bonjour,
    je suis débutante en PHP/MySql et j'aurais besoin d'un petit coup de main.
    Voilà mon problème. J'aimerais créer un tableau qui comporterait 3 colonnes et x ligne. Je récupererais mes données de ma base et dés que j'aurais atteint les 3 colonnes, je créerais une nouvelle ligne.
    Voilà comment j'ai essayé de faire ça mais bien sur ça me fait predre des données:

    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
    <table>
    <?php
    while( $resultat = mysql_fetch_assoc($requete) )
    {
     echo '<tr>';
     $i=0;
     while (( $resultat = mysql_fetch_assoc( $requete )) && ($i<3))
      {
         echo '<td>';
         echo '$resultat["titre"].';
         echo '</td>';
         $i++;
      }
    echo '</tr>';
    }
    ?>
    </table>
    Ce que j'aimerais c'est à la place de ma première boucle while qui récupère une ligne de données de ma base, faire simplement un test pour savoir si ma base contient encore des données. Mais comme je dis, je débute et je ne sais pas comment faire.
    Merci

  2. #2
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    La deuxième boucle while est inutile, puisque fetch_assoc récupère un tableau contenant l'ensemble des élément de chaque ligne du résultat de la requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
    <?php
    while( $resultat = mysql_fetch_assoc($requete) )
    {
    echo '<tr>';
         echo '<td>'.$resultat["titre"].'</td>';
         echo '<td>'.$resultat["champ2"].'</td>';
         echo '<td>'.$resultat["champ3"].'</td>';
    echo '</tr>';
    }
    ?>
    </table>

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut
    Ah oui, mais la tu changes ce que je veux faire.
    Mon but n'est pas de créer un tableau avec 3 colonnes qui contiendraient chacune un champs d'un enregistrement (et ou donc chaque ligne correspondrait à un enregistrement complet) mais plutot de créer un tableau avec 3 colonnes qui contiendraient chacune tous les champs d'un engregistrement (donc chaque ligne correspondrait à 3 enregistrements complet). Donc pour chaque colonne je suis obligée de passée par la boucle while car je veux l'enregistrement suivant.
    Sinon ce serait trop facile

    Je me rends compte que ce n'est peut-être pas très clair ce que je raconte donc voilà un shéma:
    Avec ta solution, je vais obtenir ça:
    -----------------------------------------------
    | titreEnreg1 | champs1Enreg1 | champs2Enreg1 |
    -----------------------------------------------
    | titreEnreg2 | champs1Enreg2 | champs2Enreg2 |
    -----------------------------------------------
    | titreEnreg3 | champs1Enreg3 | champs2Enreg3 |
    -----------------------------------------------
    Moi ce que je veux c'est ça:
    --------------------------------------------------
    | titreEnreg1 | titreEnreg2 | titreEnreg3 |
    | champs1Enreg1 | champs1Enreg2 | champs1Enreg3 |
    | champs2Enreg1 | champs2Enreg2 | champs2Enreg3 |
    --------------------------------------------------
    | titreEnreg4 | titreEnreg5 | titreEnreg6 |
    | champs1Enreg4 | champs1Enreg5 | champs1Enreg6 |
    | champs2Enreg4 | champs2Enreg5 | champs2Enreg6 |
    --------------------------------------------------

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    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
    <table>
    <?php
    $i=0;
    while( $resultat = mysql_fetch_assoc($requete) )
    {
        if ($i=0){
            echo '<tr>';
        }
        echo '<td>';
        echo $resultat;
        echo '</td>';
        $i++;
        if ($i=3) {
             echo '</tr>'
             $i=0
         }
    }
    ?>
    </table>
    Je ne sais pas trop si ça fonctionne...

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut
    Citation Envoyé par Borowsky Voir le message
    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
    <table>
    <?php
    $i=0;
    while( $resultat = mysql_fetch_assoc($requete) )
    {
        if ($i=0){
            echo '<tr>';
        }
        echo '<td>';
        echo $resultat;
        echo '</td>';
        $i++;
        if ($i=3) {
             echo '</tr>'
             $i=0
         }
    }
    ?>
    </table>
    Je ne sais pas trop si ça fonctionne...
    J'ai pas testé mais ça ne va pas fonctionner ...
    Il va initialiser i à 0, se lancer dans la boucle while me mettre mon premier <tr> et mes 3 <td>enregistrement</td> puis le </tr> puis il m'affichera d'autre <td>enregistrement</td> sans meme qu'une ligne ait été crée et ensuite sortira de la boucle et s'arretera.
    Il ne reviendra pas à mon i pour le remettre à 0 et refaire une boucle.
    En gros, il va m'afficher que 1 ligne comme il faut puis des <td>enrgistrement</td> qui n'auront rien à faire là et puis s'arretera...

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut
    Ah, je pense avoir trouvé mais je ne suis pas chez moi donc je ne sais pas tester. Je verrai au soir.
    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
    <table>
    <?php
    while( $resultat = mysql_fetch_assoc($requete) )
    {
     echo '<tr>';
     $i=0;
         echo '<td>';
         echo '$resultat["titre"].';
         echo '</td>';
    	 $i++;
     while (( $resultat = mysql_fetch_assoc( $requete )) && ($i<3))
      {
         echo '<td>';
         echo '$resultat["titre"].';
         echo '</td>';
         $i++;
      }
    echo '</tr>';
    }
    ?>
    </table>

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Citation Envoyé par Alixe80 Voir le message
    J'ai pas testé mais ça ne va pas fonctionner ...
    Il va initialiser i à 0, se lancer dans la boucle while me mettre mon premier <tr> et mes 3 <td>enregistrement</td> puis le </tr> puis il m'affichera d'autre <td>enregistrement</td> sans meme qu'une ligne ait été crée et ensuite sortira de la boucle et s'arretera.
    Il ne reviendra pas à mon i pour le remettre à 0 et refaire une boucle.
    En gros, il va m'afficher que 1 ligne comme il faut puis des <td>enrgistrement</td> qui n'auront rien à faire là et puis s'arretera...
    Je ne suis pas du tout persuadé de ce que tu racontes... le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while( $resultat = mysql_fetch_assoc($requete) )
    te renvoie bien une ligne de résultat ? avec tous les champs ? et ce jusqu'a ce que tu n'ais plus de résultats ?

    Donc la boucle, il la fera jusqu'a temps que tu n'ais plus de lignes dans le resultat de ta requete...
    Et puis lorsqu'il va mettre le </tr>, le $i est réinitialisé à 0 donc au passage suivant dans le "while" il va te remettre un <tr>... Enfin bon...

    Soit je comprend pas trop ce que tu veux faire, soir c'est très tordu, soit le while m'échappe un peu...

  8. #8
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Citation Envoyé par Alixe80 Voir le message
    Je me rends compte que ce n'est peut-être pas très clair ce que je raconte donc voilà un shéma:
    Je crois avoir compris enfin on verra
    Un truc comme cela avec quelques modifs devrait peut être te convenir ? à voir (je n'ais pas testé)?
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <table>
    <?php
    $nb = 3;
    $res = Array();
     
    $nb_Ligne = mysql_num_rows($requete);
     
    for( $j = 0 ; $j < $nb_Ligne ; $j += $nb){
     
    	for( $i = 0 ; $i < $res ; $i++ ){
     
    		$res[$i] = mysql_fetch_assoc($requete) or die("Fin de table");
    	}
     
    	echo '<tr>';
    		echo '<td>'.$resultat[0]["titre"].'</td>';
    		echo '<td>'.$resultat[0]["champ2"].'</td>';
    		echo '<td>'.$resultat[0]["champ3"].'</td>';
    	echo '</tr>';
     
    	echo '<tr>';
    		echo '<td>'.$resultat[1]["titre"].'</td>';
    		echo '<td>'.$resultat[1]["champ2"].'</td>';
    		echo '<td>'.$resultat[1]["champ3"].'</td>';
    	echo '</tr>';
     
    	echo '<tr>';
    		echo '<td>'.$resultat[2]["titre"].'</td>';
    		echo '<td>'.$resultat[2]["champ2"].'</td>';
    		echo '<td>'.$resultat[2]["champ3"].'</td>';
    	echo '</tr>';
    }
     
     
     
    ?>
    </table>

  9. #9
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut
    Citation Envoyé par riete Voir le message
    Je crois avoir compris enfin on verra
    Un truc comme cela avec quelques modifs devrait peut être te convenir ? à voir (je n'ais pas testé)?
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <table>
    <?php
    $nb = 3;
    $res = Array();
     
    $nb_Ligne = mysql_num_rows($requete);
     
    for( $j = 0 ; $j < $nb_Ligne ; $j += $nb){
     
    	for( $i = 0 ; $i < $res ; $i++ ){
     
    		$res[$i] = mysql_fetch_assoc($requete) or die("Fin de table");
    	}
     
    	echo '<tr>';
    		echo '<td>'.$resultat[0]["titre"].'</td>';
    		echo '<td>'.$resultat[0]["champ2"].'</td>';
    		echo '<td>'.$resultat[0]["champ3"].'</td>';
    	echo '</tr>';
     
    	echo '<tr>';
    		echo '<td>'.$resultat[1]["titre"].'</td>';
    		echo '<td>'.$resultat[1]["champ2"].'</td>';
    		echo '<td>'.$resultat[1]["champ3"].'</td>';
    	echo '</tr>';
     
    	echo '<tr>';
    		echo '<td>'.$resultat[2]["titre"].'</td>';
    		echo '<td>'.$resultat[2]["champ2"].'</td>';
    		echo '<td>'.$resultat[2]["champ3"].'</td>';
    	echo '</tr>';
    }
     
     
     
    ?>
    </table>
    lol, merci pour ton effort mais ce n'est tjrs pas ce que je veux
    De un, je ne comprends pas tout ton code. Par exemple à quoi sert cette ligne isolée? $res sert à quoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	for( $i = 0 ; $i < $res ; $i++ ){
     
    		$res[$i] = mysql_fetch_assoc($requete) or die("Fin de table");
    	}
    Et sinon, et bien, tu fais la meme chose qu'avant, à savoir me mettre tous les champs de chaque enregistrement dans une ligne de 3 colonnes et ce que je veux, c'est tous les champs de chaque enregistrment dans une colonnes et il y aurait 3 colonnes par ligne.

  10. #10
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Ooooops je me suis gauffré, la variable de comparaison du for devait être $nb et non $res !!!
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
    $nb = 3;
    $res = Array();
     
    $nb_Ligne = mysql_num_rows($requete);
     
    for( $j = 0 ; $j < $nb_Ligne ; $j += $nb){
     
    	for( $i = 0 ; $i < $nb ; $i++ ){
     
    		$res[$i] = mysql_fetch_assoc($requete) or die("Fin de table");
    	}
     
    	echo '<tr>';
    		echo '<td>'.$resultat[0]["titre"].'</td>';
    		echo '<td>'.$resultat[0]["champ2"].'</td>';
    		echo '<td>'.$resultat[0]["champ3"].'</td>';
    	echo '</tr>';
     
    	echo '<tr>';
    		echo '<td>'.$resultat[1]["titre"].'</td>';
    		echo '<td>'.$resultat[1]["champ2"].'</td>';
    		echo '<td>'.$resultat[1]["champ3"].'</td>';
    	echo '</tr>';
     
    	echo '<tr>';
    		echo '<td>'.$resultat[2]["titre"].'</td>';
    		echo '<td>'.$resultat[2]["champ2"].'</td>';
    		echo '<td>'.$resultat[2]["champ3"].'</td>';
    	echo '</tr>';
    }
     
     
     
    ?>
    </table>
    Tu vas peut être mieux comprendre.
    Sinon, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res[$i] = mysql_fetch_assoc($requete) or die("Fin de table");
    permet de récupérer 3 variable de type tableaux dans le tableau $res. Il te suffit ensuite d'y accéder en appelant le tableau que tu veux par sont indice et ensuite la colonne que tu souhaite.
    Si tu ne parviens pas à le faire fonctionner, je ferais le test moi même.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/10/2014, 12h19
  2. [AC-2007] récupération des données d'une table
    Par gerarddurand dans le forum VBA Access
    Réponses: 7
    Dernier message: 22/12/2011, 18h59
  3. Récupération des données d'une table
    Par honey0 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 12/07/2011, 14h19
  4. récupération des données d'une table dans une page jsp
    Par sihamsisim dans le forum Struts 1
    Réponses: 28
    Dernier message: 22/05/2008, 19h01
  5. [MySQL] Récupération des données dans une table
    Par doudom dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/07/2007, 19h59

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