Page 1 sur 1

afficher les données dans un tableau

Posté : 13 avr. 2017, 18:15
par ytzmi
bonjour

j'aimerai afficher les données d'une table mysql dans un tableau, plutôt que de les avoir les unes sous les autres.

je voulais un tableau de 4 colonnes et les lignes qui sont indéfinies.
j'ai trouvé un tuto qui me paraissait simple, mais il est évident que je ne l'ai pas compris... :oops:

voici mon code
// $NbreData : le nombre de données à afficher
// $NbrCol : le nombre de colonnes
// $NbrLigne : calcul automatique AVANT affichage
// -------------------------------------------------------
// on se connecte à notre base
				mysql_connect ("localhost", "id", "mdp");
				mysql_select_db ("table");	
//tableau à 4 colonnes
$NbrCol = 4;
// requête
$sql = "SELECT ref_a, lieu_a, auteurdate_a, url_a FROM table ORDER BY ref_a";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// $NbreData : le nombre de données à afficher
// $NbrCol : le nombre de colonnes
// $NbrLigne : calcul automatique a la FIN
//
$result = mysql_query($sql);
$NbreData = mysql_num_rows($result);
// affichage
$NbrLigne = 0;
if ($NbreData != 0) {
$j = 1;
echo '<table border="1">';
while ($data = mysql_fetch_array($req)) {
 $ref = $data['ref_a'];
$url = $data['url_a'];
$lieu = $data['lieu_a'];
 $page = '<a href=" '.$url.' ">'.$lieu.'</a>';
 $autdat = nl2br(htmlentities(trim($data['auteurdate_a'])));
}
{
if ($j%$NbrCol == 1) {
      $NbrLigne++;
      echo "<tr>";
      $fintr = 0;
   }
   echo '<td>';
        // AFFICHAGE des DONNEES de la fiche
    echo $ref;
    echo '<br />';
   echo $page;
   echo '<br />';
   echo $autdat;
    // ------------------------------------------
   echo '</td>';
   if ($j%$NbrCol == 0) {
      echo "</tr>";
      $fintr = 1;
   }
   $j++;
}
if ($fintr!=1) { echo '</tr>'; }
echo '</table>';
} else {
echo 'Pas de photo pour le moment';
}
mysql_close();
le résultat est que je n'ai que la dernière donnée des 6 données...
pouvez-vous me dire comment faire apparaître toutes les données, svp.
cela fait presque 2 semaines que je cherche... :roll:
merci pour votre aide

Re: afficher les données dans un tableau

Posté : 13 avr. 2017, 18:51
par @rthur
Bonjour,

Il faut que le echo de ta ligne de résultat soit dans ta boucle While() car c'est cette boucle qui va parcourir chaque résultat.

A l'heure actuelle, tu fais la boucle d'abord mais qui tourne à vide, et ensuite l'affichage d'une seule ligne, donc c'est logique que ça n'affiche que la dernière valeur récupérée par la boucle

Re: afficher les données dans un tableau

Posté : 14 avr. 2017, 19:50
par ytzmi
bonjour

merci pour votre réponse.
je sais que je vais me faire "gronder' car je n'ai pas compris...

j'y ai travaillé...
j'ai mon tableau, nombre de colonne qu'il faut et les lignes qui s'ajoutent...
mais toujours le même problème car dans les cellules du tableau la même et unique donnée...

