TUTOS.EU

Transformer des enregistrements SQL en tableau Javascript

Convertit un jeu d enregistrements SQL en un tableau JavaScript

<HTML>
	<HEAD>
		<meta http-equiv="X-UA-Compatible" content="IE=8" />
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	</HEAD>
	<BODY>
<?php
	//Version du 22 fevrier 2013
	//Fonction créer tableau JavaScript à partir d'une requete SQL
	
	//Définition des constantes
	define("SQLServerName","NomServeurMySQL");
	define("sqldbname","NomBaseDeDonnees");
	define("sqllogin","LoginSQL");
	define("sqlpass","MotDePasseSQL");

	function ConvertMySQLRequestToJavascriptArray($Resultat,$NomTableauJavaScript,$CreerBalisesJavaScript)
	{
		//Version du 22 fevrier 2013
		//Fonction créer un tableau JavaScript à partir d'un jeu d'enregistrement SQL passé en paramètres.
		//La connexion à la base de données et la requête SQL a donc déjà été envoyée au préalable à la base de données.

		//Récupération d'informations sur les champs
		//http://php.net/manual/en/function.mysql-fetch-field.php
		$CompteurChamp = 0;

		if ($CreerBalisesJavaScript == 1){
			echo "<SCRIPT TYPE=\"text/javascript\">\n";
		}

		echo "//Création du tableau JavaScript\n";
		echo $NomTableauJavaScript."=new Array();\n";
		echo "\n";
		
		//Création du tableau PHP qui va contenir les noms des champs de la requêtes SQL
		while ($CompteurChamp < mysql_num_fields($Resultat)) {
			$meta = mysql_fetch_field($Resultat, $CompteurChamp);
			if (!$meta) {
				//echo "No information available<br />\n";
			}
			//echo "$meta->name<br />";
			$ChampsDeLaRequeteSQL[$CompteurChamp] = $meta->name;
			$CompteurChamp++;
		}

		//Création des différents champs dans le tableau en JavaScript
		echo "//Création des différents champs du tableau JavaScript\n";
		$count = count($ChampsDeLaRequeteSQL);
		for ($CompteurChampsDeLaRequete = 0; $CompteurChampsDeLaRequete < $count; $CompteurChampsDeLaRequete++) {
			//echo $ChampsDeLaRequeteSQL[$CompteurChampsDeLaRequete]."\n";
			echo $NomTableauJavaScript."['".$ChampsDeLaRequeteSQL[$CompteurChampsDeLaRequete]."']=new Array();\n";
		}
		echo "\n";

		mysql_data_seek($Resultat, 0); //On revient au début de l'enregistrement
		$CompteurResultats = 1; //Initialisation
		echo "//Copie des valeurs dans les différents champs du tableau JavaScript\n";
		while ($MaLigne=mysql_fetch_array($Resultat, MYSQL_ASSOC)){
			for ($CompteurChampsDeLaRequete = 0; $CompteurChampsDeLaRequete < $count; $CompteurChampsDeLaRequete++) {
				$onevalue = $MaLigne[$ChampsDeLaRequeteSQL[$CompteurChampsDeLaRequete]];
				if (mb_detect_encoding($onevalue, 'UTF-8', true) === false) {$onevalue = utf8_encode($onevalue);}
				echo $NomTableauJavaScript."['".$ChampsDeLaRequeteSQL[$CompteurChampsDeLaRequete]."'][".$CompteurResultats."] = \"".$onevalue."\";\n";
			}
			$CompteurResultats++;
		}

		if ($CreerBalisesJavaScript == 1){
			echo "</SCRIPT>\n";
		}		

		/* Types de méta possibles :
		blob:         $meta->blob
		max_length:   $meta->max_length
		multiple_key: $meta->multiple_key
		name:         $meta->name
		not_null:     $meta->not_null
		numeric:      $meta->numeric
		primary_key:  $meta->primary_key
		table:        $meta->table
		type:         $meta->type
		unique_key:   $meta->unique_key
		unsigned:     $meta->unsigned
		zerofill:     $meta->zerofill
		*/
	}
		
	$MaConnection = mysql_connect(constant('SQLServerName'),constant('sqllogin'),constant('sqlpass')); //Création de la connexion à la base de données
	if ($MaConnection) {
		mysql_select_db(constant('sqldbname'), $MaConnection); //Sélection de la base
		mysql_query("SET NAMES UTF8"); //On utilise le codage UTF8

		$sqlrequest = "SELECT * FROM NomTable order by NomChamp";
		if (strlen($sqlrequest) > 0){
			$Resultat = mysql_query($sqlrequest, $MaConnection); //Passage d'une requête à la base de données
			$num_rows = mysql_num_rows($Resultat); //Récupération du nombre de lignes en réponse
			if ($num_rows > 0){ //Si on a des lignes en réponse
				ConvertMySQLRequestToJavascriptArray($Resultat,"TabSQL2JavaScript",1); //Appel de la fonction
			}
		}
		mysql_free_result($Resultat);
		mysql_close($MaConnection);
	}
	else{
		die('Connexion impossible : ' . mysql_error());
	}

?>
	</BODY>
</HTML>
Lien vers le fichier : cliquez ici