Tableau avec données en colonnes

Description

Quand on construit un tableau en HTML on gère les données en ligne (row).
Il est souvent plus agréable d'avoir les données en colonne.
Exemple :
Champ1 Champ4 Champ7
Champ2 Champ5 Champ8
Champ3 Champ6 Champ9

au lieu de
Champ1 Champ2 Champ3
Champ4 Champ5 Champ6
Champ7 Champ8 Champ9

exemple.php
<?php
/* définition des fichiers d'include */
$connectdatabase = 'connectdatabase.php';
$disconnectdatabase = 'disconnectdatabase.php';
$changefieldname = 'changefieldname.php';
$construittableau = 'constructeurtable.php';


$erreur = 0;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<script language="JavaScript" src="closewindow.js"></script>
<title></title>
</head>
<form name="test" METHOD="POST" >
<body >
<?php
include $changefieldname;
include $connectdatabase;
$arraycolumn = array();
$sql = mysql_query("SHOW COLUMNS FROM [nom de la table]");
while ($row = mysql_fetch_assoc($sql))
{
$displayfieldname = changefieldname ($row['Field'], '[nom de la table]');
$arraydata[] = $displayfieldname;
}
include $disconnectdatabase;
include $construittableau;
/*
Parametres :
1 - variable tableau php contenant les données
--> obligatoire
2 - nombre de ligne souhaité
--> obligatoire
3 - valeur de la taille du tableau (width) en pourcentage ou en pixels
--> valeurs possible :
--> [nbr]px / [nbr]% / NULL
4 - valeur de "text-align" pour les données du tableau
--> valeurs possible :
--> left / center / right / NULL
5 - valeur de l'encadrement du tableau (border)
--> valeurs possible :
--> [nbr] / NULL (valeur par défaut = 1)
6 - valeur de la marge de la cellule (cellpadding)
--> valeurs possible :
--> [nbr] / NULL (valeur par défaut = 2)
7 - valeur de la largeur de la bordure (cellspacing)
--> valeurs possible :
--> [nbr] / NULL (valeur par défaut = 2)
8 - valeur de la hauteur des lignes du tableau (height)
--> valeurs possible :
--> [nbr]px / [nbr]% / NULL
9 - valeur de "vertical-align" pour les données du tableau
--> valeurs possible :
--> top / middle / bottom / NULL
  • /

echo construitable($arraydata, 9, null, null, null, null, null, '75px', 'bottom');


?>
</body>


connectdatabase.php
<?php
error_reporting(0);
/********************************/
/* */
/* CONNECTION - EXECUTION */
/* */
/********************************/
$sql_host = 'localhost';
$sql_user = 'root';
$sql_pwd = '';
$sql_db = '[nom de la base]';
$boutonerreursql = '<br><br><input value="Retour" name="BoutonRetour" onclick="CloseWindow()" type="button">';

$db = mysql_connect($sql_host, $sql_user, $sql_pwd);
// test la connection
if (!$db)
{
//die ('<span style="color: red;"><h1>Echec de connexion au serveur.<br>Merci de réessayer utltérieurement.</h1></span><br>');
echo '<span style="color: red;"><h1>Echec de connexion au serveur.<br>Merci de réessayer utltérieurement.</h1></span><br>';
echo $boutonerreursql;
$erreur++;
}
else {
// Connecte la base
$connexion_database = mysql_select_db($sql_db, $db);
if (!$connexion_database)
{
//die ('<span style="color: red;"><h1>Echec de connection à la base de données.<br>Merci de réessayer utltérieurement.</h1></span><br>');
echo '<span style="color: red;"><h1>Echec de connection à la base de données.<br>Merci de réessayer utltérieurement.</h1></span><br>';
echo $boutonerreursql;
$erreur++;
}
}
return $erreur;
?>


