condition if else non reconnue (php)
Forum Programmation : condition if else non reconnue (php)
Salut,
J'ai un code écrit en php et html permettant de faire une recherche rapide (sur des agent)à partir des différents critères complétés dans le formulaire, ce code faisant bien sur appel a une base de donnée.
Voila, dans ma base il ya des personnes qui n'ont pas de n° de telephone attribué donc je test si c'est le cas dans un "if ($tel==' ' " ) "elseif ($tel!=' ' " ):
le problème est qu'il ne m'affiche que les personnes qui n'ont pas de numéro :-?
Pourtant quand je fais afficher le nombre de résultat de la requête il manque bcp de personnes (toutes celles qui ont un n° de tel).
Voila mon code pour plus de precision :
...
$res=mysql_num_rows($sql);
//test si le nombre de résultat est 0
if ($res==0){
print("<p align=\"center\" ><font size=\"5\">Désolé mais aucun numéro ne correspond aux critères fournis! </font></p>" );
print("<p align=\"center\"><font size=\"4\"><a href=\"javascript:history.back()\">Retour</a></a></font></p>" );
exit();}
else{
print("<font size=\"4\"><u>Nombre de résultat</u> : $res</font>" );?>
<p>
<!-- déclaration de l'entête du tableau qui contiendra le résultat -->
<table width="650" border="1" cellpadding="0" cellspacing="0">
<tr align="center">
<td><b>Nom</b></td>
<td><b>Prenom</b></td>
<td><b>Tel</b></td>
<td><b>Fonction</b></td>
<td><b>Libellé Service</b></td>
</tr>
<?php for($i=0 ; $i<$res; $i++) //boucle qui permet de faire afficher tous les résultats
{
$row = mysql_fetch_array($sql);
$tel=($row['Tel']);
//test si la personne n'a aucun n° de téléphone
if ($tel==''){
$tel= 'Aucun n° attribué';?>
<tr align="center">
<td><?php print($row['nom']) ?></td>
<td><?php print($row['prenom']) ?></td>
<td><?php print($tel) ?></td>
<td><?php print($row['type_fonction']) ?></td>
<td><?php print($row['lib_service']) ?></td>
</tr>
<?php}
elseif ($tel!=''){?>
<tr align="center">
<td><?php print($row['nom']) ?></td>
<td><?php print($row['prenom']) ?></td>
<td><?php print($tel) ?></td>
<td><?php print($row['type_fonction']) ?></td>
<td><?php print($row['lib_service']) ?></td>
</tr>
<?php
}
}}
mysql_close(); //fermeture de la connection
?>
J'ai essayé pas mal de choses, bien sur avant que je le mette sur un serveur le code fonctionné a merveille mais c'est de puis que j'ai mis les balises "<php? " à la place de "<?"
voila, j'espere que j'ai étais assez clair
Merci d'avance pour vos reponses ;-)
Juste une remarque : ta condition sur $tel peut être améliorée. Dans la mesure où tu affiche la même chose quelque soit la valeur de $tel, autant gérer l'affichage après la condition.
Soit :
Code :
|
Le problème pourrait venir de $sql. Tu peux montrer ton code précédent (avec ta requête) ?
Ma requête est bonne puisque avant ca marchais, c'est depuis que je l'ai installé sur un serveur que ca marche plus.
J'ai fais commme tu ma dis, effectivement c'est bcp plus simple et cohérent comme ca mais maintenant il m'affiche ceci comme erreur :
Parse error: syntax error, unexpected $end in C:\Intranet_27_janvier\Annuaire telephonique\annuaire_rech.php on line 95
la ligne 95 correspond a '?>' de mon code php :-?
lol donc ca veut dire qu'il y a un problème ultérieur, mais quoi !!??
bon au cas ou voici ma requete :
$req= "Select nom,prenom, Tel, fonction.num_fonction,fonction.type_fonction, service.lib_service
from agents, fonction, service, centres
where fonction.num_fonction = agents.num_fonction
and agents.code_centre= centres.code_centre
and centres.code_centre= service.code_centre and ";
voila j'espere que quelqun pourra m'éclairer, merci d'avance pour votre aide ;-)
T'as peut-être oublié un ";" .
D'accord avec -Julian-.
Dans ta requête, c'est quoi ce 'and' à la fin (un mauvais copier-coller peut-être) ?
Le mieux serait de voir ton code parce que là, on ne sait même pas ce qu'est $end... et puis j'aimerais bien voir comment tu initialises $sql.
ok voici mon code en entier (il est long) :
<?php
//récupération des données du fromulaire
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$service = $_POST['service'];
//supprime les éventuels espaces saisis par l'utilisateur
$nom=trim($nom);
$prenom=trim($prenom);
$service=trim($service);
//on test si les champs sont vides
if(empty($nom) && empty($prenom) && empty($fonction) && empty($service) && empty($fonction)) {
print("<p align=\"center\" ><font size=\"5\">Veuillez compléter au moins un champs! </font></p>" );
print("<p align=\"center\"><font size=\"4\"><a href=\"javascript:history.back()\">Retour</a></a></font></p>" );
exit();}
else
//on se connecte à la base de donnée
$connect= mysql_connect('localhost', 'root', 'pierre') or die ('Erreur de connexion '.mysql_error());
mysql_select_db('b_intranet',$connect) or die('Erreur de selection '.mysql_error());
//On selectionne les informations dans la base
$req= "Select nom,prenom, Tel, fonction.num_fonction,fonction.type_fonction, service.lib_service
from agents, fonction, service, centres
where fonction.num_fonction = agents.num_fonction
and agents.code_centre= centres.code_centre
and centres.code_centre= service.code_centre and ";
//plusieurs test afin d'afficher le résultat en fonction des champs complétés ou sélectionnés
if(!empty($nom) && !empty($prenom) && !empty($service)){
$req .= " nom like '%$nom%' and prenom like '%$prenom%' and lib_service like '%$service%'";
}
elseif (!empty($nom) && !empty($service)){
$req .= " nom like '%$nom%' and lib_service like '%$service%'";
}
elseif (!empty($prenom) && !empty($service)){
$req .= " prenom like '%$prenom%' and lib_service like '%$service%'";
}
elseif (!empty($nom) && !empty($prenom)){
$req .= " nom like '%$nom%' and prenom like '%$prenom%'";
}
else{
if(!empty($nom)){
$req .= " nom like '%$nom%'";
}
if(!empty($prenom)){
$req .= " prenom like '%$prenom%'";
}
if(!empty($service)){
$req .= " lib_service like '%$service%'";
}
}
$req .=" order by nom, prenom, type_fonction";
//on execute la requête
$sql=mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
//on récupère le nombre de résultat renvoyé par la requête
$res=mysql_num_rows($sql);
//test si le nombre de résultat est 0
if ($res==0){
print("<p align=\"center\" ><font size=\"5\">Désolé mais aucun numéro ne correspond aux critères fournis! </font></p>" );
print("<p align=\"center\"><font size=\"4\"><a href=\"javascript:history.back()\">Retour</a></a></font></p>" );
exit();}
else{
print("<font size=\"4\"><u>Nombre de résultat</u> : $res</font>" );?>
<p>
<!-- déclaration de l'entête du tableau qui contiendra le résultat -->
<table width="650" border="1" cellpadding="0" cellspacing="0">
<tr align="center">
<td><b>Nom</b></td>
<td><b>Prenom</b></td>
<td><b>Tel</b></td>
<td><b>Fonction</b></td>
<td><b>Libellé Service</b></td>
</tr>
<?php for($i=0 ; $i<$res; $i++) //boucle qui permet de faire afficher tous les résultats
{
$row = mysql_fetch_array($sql);
$tel=($row['Tel']);
//test si la personne n'a aucun n° de téléphone
if ($tel=='') {
$tel= 'Aucun n° attribué';}?>
<tr align="center">
<td><?php print($row['nom']) ?></td>
<td><?php print($row['prenom']) ?></td>
<td><?php print($tel) ?></td>
<td><?php print($row['type_fonction']) ?></td>
<td><?php print($row['lib_service']) ?></td>
</tr>
<?php}
}
mysql_close(); //fermeture de la connection
?>
voila
ça fait peut-être pas avancer le schmilblick mais tes conditions pour la requête peuvent être là encore améliorés :
au lieu de :
Code :
|
essaie :
Code :
|
Je vais voir si je trouve le bug...
Je crois que j'ai trouvé un truc : ton else juste avant la connexion n'a pas de '{' ni de '}'.
il a raison, mais a se moment lka sa t'afficheret une autre erreure en indiquant la derniere ligne du programme...
je crois que je te dois un grand merci :-D
Le problème venait effectivement de l'oubli des accolades. C'est souvent des trucs tout cons :-?
Enfin en tout cas merci pour ton aide précieuse ;-)
faut toujour faire attention ! les nom des var ect... une foit j'ai casser la tête a 20 personne sur un scripte qui fait plus de 500ligne, tous simplement pour un s rajouter a une variable ! :-D
De rien Zouzou_07 ! ;-)
N'oublie pas de mettre résolu !
Il y a 312 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
