Se connecter avec
S'enregistrer | Connectez-vous

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 ;-)

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 :
  1. <?php
  2. if ($tel == '') $tel = 'Aucun n° attribué';
  3. ?>
  4. <tr align="center">
  5. <td><?php print($row['nom']) ?></td>
  6. <td><?php print($row['prenom']) ?></td>
  7. <td><?php print($tel) ?></td>
  8. <td><?php print($row['type_fonction']) ?></td>
  9. <td><?php print($row['lib_service']) ?></td>
  10. </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 ;-)

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 :
  1. $req= "Select nom,prenom, Tel, fonction.num_fonction,fonction.type_fonction, service.lib_service
  2. from agents, fonction, service, centres
  3. where fonction.num_fonction = agents.num_fonction
  4. and agents.code_centre= centres.code_centre
  5. and centres.code_centre= service.code_centre and ";
  6.  
  7. //plusieurs test afin d'afficher le résultat en fonction des champs complétés ou sélectionnés
  8. if(!empty($nom) && !empty($prenom) && !empty($service)){
  9. $req .= " nom like '%$nom%' and prenom like '%$prenom%' and lib_service like '%$service%'";
  10. }
  11. elseif (!empty($nom) && !empty($service)){
  12. $req .= " nom like '%$nom%' and lib_service like '%$service%'";
  13. }
  14. elseif (!empty($prenom) && !empty($service)){
  15. $req .= " prenom like '%$prenom%' and lib_service like '%$service%'";
  16. }
  17. elseif (!empty($nom) && !empty($prenom)){
  18. $req .= " nom like '%$nom%' and prenom like '%$prenom%'";
  19. }
  20. else{
  21. if(!empty($nom)){
  22. $req .= " nom like '%$nom%'";
  23. }
  24. if(!empty($prenom)){
  25. $req .= " prenom like '%$prenom%'";
  26. }
  27. if(!empty($service)){
  28. $req .= " lib_service like '%$service%'";
  29. }
  30. }
  31. $req .=" order by nom, prenom, type_fonction";


essaie :

  1. $req= "Select nom,prenom, Tel, fonction.num_fonction,fonction.type_fonction, service.lib_service
  2. from agents, fonction, service, centres
  3. where fonction.num_fonction = agents.num_fonction
  4. and agents.code_centre= centres.code_centre
  5. and centres.code_centre= service.code_centre ";
  6.  
  7. //plusieurs test afin d'afficher le résultat en fonction des champs complétés ou sélectionnés
  8. if(!empty($nom)) $req .= "and nom like '%$nom%' ";
  9. if(!empty($prenom)) $req .= "and prenom like '%$prenom%' ";
  10. if(!empty($service)) $req .= "and lib_service like '%$service%' ";
  11. $req .= "order by nom, prenom, type_fonction";


Je vais voir si je trouve le bug...
Lassé par la pub ? Créez un compte
Tom's guide dans le monde