Fonction listant une requête sql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 109 fois - Téléchargée 31 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
-
oui excuse-moi j'ai inversé ;)
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
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
-
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
-
ok merci coucou474!
FhX
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
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 :)

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.