Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2011, 18h01   #1
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 :
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>
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 19h15   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
Salut,

Je te propose ceci :
Code :
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à.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/07/2011, 19h52   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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 :
tab2[$i,$j]=tab1[$j,$i];
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 21h21   #4
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
Bonjour Xyso,

Ça marche, merci...

En fait, j'ai changé mon echo comme cela :
Code :
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
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 22h08   #5
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 :
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...
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 22h55   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
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 :
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 :
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.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/07/2011, 23h06   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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 :
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 :
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 :
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.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/07/2011, 16h22   #8
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
Bonjour Xysyo,
Un grand merci pour tes explications bien détaillées
Tout est clair dans ma tête

bonne journée
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 16h28   #9
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
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 ','
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 18h03   #10
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
il y a un message d'erreur :
Parse error: syntax error, unexpected ','
Normal, ça sortait du four
comme ça, ça ira mieux :
Code :
$tab1[0]=array("id","nom","pepins","diametres");
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/07/2011, 19h29   #11
Membre du Club
 
kiddy asp
Inscription : avril 2010
Messages : 180
Détails du profil
Informations personnelles :
Nom : kiddy asp

Informations forums :
Inscription : avril 2010
Messages : 180
Points : 49
Points : 49
cool

Merci laurentSc
aspkiddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h16.


 
 
 
 
Partenaires

Hébergement Web