[PHP]Creer un tableau dynamique

Voila , suite a la récupération de diverse information comme le nom , prenom l’adresse , etc . .

Je voudrais afficher le contenu de ma base sur une page , mais version tableau

NOM | Prenom | Adresse . .

Toto | titi | 32 rue mimi … . etc

Pour faciliter la lecture donc, parce que quand j’affiche ma base de facon classique avec une boucle for dans un if ou l’inverse, ( bref ) et bien, les résultat sont par exemple :

Nom :
Prenom:
Adresse

et ca pour chaque pour personne, donc au bout de qq personne ca commence a faire long a lire . . donc voila, si qqun a une solution :s

2ieme question : Sur un champ ID, comment réinitialiser le numéro a 0 ( ID etant de type auto_inscrement ) vu que j’ai fais des test, le 1er numéro généré est par exemple 39 , 40 etc . . . alors quee finalement je n’ai que 2 nouveau enregistrement . . comment on remet ca a 0 ?

edit2: j’ai vu qu’il y a un truc : “Données CSV pour Ms Excel” y’aurait t il un moyen simple de faire passer la base de donné en donnée ms exel , chaque info mise dans une colonne ?

Pour générer un tableau, ben tu crées un tableau :
<table>
<tr><th>Prenom</th><th>Nom</th></tr>
tu boucles sur les enregistrements de ta base et tu affiches une ligne juste pour chaque enregistrement :
echo ‘<tr><td>’, $prenom, ‘</td><td>’, $nom, ‘</td></tr>’;
Ensuite tu fermes les balises ouvertes…
</table>

Pour un champ autoincrement d’une table MyISAM, tu mets “ALTER TABLE tatable AUTO_INCREMENT=0”

Pour générer un CSV, il suffit de mettre tes champs les uns à la suite des autres avec un SELECT , séparés par un ‘;’ pour Excel (un enregistrement par ligne).

Ok super. Jver essayé ca merci. Par contre pour le auto increment, je suis pas sur d’avoir bien saisi. de plus c’et une Base MySQL pas MyISAM , je sais même pas ce que c’est une base MyISAM

edit :

echo '<tr><td>', $donnees['prenom'], '</td><td>', $donnees['nom'], '</td><td>', $donnees['ecole'], '</td></tr>';

Genre la , il y a un probleme, les tr / td n’apparaissent pas de la bonne couleur sous l’editeur que j’utilise ( NotePad )
edit : <tr> <td etc . . . ce sont des balise php ? parce que sinon il faudrait refermer a chaque fois ?> <tr><td> <?php Non ?

MyISAM, c’est le moteur de base utilisé par défaut par MySQL :wink:

Ben echo, c’est une fonction php… donc oui, faut précéder toute la ligne par <?php et la terminer par ?>

Edit : mais en fait, comme tu boucles sur tes enregistrements, t’es déjà forcément en php…

En fait echo est une fonction PHP, elle te permet d’afficher. Par exemple pour afficher un tableau en HTML tu aurais fait :

<table border=1>
<tr><td>Premierligne</td></tr>
<tr><td>DeuxiemeLigne</td></tr>
</table>

En php c’est identique mais il faut précéder de la fonction echo (qui permet d’afficher…)

<?php 
   echo "<table border=1>
            <tr><td>Premierligne</td></tr>
            <tr><td>DeuxiemeLigne</td></tr>
            </table>";
?>

En fait si j’ai bien compris tu veux simplement exporter tout le contenu de ta base dans un tableau, cela va surement causer quelques soucis. Tu devrais plutot générer un tableau pour chaque table. Pour cela renseigne toi sur les fonction mysql_fetch_array(); et mysql_fetch_row(); elle te permettront de parcourir lignes et colonnes de tes tables. Voila bon courage !!

coucou! je me tente une réponse pour tes problemes, si je comprend bien, tu veux afficher toutes les infos d’une table de ta base de donnée (ou sinon, tu peux les sélectionner!!), donc avec requête!! en gros, moi je ferais :


$req="select * from TA_TABLE ";
$Curseur=mysql_query($req);
?>
<table border=1 width="100%">
<tr>
 <td>Nom</td>
 <td>Prenom</td>
 <td>Adresse</td>
 <td>...</td>
 <?
while($tuple=mysql_fetch_array($Curseur)) {
   echo"<tr><td>";
   echo $tuple['Champ1'];
   echo"</td><td>";
   echo $tuple['Champ2'];
   echo"</td><td>";
   echo $tuple['Champ3'];
   echo"</td><td>";
   echo $tuple['...'];
   echo"</td><tr>";
</table>
}

