FONCTION LISTANT UNE REQUÊTE SQL

Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
- - Dernière réponse : 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
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35363-fonction-listant-une-requete-sql

Afficher la suite 
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 :)
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
je récupère le timer, je le mets pas dedans mais ça pourra être utile aux prochains visiteurs :) et accessoirement pour moi aussi !
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
je récupère le timer, je le mets pas dedans mais ça pourra être utile aux prochains visiteurs :) et accessoirement pour moi aussi !
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
Par rapport à ceci:

# $rst = mysql_query($sql);
# if (!$rst){
# echo "Erreur :" . mysql_error() . "
";
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
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
<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...
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
Ok je v modif ça, merci pour l'info.
TyFFoul
Messages postés
6
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
23 septembre 2006
-
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>??
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
il vaut mieux utiliser echo 'salut'; que echo "salut"; ?
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
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 "...
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
Merci pour ton aide, j'ai fait les modifications, j'ai pas tout pris en compte mais juste ce qui etait essentiel.

@+
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
# //--- 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() . "
";
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
à la palce des
... 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...