condition if else non reconnue (php)
Dernière réponse : dans Programmation
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 ;-)
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 ;-)
Autres pages sur : condition else reconnue php
Lassé par la pub ? Créez un compte
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 :
Le problème pourrait venir de $sql. Tu peux montrer ton code précédent (avec ta requête) ?
Soit :
<?php 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>
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 ;-)
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 ;-)
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
<?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 :
essaie :
Je vais voir si je trouve le bug...
au lieu de :
$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";
essaie :
$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 "; //plusieurs test afin d'afficher le résultat en fonction des champs complétés ou sélectionnés if(!empty($nom)) $req .= "and nom like '%$nom%' "; if(!empty($prenom)) $req .= "and prenom like '%$prenom%' "; if(!empty($service)) $req .= "and lib_service like '%$service%' "; $req .= "order by nom, prenom, type_fonction";
Je vais voir si je trouve le bug...
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forum[php] Mettre une condition si un lien est cliqué
- ForumPHP Condition & feuille de style
- ForumProblème avec la condition "if... else"
- Forumj arrive pas a faire la condition " if ,else" en c/c++!!!!
- SolutionsVérification de variable dans une condition (PHP)
- Solutions[PHP] Condition
- Forum[PHP & MySQL] Conditions dans une requète SQL
- Forum[Php] Création d'un moteur de template, problème avec les conditions
- Forum[RESOLU][PHP] condition zarb ..
- Voir plus