Pour ton aute probleme, moi, j’ai une solution radical, je vide tous les champs d ma table : tu lances une requête sur ta base dans ta base : TRUNCATE `ta_table`
et quand tu refais des enregistrement, ton champs id repars à 0

bon après pour ton

moi pas savoir ,connais pas trop ce domaine :??: :confused: :slight_smile:

Pour exporter dans un fichier csv :

$fichier =fopen('C://.../fichier.csv','a+'); // Url de type absolu
$sql = mysql_query("SELECT * FROM matable");
while($fetch=mysql_fetch_array($sql))
     {
     fwrite($fichier, $fetch['champ'].";".$fetch['champ2'].";".$fetch['champ3"]);
     fwrite($fichier, "\n");
     }
fclose($fichier);

Attention l’url du fichier à mettre dans la fonction fopen(); doit être de type absolu, si tu n’as pas cette url tu peux la récupérer en utilisant la fonction realpath();
Le paramètre “a+” de la fonction fopen(); signifie que si le fichier n’existe pas il sera créé, et que si il existe déjà le contenu existant sera effacé.

Dans excel une ligne correspond à un enregistrement, le "\n" permet de faire ce saut de ligne, le petit hic : Sous windows "\r\n" sous linux "\n".

Voilà n’hésitez pas à me corriger, merci

Si tu veux mettre le contenu de ta table dans un tableau :

<?php
$buffer = "<table border=1>";
$sql = mysql_query("SELECT * FROM matable");
$nb_champs = mysql_num_fields($sql);
while($fetch = mysql_fetch_array($sql))
  {
  $buffer .= "<tr>";
  for($i=0;$i<$nb_champs;$i++)
    {
    $buffer .= "<td>$fetch[$i]</td>";
    }
  $buffer .= "</tr>";
  }
$buffer .= "</table>";
echo $buffer;
?>

J’éspère que ca réponds à ta question et que ce topic peut passer en mode [RESOLU], allez @+

PS : Dernière petite précision, tu peux obtenir le nom des colonnes (des champs), grâce à la fonction mysql_field_name, ca t’évite d’avoir à les saisir manuellement.

:MDR
Le pauvre pose trois questions et vous l’enchainez avec quatre posts de code.
Au moins il devrait avoir de quoi avancer :ane:

:pt1cable:

LoL. Ca fait mal autant de code a la suite ! Finalement j’ai fait la méthode du premier code

tr><th>Prenom</th><th>Nom</th></tr>

Par contre apparemment c’est td et non th , enfin ca marche avec td a la place de th. Et ensuite j’ai bouclé avec un while.

Pour l’autre quesiton sur l ID, pour ole remettre a 0. Si j’ai bien compris, faut vider la table , et dans l’espace requete faire :

ALTER TABLE tatable AUTO_INCREMENT=0

Avec ma méthode tu as juste a changer ta requête c’est là l’intéret, tu n’as pas a te taper 15 lignes d’affectations de variables ^^

J’édite pour te dire que j’ai développé un ptit script qui réinitialise automatiquement tes id. Tu changes “tatable” par le nom de ta table et “id” par le nom du champ de ton identifiant.

<?php
$sql = mysql_query("SELECT MAX(id) AS maxid FROM tatable ORDER BY id ASC");
$maxid = mysql_result($sql,0,"maxid");
$indice = 0;
$sql = mysql_query("SELECT * FROM tatable");
while($fetch = mysql_fetch_array($sql))
    {
    $id = $fetch["id"];
    if($newSql = mysql_query("UPDATE tatable SET id=$indice WHERE id=$id"))
               {
               $indice++;
               echo "Enregistrement $id remis à $indice<br>";
               }
    }
mysql_close();
?>

Le principe :

  • Je vais chercher l’id qui a la plus grande valeur
  • Je créé une variable indice, des qu’on va changer un id elle augmente de 1
  • Je vais chercher tous les enregistrement et je les trie de la plus petite a la plus grande valeur
  • Pour chaque enregistrement je change son id pour le mettre a $indice, ensuite $indice = $indice + 1;

Allez bon courage salut !

th ça existe et c’est pour les titres !

Ce message n’était pas conforme aux règles d’utilisation du nouveau forum :

[RESOLU] ?..

Désolé , j’avais d’autre probème ^^ . Merci beaucoup pour les soluce, j’avais pas penser a la derniere solution de Thomas_R. C’est pas mal du tout !!

Merci à tous :clap: