Fonction listant une requête sql

2/5 (15 avis)

Snippet vu 14 452 fois - Téléchargée 33 fois

Contenu du snippet

J'ai longtemps cherché une fonction me listant une requète sql, j'utilisais une fonction équivalente à celle-ci en asp mais impossible de la trouver en php. Apres quelque temps de recherche j'ai implémenté ceci :

Source / Exemple :


function AfficherRequete2($sql){
	
	$rst = mysql_query($sql);

	//--- La requete a échoué
	if (!$rst){
	   echo 'Erreur :' . mysql_error() . '<br>';

	//--- La requête a réussi
	}else{		
		//--- On vérifie si y a plusieurs enregistrements	
		if (mysql_num_rows($rst) > 0){
			
			//--- Nombre de colonnes
			$nbCol = mysql_num_fields($rst);
			
			//--- Début du tableau
			echo '<table>';
			
			//--- Affichage noms des colonnes
			echo '<tr>';
		   	while ($row = mysql_fetch_field ($rst)){
		   		echo '<td>' . $row -> name . '</td>';
		   	}
			echo '</tr>';

			//--- Affichage valeurs des colonnes
			while ($row = mysql_fetch_array($rst))
			{
				echo '<tr>';
				for ($i=0; $i<=$nbCol; $i++)
				{ 
					echo '<td>'. $row[$i] . '</td>';
				}
				echo '</tr>';
			}
			
			//--- Fin du tableau
			echo '</table>';
		}
	}

	//--- La fonction retourne si la requete a réussi ou pas
	return $rst;
}

Conclusion :


<? AfficherRequete("SELECT * FROM MaTable") ?>
vous listera l'intégralité de la table 'MaTable'.

L'avantage par exemple quand vous souhaitez afficher une liste de groupe avec des cases à cocher devant vous pouvez faire :
<?
$sql = "";
$sql .= " SELECT CONCAT('<input type=''checkbox'' name=''id_groupe'' value=''', Id_Groupe, '''>') AS Choix,";
$sql .= " Lib AS Désignation";
$sql .= " FROM Groupe";
$sql .= " ORDER BY Lib";
AfficherRequete($sql);
?>

A voir également

Ajouter un commentaire Commentaires
TyFFoul Messages postés 6 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 23 septembre 2006
2 janv. 2006 à 16:47
oui excuse-moi j'ai inversé ;)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
2 janv. 2006 à 16:43
TyFFoul moi c'est coucou747 pas 474
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
2 janv. 2006 à 16:26
C'est un truc que j'utilise jamais ça les try catch ! mais je conserve ça peut etre utile !

merci
TyFFoul Messages postés 6 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 23 septembre 2006
2 janv. 2006 à 16:18
ok merci coucou474!
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
2 janv. 2006 à 16:03
Disons que le "OR ..." permet de tout avoir sur une ligne.

Pour Coucou : TH signifie bien Table Header :)
Encore Coucou : Plus besoin de faire list($x, $y) explode(' ', microtime());
> microtime(true); // Tout simplement :)


Autrement, pour gérer les erreurs, tu peux utiliser les exceptions => throw new Exception('Message d\'erreur');

Et pour pouvoir les utiliser convenablement :
try {
afficherRequete2($req);
} catch (Exception $e) {
echo 'Erreur détectée : '.$e->getmessage();
}

C'est bien plus facile à utiliser plutot que de faire un renvoi de TRUE/FALSE pour une detection d'erreur (sauf si la fonction est simpliste).

Mais bon, c'est au choix :)
Afficher les 15 commentaires

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.