changefieldname.php
<?php
function changefieldname($string, $tablesource)
{
if ($tablesource == 'table1')
{
$table = array('/\bchamp1\b/','/\bchamp2\b/','/\bchamp3\b/','/\bchamp4\b/','/\bchamp5\b/');
$table_display = array("Libelle champ1_table1","Libelle champ2_table1","Libelle champ3_table1","Libelle champ4_table1","Libelle champ5_table1");
}

if ($tablesource == 'table2')
{
$table = array('/\bchamp1\b/','/\bchamp2\b/','/\bchamp3\b/','/\bchamp4\b/','/\bchamp5\b/');
$table_display = array("Libelle champ1_table2","Libelle champ2_table2","Libelle champ3_table2","Libelle champ4_table2","Libelle champ5_table2");
}
$vartempo = preg_replace($table, $table_display, $string);
return $vartempo;
}

?>



constructeurtable.php
<?php
function construitable($array, $ligne, $width, $textalign, $border, $cellpadding, $cellspacing, $height, $valign)
{ //données, nbr_row, width, text-align, border, cellpadding, cellspacing, height, vertical-align
$result = count($array) - 1;
$colonne = ceil($result / $ligne);

$nbrrow = 1;
$nbrcol = 1;

$nbrajout = 0;

$compteurstyletable = 0;
$compteurstyletr = 0;
$compteurborder = 0;

$styletable = '';
$styletr = '';


/* test de la valeur de la taille du tableau (width).
--> le style est appliqué sur la balise <table> */
if (isset ($tablewidth))
{
$styletable .= 'width: '.$tablewidth.';';
$compteurstyletable++;
}

/* test de la valeur de "text-align" pour les données du tableau.
--> le style est appliqué sur la balise <table> */
if (isset ($textalign))
{
$styletable .= 'text-align: '.$textalign.';';
$compteurstyletable++;
}

/* test de la valeur de border */
if (isset ($border))
{
$borderattribut = 'border="'.$border.'"';
}
else {
$borderattribut = 'border="1"';
}

/* test de la valeur de cellpadding */
if (isset ($cellpadding))
{
$paddingattribut = 'cellpadding="'.$cellpadding.'"';
}
else {
$paddingattribut = 'cellpadding="2"';
}

/* test de la valeur de cellspacing */
if (isset ($cellspacing))
{
$spacingingattribut = 'cellspacing="'.$cellspacing.'"';
}
else {
$spacingingattribut = 'cellspacing="2"';
}


/* début de tableau */
if ($compteurstyletable <> 0)
{
$table = '<table style="'.$styletable.'" '.$borderattribut.' '.$paddingattribut.' '.$spacingingattribut.'>';
}
else {
$table = '<table '.$borderattribut.' '.$paddingattribut.' '.$spacingingattribut.'>';
}


/* test de la valeur de hauteur de ligne (height).
--> le style est appliqué aux balises <tr> */
if (isset($height))
{
$styletr .= 'height: '.$height.';';
$compteurstyletr++;
}


/* test de la valeur de "vertical-align" pour les données du tableau.
--> le style est appliqué aux balises <tr> */
if (isset ($valign))
{
$styletr .= 'vertical-align: '.$valign.';';
$compteurstyletr++;
}


while ($nbrrow <= $ligne)
{
if ($nbrcol == $colonne + 1)
{
$nbrcol = 1;
}
$i = 0;
if ($compteurstyletr <> 0)
{
$table .= '<tr style="'.$styletr.'">';
}
else {
$table .= '<tr>';
}
while ($nbrcol <= $colonne)
{
if ($i % $ligne == 0)
{
$compteurkey = $i + $nbrajout;
$data = $array[$compteurkey];
$tempo = array_keys($array, $data);

$identifiant = $tempo[0];
if (!array_key_exists($identifiant, array_keys($array)))
{
$table .= '<td><br></td>';
$nbrcol++;
}
else {
$identifiant++;
$table .= '<td>'.$data.'</td>';
$nbrcol++;
}
}
$i++;
}
$table .= '</tr>';
$nbrrow++;
$nbrajout++;
}
$table .= '</table>';
return $table;


}
?>
</form>



closewindow.js
function CloseWindow()
{
var obj_window = window.open('', '_self');
obj_window.opener = window;
obj_window.focus();
opener=self;
self.close();
}



disconnectdatabase.php
<?php
mysql_close($db);
?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.