Générer un message d'erreur

Eléphant du PHP | 206 Messages

27 déc. 2005, 14:16

re,

Je souhaiterais ajouter un message d'erreur dans le cas où les critères de la recherche ne sont pas valides (truc de noob, mais j'ai un peu de mal)

j'ai fait un truc ignoble comme ça :
	<?php
include('connection.inc.php');
$query = "SELECT * FROM agent WHERE nom LIKE '".$_POST['nom']."%' AND postal LIKE '".$_POST['postal']."%' 
AND ctp LIKE '".$_POST['ctp']."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

if ($reponse==0) {echo "<div align='center' class='text_gras'>Désolé, aucun ctp ne
correspond aux agents de cette région. Vérifiez la valeur et relancez la recherche.</font></div>";}


while ($donnees = mysql_fetch_array($reponse) )
{

?>
Quelqu'un pourrais me guider vers la voix de la syntaxe correct :)

Mammouth du PHP | 19672 Messages

27 déc. 2005, 14:22

Sommairement, le schéma est le suivant :
<?php
$action_xyz = fonction_abc();
if(action_xyz == "tel résultat")
{
    echo ("<p>Tel message</p>\n");
}
else
{
    echo ("<p>Tel autre message</p>\n");
}
En somme, tu dois avoir une alternative prévoyant deux possibilités: dans un cas, il n'y a pas d'erreur, tu auras tel message ou telle action, dans l'autre cas, tu afficheras tel autre message ou effectueras telle autre action.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 206 Messages

27 déc. 2005, 16:06

hmm, j'ai un peu de mal à comprendre le fonctionnement.

j'ai écris ceci :
	<?php
include('connection.inc.php');
$query = "SELECT * FROM agent WHERE nom LIKE '".$_POST['nom']."%' AND postal LIKE '".$_POST['postal']."%' 
AND ctp LIKE '".$_POST['ctp']."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());



while ($donnees = mysql_fetch_array($reponse) )
{
$reponse = donnees();

if(donnees == "ctp")
{
    echo ("<p>Tel message</p>\n");
}
else
{
    echo ("<p>Tel autre message</p>\n");
}

?>
Forcément ça ne fonctionne pas. Mais dans ton message précédent, action et fonction définissent quoi exactement ?

action est = à ma réponse ou mes données ?

et fonction, comme son nom l'indique le nom de la fonction à exécuter?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 déc. 2005, 17:13

Ce que t'as montré Cyrano est un exemple !!!

Tu ne peut pas faire un copier coller comme ça sans comprendre :x

a la place de la fonction tu peut utiliser mysql_num_rows() et action un entier (zéro).

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

27 déc. 2005, 17:19

c'est pour ça que je demande des explications ^^ ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 déc. 2005, 17:43

l'exemple traite un résultat retourné (dans $action_xyz) par une fonction "fonction_abc()"
$action_xyz = fonction_abc(); 
et suivant ce résultat (test if)
if($action_xyz == "tel résultat") 
Si $action_xyz (le retour de la fonction) est égal un quelque chose (ici "tel résultat") alors on fait la 1ère action

Si ce n'est pas le cas on fait la 2eme action.

Jusque là c'est bon je pense ?!

et donc il te suffit de remplacer les différents variables et fonction par celle que je t'ai indiqué avant et de traiter en fonction de cela.

Tu inclus donc la boucle while() pour parcourir le résultat dans une des condition et dans l'autre tu peux y mettre le message indiquant qu'il n'y a pas de résultats.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

27 déc. 2005, 18:10

je crois comprendre, mais l'écrire je ne sais pas.

Donc, dans mon cas

Si reponse = données

alors j'affiche les résultats

sinon j'affiche le message d'erreur
$reponse = donnees();
if(reponse == 0)
{
    echo ("<p>Pas de résultats</p>\n");
}
else
{
while ($donnees = mysql_fetch_array($reponse) )
}
}
c'est la fonction que je n'ai pas bien comprise

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 déc. 2005, 18:31

$reponse = donnees();
c'est la fonction que je n'ai pas bien comprise
donnees() n'est pas une fonction (du moins je suppose que tu n'en ait pas créée avec ce nom).

La structure est correcte mais il faut utiliser la fonction mysql_num_rows() qui teste le nombre de ligne revoyées par la requete.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

28 déc. 2005, 13:28

re,

donc tu veux dire que je dois utiliser ça ?
	<?php

include('connection.inc.php');
$query = "SELECT * FROM agent WHERE nom LIKE '".$_POST['nom']."%' AND postal LIKE '".$_POST['postal']."%' 
AND ctp LIKE '".$_POST['ctp']."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

$reponse = mysql_num_rows();
if(reponse == 0)
{
    echo ("<p>Pas de résultats</p>\n");
}
else
{
while ($donnees = mysql_fetch_array($reponse) )
}
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 déc. 2005, 15:31

oui mais as tu regardé la doc (lien donné) sur cette fonction mysql_num_rows() ?!

elle prend un paramètre.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

28 déc. 2005, 15:36

oui pardon j'ai pas du faire attention en lisant.

donc si j'ai bien pigé le paramètre est :

<?php

include('connection.inc.php');
$query = "SELECT * FROM agent WHERE nom LIKE '".$_POST['nom']."%' AND postal LIKE '".$_POST['postal']."%'
AND ctp LIKE '".$_POST['ctp']."%' ORDER BY nom";
$reponse = mysql_query($query)or die ('Erreur SQL !<br>'.mysql_error());

$reponse = mysql_num_rows($donnees);
if(reponse == 0)
{
echo ("<p>Pas de résultats</p>\n");
}
else
{
while ($donnees = mysql_fetch_array($reponse) )
}

?>


mais cela me retourne cette erreur :


Parse error: parse error, unexpected '}' in c:\program files\easyphp1-7\www\site intranet\recherche2.php on line 96

La ligne 96 est la suivante :

}

^^

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 déc. 2005, 15:40

non d'où sort cette avriable $donnees ?? a ce niveau du code ?!

le paramètre est une resource et que dis la doc sur le retour de la fonction mysql_query() ?!

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute