begin process at 2012 05 27 06:43:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > FONCTION LISTANT UNE REQUÊTE SQL

FONCTION LISTANT UNE REQUÊTE SQL


 Information sur la source

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :lister, requete, sql, en, php Niveau :Débutant Date de création :01/01/2006 Date de mise à jour :02/01/2006 15:47:58 Vu :12 830

Auteur : ranouf

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

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

  • 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;
  • }
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);
?>


 Historique

01 janvier 2006 17:38:25 :
Optimisation du code ave l'utilisation de la fonction 'mysql_num_fields'
02 janvier 2006 14:50:40 :
Mise en conformité
02 janvier 2006 15:47:58 :
echo '<table>' s'affiche plus rapidement que echo "<table>"

 Sources du même auteur

Source avec Zip PHP5 MY EXPLORER : AFFICHE L'ARBORESCENCE DE DOSSIERS
CRÉER UN FORMULAIRE À PARTIR D'UNE REQUETE SQL

 Sources de la même categorie

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec une capture CET EXTRAIT PERMET D'AJOUTER DANS UN TABLEAU UNE AGRÉGATION ... par Denis007
EXPORT DE BASE AU FORMAT CSV par remib74
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier

 Sources en rapport avec celle ci

Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42
Source avec Zip SYSTÈME D'ARTICLES par Archima
DUPLICATION D'UNE BASE DE DONNÉES POUR SAUVEGARDE par fmarie
Source avec Zip PORTAGE PDO DE MES ANCIENNES PUBLICATIONS par 8Tnerolf8
Source avec Zip Source avec une capture CODE BARE!!! par toutoos

Commentaires et avis

Commentaire de coucou747 le 02/01/2006 14:21:23 administrateur CS

#         //--- On vérifie si y a plusieurs enregistrements    
#         if (mysql_num_rows($rst) > 0){

plusieurs veut dire au moins deux...

#     $rst = mysql_query($sql);
#     if (!$rst){
#      echo "Erreur :" . mysql_error() . "<br>";
tu devrais utiliser or die... ou or {echo mysql_error();return false; }

pour les noms des colones, tu devrais utilsier th au lieu de td...

tu devrais utiliser les " à la place des '...

un return true à la fin serait un plus, et un return false en cas d'échec de requette... ou alors, tu pourrais retourner le temps de requette sql...

Reste le code html à modifier, des " pour les attributs, des <br /> à la palce des <br>... utiliser des css pour width...

Bon, sinon, pourquoi pas, je noterais quand tu auras le temps de faire toutes les modifications, car la le code est relativement crade...

Commentaire de ranouf le 02/01/2006 14:53:10

Merci pour ton aide, j'ai fait les modifications, j'ai pas tout pris en compte mais juste ce qui etait essentiel.

@+

Commentaire de coucou747 le 02/01/2006 15:15:46 administrateur CS

je crois que tout ce que j'ai dit était essentiel...

ton commentaire qui ne corespond pas à ce que tu fais... comment tu veux qu'on s'y retrouve ensuite...

les or die sont très importants car tu peux grace à ça voir ce qui se passe dans ton code...

les return... en php, procedure n'existe pas, mais si tu peux avoir une erreur, alors renvoi false en cas d'erreur et true en cas de succès... de plus, ici, tu pourrais renvoyer plusieurs choses : temps, nombre d'enregistrements...

Bon, pour les guillemets, ça montre ta confusion dans l'utilisation des " et des ' : tu les utilise de la même façon alors qu'elles n'ont pas les mêmes propriétées... les ' sont plus rapides et on n'échape pas les variables dans les "...

Commentaire de ranouf le 02/01/2006 15:25:42

il vaut mieux utiliser echo 'salut'; que echo "salut"; ?

Commentaire de TyFFoul le 02/01/2006 15:39:08

Oui c'est plus rapide mais la syntaxe est différente selon ' ou " :
<?php
$nom=toto;

echo"Salut $nom !!";
/*ou avec les '*/
echo'Salut '.$nom.' !!';
?>

Pour coucou747 :
Comment fais-tu pour renvoyer le temps d'exécution de la requête sql??
Quelle est la différence entre <th> et <td>??

Commentaire de ranouf le 02/01/2006 15:42:36

Ok je v modif ça, merci pour l'info.

Commentaire de coucou747 le 02/01/2006 15:52:44 administrateur CS

