[Controle en php d'une requete vide]

Fermé
trik59 Messages postés 241 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 17 mai 2012 - 8 févr. 2005 à 10:37
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 8 févr. 2005 à 19:59
Bonjour! a tous

voila, j'ai dans mon parogramme,une requete SQL qui fonctionne parfaitement:

en faite je demd a celle ci de me sortir tout les materiels qui se trouve ds ma base a partir d'une date butoir!...

voila le probleme c'est que je peut demander par ex:tous les matos <21/04/2004, (resultat corect!), mais voila c'est que je peut osi taper par ex: comme 21/04/1111 avec un resultat vide! en gros je peut lui dire de me sortir les matos en 1930 ou avt J.C :) il me sort un resultat vide !


moi ce que je souhaiterais c'est de faire un ti controle de la requete, ds le cas ou celle ci me renvoi un resultat vide, et d'aficher un message d'erreur (" selon cette requete ya rien au fichier")... en gros ou cas ou que la requete est fausse ou vide ???






je met ma requete le code que j'ai essayer ne marche pa trop bien ! (je peut le mettre si ya demende)


if ($err == 0){

$requete = "SELECT division.id_div, division.nom_div, type_mat.id_sorte_mat, materiel.statut, count( * ) nbr_ucs
FROM materiel, type_mat, division
WHERE type_mat.id_sorte_mat = $smat
AND materiel.statut = \"A\"
AND materiel.id_type_mat = type_mat.id_type_mat
AND materiel.id_div = division.id_div
AND materiel.date_livraison <=\"$ddate\"
GROUP BY division.id_div;";

$resultat = requeteSQL($requete);

$i = 0;
if(mysql_num_rows($resultat)) //vérification qu'il y a au moins une ligne de résultat
{
while($tab = mysql_fetch_row($resultat)) //récupération du résultat de la requête ligne par ligne

//équivalent à mysql_fetch_array($resultat,MYSQL_NUM)
{
$liste["count( * ) nbr_ucs"][$i] = $tab[4];
$liste["materiel.statut"][$i] = $tab[3];
$liste["type_mat.id_sorte_mat"][$i] = $tab[2];
$liste["division.nom_div"][$i] = $tab[1];
$liste[division.id_div"][$i] = $tab[0];
$i++;
}
}
else
{
$liste = 0;
}


echo $requete;
echo "<PRE>";
print_r($liste);
echo "</PRE>;







voila jesper avoir été précis
avec tout mes remerciements!

a++







le savoir est un devoir...

1 réponse

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 févr. 2005 à 19:59
Salut,

Une idée comme ça : si, pour ta requête, il n'ya pas de résultat correspondant, tu auras sûrement des variables vides après ta récupération, je parle de ces variables:
$liste["count( * ) nbr_ucs"][$i] = $tab[4];
$liste["materiel.statut"][$i] = $tab[3];
(etc....) 


Alors il te suffis de choisir une variable qui ne peut en aucun cas être vide si la requête est bonne (prenons $liste["division.nom_div"][$i] au pif) => il faudrait faire ce test:

/* Si la valeur de $liste["division.nom_div"][$i] est égale à 0 ou si cette variable est nulle */
if (empty($liste["division.nom_div"][1]))
{
       Instuction en cas de requête qui n'a pas marché)
}


C'est tout ce que j'ai trouvé, il ya sûrement mieux.
En fait j'ai essayé de reproduire une situation qui ressemble à la tienne, mysql_query() ne renvoyait pas d'erreur en cas de requête qui ne trouve pas de valeur correspondant à une autre dans une table. Par contre je récupérais ma valeur avec mysql_result() et là j'avais une erreur.

Comme toi tu n'as pas d'erreur au moment de la récupération avec mysql_fetch_row() (à moins que tu ne me l'ais pas dit), c'est donc après que tu peux faire le test des valeurs de retour de ta requête avec empty() pour vérifier qu'une variable est vide (ou égale à 0, FALSE....) alors qu'elle ne devrait pas l'être après cette récupération.

Je sens que je suis pas très clair...
Cette methode est un peu lourde mais là je vois pas d'autre solution :-(

Je sais même pas si ça va marcher dans ton cas, essaie toujours.

Fais un tour vers ce lien:
http://fr3.php.net/manual/fr/function.empty.php
0