par
animithra » 24 mars 2008, 14:33
Bonjour.
En fait le problème est assez classique lorsque l'on écrit ce genre de code :
//requete de selection
$sql = "SELECT * FROM table";
//envoi requête
$req = mysql_query($sql);
//récupération résultat
$data = mysql_fetch_assoc($req);
et si on n'a pas de résultat ?
bang, supplied argument is not valid.
of course puisque $req contient un élément innatendu !
il faut penser au petit test magique :
//si la table retourne au moins un enregistrement
if(mysql_num_rows($req)!=0) {
//récupération des données
}
//sinon
else {
//message à l'utilisateur
print("aucun enregistrement ne correspond à vos critères de recherche");
Que vous utilisiez des langages procéduraux (comme PHP) ou orientés objets (comme JAVA) il est utile (et c'est une excellente habitude à prendre) de réaliser ce que l'on appelle des tests unitaires.
Un test unitaire permet de vérifier qu'une fonction ne donnera pas d'erreur ou que les erreurs seront gérées : ici mysql_fetch_assoc($req) ne sera appelée que si $sql retourne au moins un enregistrement, mais cela peut aussi être employé pour tester si un utilisateur n'a pas entré une lettre là où vous auriez voulu des chiffres, ou un code sans caractères spéciaux.
Bon courage et bonne programmation à tous.
Julie
Bonjour.
En fait le problème est assez classique lorsque l'on écrit ce genre de code :
[php]//requete de selection
$sql = "SELECT * FROM table";
//envoi requête
$req = mysql_query($sql);
//récupération résultat
$data = mysql_fetch_assoc($req);[/php]
et si on n'a pas de résultat ?
bang, supplied argument is not valid.
of course puisque $req contient un élément innatendu !
il faut penser au petit test magique :
[php]//si la table retourne au moins un enregistrement
if(mysql_num_rows($req)!=0) {
//récupération des données
}
//sinon
else {
//message à l'utilisateur
print("aucun enregistrement ne correspond à vos critères de recherche");[/php]
Que vous utilisiez des langages procéduraux (comme PHP) ou orientés objets (comme JAVA) il est utile (et c'est une excellente habitude à prendre) de réaliser ce que l'on appelle des tests unitaires.
Un test unitaire permet de vérifier qu'une fonction ne donnera pas d'erreur ou que les erreurs seront gérées : ici mysql_fetch_assoc($req) ne sera appelée que si $sql retourne au moins un enregistrement, mais cela peut aussi être employé pour tester si un utilisateur n'a pas entré une lettre là où vous auriez voulu des chiffres, ou un code sans caractères spéciaux.
Bon courage et bonne programmation à tous.
Julie