Page 1 sur 1
Générer un message d'erreur
Posté : 27 déc. 2005, 14:16
par betman
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

Posté : 27 déc. 2005, 14:22
par Cyrano
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.
Posté : 27 déc. 2005, 16:06
par betman
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?
Posté : 27 déc. 2005, 17:13
par Truc
Ce que t'as montré
Cyrano est un exemple !!!
Tu ne peut pas faire un copier coller comme ça sans comprendre
a la place de la fonction tu peut utiliser
mysql_num_rows() et action un entier (zéro).
Posté : 27 déc. 2005, 17:19
par betman
c'est pour ça que je demande des explications ^^

Posté : 27 déc. 2005, 17:43
par Truc
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.
Posté : 27 déc. 2005, 18:10
par betman
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
Posté : 27 déc. 2005, 18:31
par Truc
$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.
Posté : 28 déc. 2005, 13:28
par betman
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) )
}
?>
Posté : 28 déc. 2005, 15:31
par Truc
oui mais as tu regardé la doc (lien donné) sur cette fonction mysql_num_rows() ?!
elle prend un paramètre.
Posté : 28 déc. 2005, 15:36
par betman
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 :
}
^^
Posté : 28 déc. 2005, 15:40
par Truc
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() ?!