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 :

résultats d'enregistrement : 2e enregistrement dans 3e colonne et 3e enregistrement dans 4e [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut résultats d'enregistrement : 2e enregistrement dans 3e colonne et 3e enregistrement dans 4e
    Bonjour
    J’ai un bd (fruit) qui contient une table (tb_detail) et 4 champs/colonnes :
    fld_id int
    fld_nom
    fld_pepins
    fld_diametres
    Je veux afficher les résultats dans une table HTML et chaque enregistrement dans une colonne et chaque colonne a 4 lignes


    |----Nom-|-pomme| pêche |
    x---------X-------X-------x
    |ID-------|1------- |2-----|
    |Pépins---|5--------|1-----|
    |diamètres|6--------|5-----|
    x----------x--------x------x
    1er colonne : contient de « label » : Nom, Id, Pépins, Diamètres…
    2e colonne c’est pour 1er enregistrement, 2e c’est pour 3e enregistrement, etc.
    Avec mon code, je n’arrive pas mettre 2e enregistrement dans 3e colonne et 3e enregistrement dans 4e colonne, etc.
    Comment je peux faire ?

    Voici mon code :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    <table width="300" border="1" cellspacing="0" cellpadding="0">
    <?php
     
    	include"bd_db/selection_test.php";
     
    	  		$req=  " select fld_id,fld_nom,fld_pepins,fld_diametres FROM $table_db  ";
    	  		$rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;
     
     
     
     
     
    			while($row=mysql_fetch_row($rep)){
    				$fld_id=$row[0];
    				$fld_nom=$row[1];
    				$fld_pepins=$row[2];
    				$fld_diametres=$row[3];
     
     
    				echo "
      <tr>
        <td>&nbsp;</td>
        <td>$fld_nom</td>
      </tr>
      <tr>
        <td>id</td>
        <td>$fld_id</td>
      </tr>
      <tr>
        <td>pépins</td>
        <td>$fld_pepins</td>
      </tr>
      <tr>
        <td>diamètres</td>
        <td>$fld_diametres</td>
      </tr>
    "  ;
    		 										}	
     
     
     
     
    				 ?>
     
     </table>

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Je te propose ceci :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
     
    include"bd_db/selection_test.php";
     
    $sql = "SELECT fld_id, fld_nom, fld_pepins, fld_diametres FROM $table_db;";
    $rep = mysql_query($req, $cnx) or die( mysql_error() ) ;
     
    $i = 0;
     
    while($row = mysql_fetch_row($rep)) {
       $header[++$i]     = '<th>' . $row[1] . '</th>';
       $dataId[$i]       = '<td>' . $row[0] . '</td>';
       $dataPepins[$i]   = '<td>' . $row[2] . '</td>';
       $dataDimetres[$i] = '<td>' . $row[3] . '</td>';
    }
     
    $header       = implode("\n", $header);
    $dataId       = implode("\n", $dataId);
    $dataPepins   = implode("\n", $dataPepins);
    $dataDimetres = implode("\n", $dataDimetres);
     
    echo <<<SC
    <table width="300" border="1" cellspacing="0" cellpadding="0">
       <thead>
          <tr>
             <th>Nom</th>
             $header
          </tr>
       </thead>
       <tbody>
          <tr>
             <td>ID</td>
             $dataId
          </tr>
          <tr>
             <td>Pépins</td>
             $dataPepins
          </tr>
          <tr>
             <td>Diamètres</td>
             $dataDimetres
          </tr>
       </tbody>
    </table>
    SC;
     
    ?>
    Bon ça sort du four, je n'ai du tout testé mais l'idée est là.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Je ne te propose qu'une idée : 2 tables html ; dans la première chaque ligne contient un enregistrement : ça, c'est simple à faire : on lit la table et chaque ligne de la table reçoit un nouvel enregistrement. La 2e table, c'est la transposée de la 1e : on parcourt la 1e et en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab2[$i,$j]=tab1[$j,$i];

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Bonjour Xyso,

    Ça marche, merci...

    En fait, j'ai changé mon echo comme cela :
    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
    echo "
    <table width=\"300\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
       <thead>
          <tr>
             <th>Nom</th>
             $header
          </tr>
       </thead>
       <tbody>
          <tr>
             <td>ID</td>
             $dataId
          </tr>
          <tr>
             <td>Pépins</td>
             $dataPepins
          </tr>
          <tr>
             <td>Diamètres</td>
             $dataDimetres
          </tr>
       </tbody>
    </table>
    "  ;

    Est-ce que je peux poser des questions pour apprendre un peu plus...

    $1 est un compteur qui est 0 au départ...

    [++$i] que veut dire ?

    alors quand tu écris (à la ligne 11 de ton code [++$i], est-ce que l'on ajoute 2 fois ?
    Dans tes fonctions «*implode()*» \n veut dire va à la ligne suivante ?

    Merci encore pour ton aide

    Bonne soirée

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    2 tables html ;
    Bonjour laurentSc,

    Merci pour tes idées, super sympa...
    Par contre, je n'ai pas compris ce que tu veux dire :

    2 tables html?
    Est ce que tu veux dire ainsi :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
    echo "<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
    		<tr>
    			<td>
    			<table width=\"300\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
    			<tr>
    				<td>&nbsp;</td>
    			  </tr>
    			  <tr>
    				<td>id</td>
    			  </tr>
    			  <tr>
    				<td>pépins</td>
    			  </tr>
    			  <tr>
    				<td>diamètres</td>
    			  </tr>
    		 </table></td>
    		  <td align=\"left\" valign=\"top\">"  ;
     
     
    	include"bd_db/selection_test.php";
     
    	  		$req=  " select fld_id,fld_nom,fld_pepins,fld_diametres FROM $table_db  ";
    	  		$rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;
     
     
     
     
     
    			while($row=mysql_fetch_row($rep)){
    				$fld_id=$row[0];
    				$fld_nom=$row[1];
    				$fld_pepins=$row[2];
    				$fld_diametres=$row[3];
     
     
    				echo "<table width=\"300\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" style=\"float:left\">
      <tr>
        <td>$fld_nom</td>
      </tr>
      <tr>
        <td>$fld_id</td>
      </tr>
      <tr>
        <td>$fld_pepins</td>
      </tr>
      <tr>
        <td>$fld_diametres</td>
      </tr>
      </table>
    "  ;
    }	
    echo "</td>
      </tr>
    </table>"  ;
    	  ?>

    Si oui, ce n'est pas joli parce que s'il y a une longue description dans un champ (par exemple fld_nom) toutes les lignes vont décaler...

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par aspkiddy Voir le message
    $i est un compteur qui est 0 au départ...

    [++$i] que veut dire ?

    alors quand tu écris (à la ligne 11 de ton code [++$i], est-ce que l'on ajoute 2 fois ?
    veut dire que l'on incrémente de 1 la valeur de $i avant son utilisation. En clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $i = 0;
    $header[++$i] # calcule $i = $i + 1 (soit $i = 1 au premier appel) avant de l'utiliser comme clef du tableau $header
    Inversement :
    veut dire que l'on incrémente de 1 la valeur de $i après son utilisation. En clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $i = 0;
    $header[$i++] # utilise $i comme clef du tableau $header et ensuite calcule  $i = $i + 1
    Citation Envoyé par aspkiddy Voir le message
    Dans tes fonctions «*implode()*» \n veut dire va à la ligne suivante ?
    Oui, c'est ça.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Non, ce n'était pas mon idée : là, en gros, tu as 2 tables imbriquées et pas moi ; je te donne le code de mon idée, mais comme a dit Xysyo, "ça sort du four" (mais je corrige tout de suite : ce ne sont pas des tables html mais des tables PHP) :
    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
     
    $req=  " select fld_id,fld_nom,fld_pepins,fld_diametres FROM $table_db  ";
    $rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;
     
    $tab1[0]=("id","nom","pepins","diametres");
    $i=1;
    while($row=mysql_fetch_row($rep)){
          $fld_id=$row[0];
          $fld_nom=$row[1];
          $fld_pepins=$row[2];
          $fld_diametres=$row[3];
          $tab[$i++]=array($fld_id,$fld_nom,$fld_pepins,$fld_diametres);
    }
    $nb_rows=$i-1;
    for ($i=0;$i<$nb_rows;$i++)
         for ($j=0;$j<4;$j++)
             $tab2[$j][$i]=$tab1[$i][$j];
    et comme tu veux afficher ça dans une table html, la fin (à partir de la ligne 15) doit s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
    <?php
    for ($i=0;$i<$nb_rows;$i++)
    {
    echo '<tr>';
    for ($j=0;$j<4;$j++)
        echo '<td>'.$tab1[$i][$j].'</td>';
    echo '</tr>';
    }?>
    </table>
     
    }
    et juste une remarque sur ton code : au lieu d'échapper sans arrêt le ", tu aurais pû écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <?php
    echo '<table width="100%" border="1" cellspacing="0" cellpadding="0">
    		<tr>
    			<td>
    			<table width="300" border="1" cellspacing="0" cellpadding="0">...';
    En gros, tu remplaces les doubles quotes du echo par des simples quotes.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Bonjour Xysyo,
    Un grand merci pour tes explications bien détaillées
    Tout est clair dans ma tête

    bonne journée

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Bonjour laurentSc,

    Super sympa...

    Citation Envoyé par laurentSc Voir le message
    et juste une remarque sur ton code : au lieu d'échapper sans arrêt le ", tu aurais pû écrire(...) ]En gros, tu remplaces les doubles quotes du echo par des simples quotes.
    Merci pour cette idée qui me sauve beaucoup de temps...

    Bonne journée...

    PS. dans ton code (à la ligne 5)
    Citation Envoyé par laurentSc Voir le message
    $tab1[0]=("id","nom","pepins","diametres");.
    il y a un message d'erreur :
    Parse error: syntax error, unexpected ','

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    il y a un message d'erreur :
    Parse error: syntax error, unexpected ','
    Normal, ça sortait du four
    comme ça, ça ira mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab1[0]=array("id","nom","pepins","diametres");

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    cool

    Merci laurentSc

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/06/2014, 22h04
  2. Réponses: 6
    Dernier message: 24/05/2014, 12h38
  3. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  4. Chercher une valeur dans une colonne date du jour dans un fichier
    Par philippe34130 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/08/2013, 17h41
  5. [XL-2003] Sélectionner une liste dans une colonne et la reporter dans un autre fichier
    Par bentor22 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 29/01/2013, 14h22

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