je lis bien
[Il faut que le echo de ta ligne de résultat soit dans ta boucle While() car c'est cette boucle qui va parcourir chaque résultat.]
mais je ne comprends pas faute que je suis ignare en la matière... :cry: :cry: :cry: #-o

j'y ai travaillé et je n'ai pas beaucoup avancé et j'ai un peu... :oops:

Re: afficher les données dans un tableau

Posté : 16 avr. 2017, 18:21
par @rthur
Mais non tu ne vas pas te faire "gronder" ! :-D

J'ai l'impression qu'il manque un bout de ton code :
{
if ($j%$NbrCol == 1) {
Ce n'est pas normal ton accolade ouverte sans rien devant.
Qu'est-ce que tu voulais mettre ici ?

Re: afficher les données dans un tableau

Posté : 17 avr. 2017, 19:19
par ytzmi
en fait c'est un tuto que j'ai trouvé et que j'ai tenté d'adapter...

voici le nouveau code, il n'y a guère de changement...
//tableau à 4 colonnes
$NbrCol = 4;
$result = mysql_query($sql);
$NbreData = mysql_num_rows($result);
if ($result == 0) {
	echo 'Pas de photo pour le moment.';
}
else {
	while ($data = mysql_fetch_array($req)) {
$ref = $data['ref_a'];	
$url = $data['url_a'];
$lieu = $data['lieu_a'];
$page = '<a href=" '.$url.' ">'.$lieu.'</a>';
$autdat = nl2br(htmlentities(trim($data['auteurdate_a'])));
}
}
// affichage
$NbrLigne = 0;
if ($NbreData != 0) {
$j = 1;
echo '<table border="1" cellspacing="8">';
while ($val = mysql_fetch_array($result)) {
   if ($j%$NbrCol == 1) {
      $NbrLigne++;
      echo "<tr>";
      $fintr = 0;
   }
   echo '<td>';
        // AFFICHAGE des DONNEES
 echo '<br />';
	echo $val=$ref;
    echo '&nbsp','-','&nbsp';
   echo $val=$page;
   echo '<br />';
   echo $val=$autdat;
    // ------------------------------------------
   echo '</td>';
   if ($j%$NbrCol == 0) {
      echo "</tr>";
      $fintr = 1;
   }
   $j++;
}
if ($fintr!=1) { echo '</tr>'; }
echo '</table>';
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
mysql_close();
?>
j'ai mes colonnes mais avec la dernière donnée et non toutes les données.

Avec ce tuto, je ne comprends pas pourquoi je dois après m'être connectée à ma base et à ma table
$sql = "SELECT ref_a, lieu_a, auteurdate_a, url_a FROM pgfoto ORDER BY ref_a";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
je dois faire ceci
$result = mysql_query($sql);
$NbreData = mysql_num_rows($result);
"result" et "NbreData"

Alors que dans un code au plus simple
// requête
$sql = "SELECT ref_a, lieu_a, auteurdate_a, url_a FROM pgfoto ORDER BY ref_a";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
//-----------------------
$result = mysql_num_rows($req);
if ($result == 0) {
	echo 'Pas de photo pour le moment.';
}
else {
	while ($data = mysql_fetch_array($req)) {
$url = $data['url_a'];
$lieu = $data['lieu_a'];
$page = '<a href=" '.$url.' ">'.$lieu.'</a>';
			echo '<br />';
			echo $page;
			echo '<br />';
		//	echo '&nbsp'; // implique un espace
			echo nl2br(htmlentities(trim($data['auteurdate_a'])));
			echo '<br />';										
	}
}		
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
// on ferme la connection à la base de données.
mysql_close ();
Là, tout s'affiche correctement, mais ligne après ligne.

pour gagner de la place, je voulais un tableau de 4 colonnes et nbre de ligne indéterminée et infinie...

Je comprends bien que
while ($data = mysql_fetch_array($req)) {
$ref = $data['ref_a'];	
$url = $data['url_a'];
$lieu = $data['lieu_a'];
$page = '<a href=" '.$url.' ">'.$lieu.'</a>';
$autdat = nl2br(htmlentities(trim($data['auteurdate_a'])));
}

n'est pas à sa place et ce n'est pas faute de l'avoir mis un peu de partout...
et que ceci
while ($val = mysql_fetch_array($result))
echo $val=$page;
   echo '<br />';
   echo $val=$autdat;
n'est pas correct mais je ne sais pas quoi mettre.
:arrow: c'est pour ça que je dis que l'on va finir par "gronder" car je ne comprends rien et qui semble si simple :oops:

Re: afficher les données dans un tableau

Posté : 18 avr. 2017, 18:19
par ytzmi
bonjour

j'avance à petit pas :priere:
voici mon nouveau code où j'ai trouvé la place de la boucle
//-----------------------
$result = mysql_query($sql);
$NbreData = mysql_num_rows($result);
if ($result == 0) {
	echo 'Pas de photo pour le moment.';
}
// affichage
$NbrCol = 4;
$NbrLigne = 0;
if ($NbreData != 0) {
$j = 1;
echo '<table border="1" cellspacing="8">';
if ($j%$NbrCol == 1) {
      echo '<tr>';
	  $NbrLigne++;
      $fintr = 0;
   }   while ($data = mysql_fetch_array($req)) {
$ref = $data['ref_a'];	
$url = $data['url_a'];
$lieu = $data['lieu_a'];
$page = '<a href=" '.$url.' ">'.$lieu.'</a>';
$autdat = nl2br(htmlentities(trim($data['auteurdate_a'])));

   echo '<td>';
        // AFFICHAGE des DONNEES
  echo '<br />';
	echo $ref;
    echo '&nbsp','-','&nbsp';
   echo $page;
   echo '<br />';
   echo $autdat;
   }

    // ------------------------------------------
   echo '</td>';
   if ($j%$NbrCol == 0) {
      echo '</tr>';
      $fintr = 1;
   }
   $j++;

if ($fintr!=1) { echo '</tr>'; }}
echo '</table>';
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
mysql_close();
?>
J'ai mes données, toutes... mais sur une seule ligne et dans autant de colonne que de donnée #-o

Alors que je voulais 4 colonnes et autant de ligne qu'il y aura de données...

merci

Re: afficher les données dans un tableau

Posté : 18 avr. 2017, 18:29
par @rthur
Ton code est très fouillis, il faut que tu partes du HTML pour après construire le PHP qui va le générer.

Commence par faire ton tableau en HTML (avec 3 lignes pas besoin de plus), et ensuite tu réfléchiras à comment tu vas faire pour le générer.
Ce n'est pas très compliqué et tu y est presque mais là ça va trop dans tous les sens pour que tu puisses le maintenir proprement.

Re: afficher les données dans un tableau

Posté : 22 avr. 2017, 18:49
par ytzmi
bonsoir
j'abandonne :oops: :(
je n'avance pas, j'ai beau y passer mes après-midi, je tourne en rond :cry:
Il était plus simple pour moi que les adhérents entrent eux-mêmes leur "donnée".
je vais continuer comme actuellement, recevoir leurs mails et voilà :x
impossible de trouver un tuto qui correspond à ce que j'aimerai faire #-o
Chacun son métier, ce n'est pas le mien
merci pour ton temps et ton aide que je n'ai pas compris dû à mon ignorance