<th> = table header (je crois) ça te permet de mettre dans le css :

th{
/*mon table header*/
}

et c'est par défaut centré et en gras...

Bon, sinon, un vulgaire bench pour le temps de requette sql...

list($usec, $sec) = explode(' ', microtime());
$start=$sec+$usec;
mysql_query($req) or die(mysql_error());
list($usec, $sec) = explode(' ', microtime());
$time=(int)(($sec+$usec-$start)*100000);
$time=(float)$time/100;

$time est en milisecondes...

Commentaire de ranouf le 02/01/2006 15:53:35

Par rapport à ceci:

#     $rst = mysql_query($sql);
#     if (!$rst){
#      echo "Erreur :" . mysql_error() . "<br>";
tu devrais utiliser or die... ou or {echo mysql_error();return false; }

au final ça change rien, je test si la requete a échoué ou pas
si (requete échouée) alors
    j'affiche le message d'erreur

sinon
    je l'affiche

finsi

le or die est pratique c'est ce que j'utilise jusqu'a ce que j'apprenne ceci :)

@+ et merci pour votre aide

Commentaire de ranouf le 02/01/2006 15:57:34

je récupère le timer, je le mets pas dedans mais ça pourra être utile aux prochains visiteurs :) et accessoirement pour moi aussi !

Commentaire de ranouf le 02/01/2006 15:57:46

je récupère le timer, je le mets pas dedans mais ça pourra être utile aux prochains visiteurs :) et accessoirement pour moi aussi !

Commentaire de FhX le 02/01/2006 16:03:55

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 :)

Commentaire de TyFFoul le 02/01/2006 16:18:35

ok merci coucou474!

Commentaire de ranouf le 02/01/2006 16:26:54

C'est un truc que j'utilise jamais ça les try catch ! mais je conserve ça peut etre utile !

merci

Commentaire de coucou747 le 02/01/2006 16:43:07 administrateur CS

TyFFoul moi c'est coucou747 pas 474

Commentaire de TyFFoul le 02/01/2006 16:47:47

oui excuse-moi j'ai inversé ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Requete SQL avec PHP : besoin d'aide svp [ par lasof77 ] Bonjour, Je suis debutante en php et j'ai un probleme de recupération de données via sql dans ma base.Je commence par faire une requete globale sur to requete sql avec php : j'ai un pb avec les apostrophes [ par nicoto ] Bonjour,J'aurai besoin d'aide car j'utilise actuellement php , et j'accède à une base sql avec driver odbc. mon problème est lors d'envoie de requete requete sql avec la variable php [ par soussan ] sltj'ai un champs qui peut contenir des paraghraphe et je veux faire la selection sur ce champs à partir d'une zone de texte de recherche. je veux fai Algorithme php ou requete sql ? Probleme de date [ par evenkil ] Bonjour,J'aimerai pouvoir déterminer dans quelle tranche de période se situe une date donnée.Je voulai savoir si il est possible de concevoir une requ php:Resultat requete SQL [ par did61 ] Bonjour, Comment teste t-on le nombre que renvoie une requete SQL ? dans quelle variable est le nombre de joueur $sql ou $nombre ? Requete : $sql = 'S Fenetre Popup en php pour afficher résultat d'une requete sql [ par jmlucienvb ] Grace à Jérémy je suis maintenant en mesure après un affichage dans un tableau de mon résulta de requete sql de complèter en même temps une liste déro php/sql [ par theunknown0o ] bonjour,j'aimerai avoir de l'aide sur un petit truc,je veux utiliser la fonction "split str" sur une 'valeur' ("Bxxxx" ou "Cxxxx" ou "Dxxxx")      - p mysql_fetch_row() et agrument non valide [ par anistabbabi ] salut je vous propose mon script lorsque je l'execute il m'affiche l'erreur suivant:Warning: mysql_fetch_row(): supplied argument is not a valid MySQ limit en SQL SERVER? [ par lotfi213_b19 ] Bonjour,ca fait une semaine que je cherche comment ecrire une requete qui me renvoie un intervalle d'enregistrements sous SQL SERVER comme LIMIT ma re aide requete php [ par asterix00166 ] bonjour,probleme :je veux q'une zone de texte soit rempli automatiquemnt par des valeur stocké dans une table(mysql)exemple : formulaire de payement d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales