Fonction d'affichage de données mysql

Description

Cette fonction permet d'afficher des données provenant d'une ou plusieurs tables MySQL avec, si nécessaire, des liens entre les tables, des libellés de colonnes et le tri des données par colonne.

Pour utiliser cette fonction il faut inclure le fichier contenant la source et envoyer un certain nombre de paramètres, comme ci-dessous: (se retrouve dans le fichier page_d_appel.php)

<?php
include('TableGed.php');
//Inclure le fichier avec la source
//*********************************
$Tables='nom_de_la_table_1,nom_de_la_table_2,nom_de_la_table_3';
//Indiquer sur quelles tables on travaille
//**********************************
$Links='1%2%IDTable1,1%3%IDTable3';
//Indiquer quels tables sont liées entre elles par un champ de même nom
//(Souvent IDnom_de_la_table)
//Dans cet exemple les tables nom_de_la_table_1 et nom_de_la_table_2 sont liées par IDTable1 (1%2%IDTable1)
//et les tables nom_de_la_table_1 et nom_de_la_table_3 sont liées par IDTable3 (1%3%IDTable3)
//**********************************
$Fields='IDTable1,nom_de_la_table_1.IDTable2,ChampDivers1,ChampDivers2,ChampDivers3,ChampDivers4';
//Indiquer les champs à afficher d'après leur nom dans la base de donnée
//Pour afficher un champ dont le nom est le même dans deux table, préciser la table (NomTable.NomChamp)
//**********************************
$Names='ID,Tralala,Pouet pouet,Camion,Boumboum,Tequila';
//Le titre des colonnes du tableau, dans l'ordre des champs correspondant à ces colonnes.
//**********************************
creatable($Tables,$Links,$Fields,$Names);
//Appel de la fonction
?>

Source / Exemple :


<?php
function crealink($nvtri)
{
	$p = mysql_real_escape_string($_GET['p']);
	$tri = mysql_real_escape_string($_GET['tri']);
	$sens = mysql_real_escape_string($_GET['sens']);
	if ($tri === $nvtri)
	{
		if($sens==='ASC')
			$sens = 'DESC';
		else
			$sens = 'ASC';
	}
	else
	{
		$sens = 'DESC';
	}
	
	$link = 'index.php?p='.$p.'&tri='.$nvtri.'&sens='.$sens;
	return $link;
}

function creatable($Tables,$Linksa,$Fields,$Names)
{
	$Tables=explode(',',$Tables);
	$Links=explode(',',$Linksa);
	$Fields=explode(',',$Fields);
	$Names=explode(',',$Names);
	$p = mysql_real_escape_string($_GET['p']);
	$tri = mysql_real_escape_string($_GET['tri']);
	$sens = mysql_real_escape_string($_GET['sens']);
	$T = Count($Tables);
	$L = Count($Links);
	$F = Count($Fields);
	$N = Count($Names);
	if($F!==$N)
		die('Erreur de la fonction creatable(). Envoyez autant de Noms que de Champs...<br>');
	else if($T===0 || $F===0)
		die('Erreur de la fonction creatable(). Envoyez au moins une Table et un Champ...<br>');
	if(empty($tri))
		$tri=$Fields[0];
	print'<table><tr>';
	for($cpt=0;$cpt<$F;++$cpt)
	{
		print"<th><a href='".crealink($Fields[$cpt])."'>".$Names[$cpt]."</a></th>";
	}
	print'</tr>';
	$req="SELECT * FROM ";
	for($cpt=0;$cpt<$T;++$cpt)
	{
		if($cpt>0)
			$req.=", ";
		$req.="`".$Tables[$cpt]."`";
	}
	if(!empty($Linksa)&&$L>0)
	{
		$req.=" WHERE ";
		for($cpt=0;$cpt<$L;++$cpt)
		{
		if($cpt>0)
			$req.=" AND ";
		$temp = explode('%',$Links[$cpt]);
		$req.="`".$Tables[$temp[0]-1]."`.`".$temp[2]."`=`".$Tables[$temp[1]-1]."`.`".$temp[2]."`";
		}
	}
	$req.=" ORDER BY $tri $sens ;";
	$res=mysql_query($req) or die("La fonction creatable() a causé une erreur SQL. Vérifiez les paramètres.");
	while($val=mysql_fetch_array($res))
	{
		print'<tr>';
		for($cpt=0;$cpt<$F;$cpt++)
		{
			if(ereg('\.',$Fields[$cpt]))
			{
				$temp=explode('.',$Fields[$cpt]);
				print '<td>'.$val[$temp[1]].'</td>';
			}
			else
			{
				print '<td>'.$val[$Fields[$cpt]].'</td>';
			}
		}
		print'</tr>';
	}
	print'</table>';
}	
?>

Conclusion :


Fonction à développer pour pouvoir envoyer un paramètre $Edit et un paramètre $Delete pour pouvoir choisir quels champs sont éditables et quels champs sont supprimables, ainsi que pour la pagination.

Merci de vos retours.

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.