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 :

Tableau HTML - Affichage "en Colonne" avec BD


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Tableau HTML - Affichage "en Colonne" avec BD
    Bonjour, je suis tombé sur l'article de Jérôme Réaux disponible à l'adresse suivante :

    http://j-reaux.developpez.com/tutori...au-html/#LVI-A

    Bref il repond parfaitement à mon problème de l'affichage par colonne, sauf que le tableau ne se ferme pas, en effet, le nombre de ligne doit être de 118, pour 5 colonne, ceci, c'est la partie fixe, avec une en-tête également fixe.

    Sauf que lors de la génération du tableau, si il n'y a pas assez de donnée, la première colonne se génére convenablement avec le bon nombre de ligne (118), et les suivantes on moins de ligne et ainsi ne forme pas un tableau Homogène.

    Voici mon premier problème, que le tableau soit homogène.

    Le deuxième problème est que j'aimerai intégrer un système de pagination, que lorsque les cellules sont toutes complètes, cela me sorte une deuxième tableau.

    Et cerise sur le Gâteau, avoir un export Excel également.

    Merci

    PS : Je rajoute également des champs En-tête (coloré) donc ça me rajoute des lignes dans le tableau, et en ajoutant ces lignes, ça remplace la ligne d'origine en me la decalant vers la droite.

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    sans code et structure de données et échantillon ou code d'erreur dur de t'aider...

    car quand je vois l'organisation de sa table je crains que si lui l'a mis "à l'horizontale" pour compacter son tutoriel... au final c'est une belle connerie car les gens vont mal peupler leur table... il faut transposer... dans son exemple, les colonnes du tableau sont les lignes de la table mysql qu'il représente et donc les lignes du tableau sont les colonnes de la table...



    ensuite, oublie l'extension mysql pour te connecter à mysql et utilise PDO... lire les tutoriels de 2008, c'est bien, lire la doc php actuelle c'est mieux... et tu as des exemples à jour dedans...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Je ne suis pas avec Mysql mais avec Postgres.

    J'affiche bien les information par colonne.


    Voici le Bout du 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    $rs=pg_exec($connect,$sql);
     
     
    						$k=0;
    						$NbreData = pg_num_rows($rs);
     
     
     
    						while ($val = pg_fetch_array($rs)) {
    							$tableau[$k] = $val;
    							$k++;
    						}
     
    						// affichage
    if ($NbreData != 0) {
    	$i = 0;
    	$NbrCol = 5;
    	$NbrLigne = 118;
     
     
     
    	for ($i=0; $i<$NbrLigne; $i++) {
     
    	echo'<tr>';
     
    	$j = 0;
     
     
    		while (($i+($j*$NbrLigne))%$NbrLigne==$i && ($i+($j*$NbrLigne))<$NbreData) 
    		{
    			$k = ($i+($j*$NbrLigne));
     
     
     
    			// DONNEES A AFFICHER dans la cellule
     
    			echo '<td>'.$tableau[$k]['nom'].'</td>';
    			echo '<td>'.$tableau[$k]['page_atlas'].'</td>';
    			echo '<td>'.$tableau[$k]['coord_400x'].' '.$tableau[$k]['coord_400y'].'</td>';
    			// -------------------------
     
    		$commune = $tableau[$k]['code_commu'];
    		$j++;		
    		}
    		echo'<td></td><td></td><td></td>';
    	echo'</tr>';
     
    	}
     
     
     
     
     
    } else {
     
     
    }
    Je n'ai pas d'erreur je veux juste que le tableau soit intègre, et referme toute les cellules même si elles sont vide.

    Edit :

    Voila j'ai réussi à fermer le tableau en mettant en paramètre du While le nombre maximal de ligne que je veux avoir (donc 5 colonne * 118 ligne = 590)

    Le tableau se ferme à la perfection, sauf que j'ai des erreurs d'offset vu que je depasse l'index du tableau.....

    je vous met l'évolution du 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
     
    if($page_atlas != NULL) //Pas de tableau si la variable $page_atlas est vide, cad si on arrive sur la page sont sélectionner une page atlas, pas d'affichage.
    {
    			 echo'
    					<table width="1500px">
    						<!-- en-tête -->
    							<tr><td bgcolor="black" COLSPAN=16><center><font color="white"><b>LIEUX-DITS</b></font></center></td></tr>
    							<!-- ligne 1 -->
    							<tr> 
    							<td width="200px"></td>
    							<td width="50px" align="center">Page 1/25000</td>
    							<td width="50px" align="center">X Y</td>
    							<td width="200px"></td>
    							<td width="50px" align="center">Page 1/25000</td>
    							<td width="50px" align="center">X Y</td>
    							<td width="200px"></td>
    							<td width="50px" align="center">Page 1/25000</td>
    							<td width="50px" align="center">X Y</td>
    							<td width="200px"></td>
    							<td width="50px" align="center">Page 1/25000</td>
    							<td width="50px" align="center">X Y</td>
    							<td width="200px"></td>
    							<td width="50px" align="center">Page 1/25000</td>
    							<td width="50px" align="center">X Y</td>
    						</tr>';
     
    						$sql = "select * from shp_export where page_atlas = '".$page_atlas."' order by code_commu, nom";
    						$rs=pg_exec($connect,$sql);
     
     
     
    						$k=0;
     
     
     
     
     
    	//--------------------------------------Formatage des données dans le tableau ------------------------------------------------//					
    						while ($val = pg_fetch_array($rs)) 
    						{ 
     
    							if($k==0 || $k==118 || $k == 236 || $k == 354 || $k == 472)
    							{
    								$tableau[$k] = $val; //permet d'avoir l'enregistrement en double, pour pouvoir afficher le nom de la commune regroupant les Lieux dits
    								$k++;
    								$tableau[$k] = $val;
    								$k++;
    							}
    							else
    							if($val['code_commu'] != $comm)
    							{
    								$tableau[$k] = $val;
    								$k++;
    								$tableau[$k] = $val;
    								$k++;
    							}
    							else
    							{
    								$tableau[$k] = $val;
    								$k++;
    							}
    							$comm = $val['code_commu'];
    						}
    			$NbreData = $k;
    			$NbreMaxData = 590;	
    			$NbreDataDiff = $NbreMaxData - $NbreData;
    //------------------------------------------------------------------------------------------------------------------------------------------------------------//					
     
     
    if ($NbreData != 0) {
    	$i = 0;
    	$NbrCol = 5;
    	$NbrLigne = 118;
     
     
     
    	for ($i=0; $i<$NbrLigne; $i++) {
     
    	echo'<tr>';
     
    	$j = 0;
     
     
    		while (($i+($j*$NbrLigne))%$NbrLigne==$i && ($i+($j*$NbrLigne))<$NbreMaxData) 
    		{
     
    			$k = ($i+($j*$NbrLigne));
     
    	//--------------------------------------- Coloration des en-tête de commune en jaune ------------------------------------------//
    							if($k == 0) //permet de mettre le nom de la commune sur la première colonne.
    							{
    								print("<td bgcolor='yellow' colspan=3 align='center'>".$tableau[$k]['code_commu']."</td>");
    							}
    							else
    							if($k == 118 || $k == 236 || $k == 354 || $k == 472 ) //Pour reprendre le nom de la commune en tête de colonne
    							{
     
    								print("<td bgcolor='yellow' colspan=3 align='center'>".$tableau[$k]['code_commu']." (SUITE)</td>");
    							}
    							else
    							if($tableau[$k]['code_commu'] != $tableau[$k-1]['code_commu'])
    							{
    								print("<td bgcolor='yellow' colspan=3 align='center'>".$tableau[$k+1]['code_commu']."</td>");
    							}
    							else
     
    	//-------------------------------------- Coloration Lieux dits Surfacique --------------------------------------------------//						
    							if(!empty($tableau[$k]['lieu_dit_s'])) //verifie si c'est un lieu dit surfacique, et colore la ligne rouge.
    							{
    								echo '<td bgcolor="red" id="bordersurfacique">'.$tableau[$k]['nom'].'</td>';
    								echo '<td bgcolor="red" id="bordersurfacique">'.$tableau[$k]['page_atlas'].'</td>';
    								echo '<td bgcolor="red">'.$tableau[$k]['coord_400x'].' '.$tableau[$k]['coord_400y'].'</td>';
    							}
    							else
    	//------------------------------------ Coloration Gris, Blanc -----------------------------------------------------//						
    							if($k%2 == 0 )
    							{
    								echo '<td  bgcolor="grey" id="bordergrey" >'.$tableau[$k]['nom'].'</td>';
    								echo '<td bgcolor="grey" id="bordergrey">'.$tableau[$k]['page_atlas'].'</td>';
    								echo '<td bgcolor="grey">'.$tableau[$k]['coord_400x'].' '.$tableau[$k]['coord_400y'].'</td>';
    							}
    							else
     
    							if($k%2 == 1)
    							{
    								echo '<td bgcolor="white" id="borderwhite">'.$tableau[$k]['nom'].'</td>';
    								echo '<td bgcolor="white" id="borderwhite">'.$tableau[$k]['page_atlas'].'</td>';
    								echo '<td bgcolor="white">'.$tableau[$k]['coord_400x'].' '.$tableau[$k]['coord_400y'].'</td>';
    							}
     
     
    							$j++;
    	//--------------------------------------------------------------------------------------------------------------------//						
     
    		}
     
     
     
    		//echo '<td></td><td></td><td></td>';
     
    	echo'</tr>';
    	}
    	echo'</table>';
    } 
    else {
         }		
     
    } //fin If Page Atlas
    ?>
    Voila j'ai mis tout ce qui gérer le tableau.


    Du coup j'ai d'autre question, si des âmes charitable veulent bien m'éguiller.

    Je souhaite faire un système de pagination pour crée un autre tableau lorsque les 590 ligne sont dépassé.

    Et pouvoir proposé un export Excel
    .

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    as tu bien regarder le nom du sous forum où tu postes? ici c'est PHP ET MYSQL

    utilise une feuille de style pour gérer la mise en forme... ça évitera les répétition de styles et rendra plus lisible ton code...

    ne jamais utiliser * dans une requête on sait jamais ce qu'on rapatrie, c'est source de problème et mauvais en terme de maintenance...



    pourquoi ces cellules vides à la fin de tes lignes?

    le modulo tu connais?
    au lieu de:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $k==0 || $k==118 || $k == 236 || $k == 354 || $k == 472
    ça:

    $comm jamais tu l'initialises avant ta boucle?

    pour l'export vers Excell ou autre, il y a des bibliothèques, php et excel dans un moteur de recherche bien connu t'en donneront...


  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Oui le modulo je connais car je l'ai utilisé plus bas dans le code, juste celui la que j'ai pas réécrit.


    utilise une feuille de style pour gérer la mise en forme... ça évitera les répétition de styles et rendra plus lisible ton code...
    Si c'est bien du CSS que tu parle, j'en utilise une...

    Pour le symbole * dans la requête, ce n'est pas le code final....

    pourquoi ces cellules vides à la fin de tes lignes?
    Les cellules vide c'était pour refermé le tableau, mais ça ne fonctionné pas, depuis ce message le code à évolué, et le problème du tableau à été resolu.

    Juste le dépassement de l'index du tableau qui me génère des erreurs Offset, peut-on masqué ces messages ??

  6. #6
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    en fait, tu te fous de compléter les lignes... les colonnes partent de la gauche (par défaut) et comble la ligne courante

    pour paginer, tu peux générer le tableau dans la boucle while avec son entête ou pied qui se déclenche selon le compteur de ligne, en mettant à jour des variables booléennes par exemple...

    du coup, ça te génèrera autan de tableaux que tu veux...

    perso je te conseille de ne pas faire des pages web trop à rallonge, pour une question de performance et d'ergonomie...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    je complète le tableau pour la charte graphique en fait.

    Pour la pagination je pense voir ce que tu veux dire, je m'y penche dessus demain.

Discussions similaires

  1. Tableau html dynamic avec choix colonne et ligne auto
    Par la_chouette dans le forum Langage
    Réponses: 13
    Dernier message: 09/11/2010, 14h24
  2. [MySQL] Tableau html représentant ma base de données avec 4 données par ligne
    Par abzal dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/06/2008, 11h11
  3. PHP-HTML AFFICHAGE variable PHP champ INPUT avec disabled
    Par encore_php dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2008, 22h11
  4. [SQL] trie colonnes tableau html avec order by
    Par digger dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2007, 16h01

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