[php] la page n'affiche rien

Fermé
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 - 10 juin 2006 à 09:07
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 - 12 juin 2006 à 11:51
Bonjour
J'ai fais un script permettant de cherchant dans la base de donnée une info taper par le visiteur grace à un formulaire html.
Cette page php qui récupère le $_post, et qui fais la recherche dans la bdd doit envoyer comme résultat : pas bon ou elle existe. Mais quand je cherche depuis le formulaire un mot rien ne s'affiche dans la page même pas un parce erreor rien du tout. PS : pour l'instant je n'ai rien dans la table sql ça devrait quand même m'afficher le message "pas bon"?
voici le code :

<? $entreprise=$_POST['entreprise']; ?>

<? $dbc = @mysql_connect ("localhost", "zone_zone", "****");

if(!mysql_errno($dbc)) {
  mysql_select_db("zone_bdd");

$query = "
SELECT * FROM telephonie WHERE
entreprise='$entreprise'";
$result = mysql_query($query);
while ($donnees = mysql_fetch_array($result) )
if(mysql_num_rows($result)==0)
	{
echo 'pas bon';} else{     echo 'elle existe';} } mysql_close(); ?>

merci de m'aider

7 réponses

Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 678
10 juin 2006 à 11:11
Salut !

Essaie peut-être comme ça :
<? $entreprise=$_POST['entreprise']; ?>

<?
$dbc = @mysql_connect ("localhost", "zone_zone", "****");

if(!mysql_errno($dbc)) {
      mysql_select_db("zone_bdd");

      $query = "SELECT * FROM telephonie WHERE".
      "entreprise='$entreprise'";
      $result = mysql_query($query);
      while ($donnees = mysql_fetch_array($result) ) {
            // boucle vide ?
      }
      if(mysql_num_rows($result)==0) {
            echo 'pas bon';
      }
      else {
            echo 'elle existe';
      }
}
mysql_close();
?>

Si ça marche, c'est que ça venait du fait que le if(mysql_num_rows... était inclus dans le while.
Or comme il n'y avait aucun résultat, le while ne n'exécutait pas, donc le if non plus (car inclus dans le while), et le else non plus (car lié au if, donc inclus dans le while aussi :-)

A+ :)
0
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
10 juin 2006 à 11:49
salut
merci
en fait ça marche car j'avais pas mi d'infos dans la table mais :
si une entreprise est présente, j'ai bien "elle existe" mais si le nom taper dans le formulaire n'existe pas dans la bdd, le script ne m'affiche rien? est-ce que ça vient toujours du {} dans while?
merci
0
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 678
10 juin 2006 à 11:55
Re,

est-ce que ça vient toujours du {} dans while?
Ben oui, c'est ce que je dis à la fin de mon message précédent :)

Si tu laisses le code comme il était :
- Si l'entreprise est présente dans la base, ça marche, parce que le while s'exécute, et donc le couple if/else (qui est inclus dans le while) s'exécute aussi.
- Mais si l'entreprise n'existe pas, le while ne s'exécute pas, et donc le couple il/else (qui est inclus dans le while) ne s'exécute pas non plus.

Il faut donc que le while d'une part, et le if/else d'autre part, soient clairement indépendants et séparés, et pour ça, il est préférable d'utiliser des accolades.

En règle générale, il vaut mieux mettre toujours des accolades pour toutes les structures (if, while, etc...), sans quoi le code risque d'être, comme ici, mal interprété :-)

Au fait, as-tu essayé avec le code que je t'ai donné ?
Normalement, ça devrait marcher (même dans le cas où l'entreprise recherchée n'est pas présente dans la base).

A+ :)
0
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
10 juin 2006 à 12:14
re
maintenant avec les {} c'est l'inverse ! quand l'entreprise existe, on ne voit pas les résultats et quand l'entreprise n'existe pas on voit bien le message d'erreur !
code actuel :
<? $entreprise=$_POST['entreprise']; ?>

<? $dbc = @mysql_connect ("localhost", "zone_zone", "****");

if(!mysql_errno($dbc)) {
  mysql_select_db("zone_bdd");

$query = "
SELECT * FROM telephonie WHERE
entreprise='$entreprise'";
$result = mysql_query($query);
while ($donnees = mysql_fetch_array($result) ){ }

if(mysql_num_rows($result)==0)
	{?> <html> Cette entreprise n'existe pas </html> <?
} else{?> <html><table><tr><td>  <br> Voici les résultats trouvés : <br> Entreprise :<? echo $donnees['entreprise'];?> <br> Numero non surtaxé :<?echo $donnees['numero1'];?> <br> Numero surtaxé :<? echo $donnees['numero2'];?> <br> Description :<? echo $donnees['description'];?> </td> </tr> </table></html> <?     } } mysql_close(); ?>

0
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 678
10 juin 2006 à 13:06
Salut !

Je ne sais pas si ça vient de là, mais on ne sait jamais ;-)

1°) Le requête, je l'écrirais plutôt comme ça :
$query = "SELECT * FROM telephonie WHERE entreprise='$entreprise'";
(sans retour à la ligne)

2°) Pour les tests, je ferais l'inverse :
if (mysql_num_rows($result)>0) {
     echo "L'entreprise existe";
}
else {
     echo "L'entreprise n'existe pas";
}

Si ça ne marche toujours pas, j'essaierai de tester le code, pour tenter de voir d'où vient le problème :)

A+ :)
0
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
10 juin 2006 à 14:15
re
j'ai fais comme tu m'as dis mais :
j'ai remplacer ==0 par >0 et :
si je met des echo dans le if et dans le else, j'ai le bon message l'ors de la demande d'entreprise mais moi mon script doit faire :
si il trouve l'entreprise, il affiche : entreprise , numero non surtaxé, numero surtaxé, description. Mais comme ça, il ne me met pas les résultats de mysql tu comprend?
avec le code ci-dessous si l'entreprise est présente, il ne me met pas les résultats de mysql mais sinon il met bien les messages d'erreurs, si l'entreprise n'existe pas peux-tu me corriger ça?
merci
<? $entreprise=$_POST['entreprise']; ?>

<? $dbc = @mysql_connect ("localhost", "zone_zone", "*****");

if(!mysql_errno($dbc)) {
  mysql_select_db("zone_bdd");

$query = "SELECT * FROM telephonie WHERE entreprise='$entreprise'";
$result = mysql_query($query);
while ($donnees = mysql_fetch_array($result) ){ } 

if(mysql_num_rows($result)>0)
	{?> <html> Entreprise :<? echo $donnees['entreprise'];?> <br> Numéro non surtaxé :<? 

echo $donnees['numero1'];?> <br> Numéro surtaxé :<? echo $donnees['numero2'];?> <br> Description :<? echo 

$donnees['description'];?> <br> </html> <?
} else{?> <html> Désolé, mais aucun numéros non surtaxés, n'est présent 

dans la base de donnée pour cette entreprise </html> <?  } } mysql_close();?> 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
11 juin 2006 à 11:36
salut
alors tu trouve quelque chose?
merci
0
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 678
11 juin 2006 à 22:17
Re,

Normalement, ça devrait marcher comme ça :
<? $entreprise=$_POST['entreprise']; ?>

<? $dbc = @mysql_connect ("localhost", "zone_zone", "*****");

if(!mysql_errno($dbc)) {
  mysql_select_db("zone_bdd");

  $query = "SELECT * FROM telephonie WHERE entreprise='$entreprise'";
  $result = mysql_query($query);

  if(mysql_num_rows($result)>0) {
    while ($donnees = mysql_fetch_array($result) ){ 
      echo '<html> Entreprise :'.$donnees['entreprise'].'<br>
      Numéro non surtaxé :'.$donnees['numero1'].'<br>
      Numéro surtaxé :'.$donnees['numero2'].'<br>
      Description :'.$donnees['description'].'<br> </html>';
    }
  }
  else {
      echo '<html> Désolé, mais aucun numéros non surtaxés, n\'est présent
      dans la base de donnée pour cette entreprise </html>';
  } 
} 

mysql_close();
?>

• Notes :
- Le while doit donc être inclus dans le if(num>0),
- Les instructions d'affichage (le code qui sert à afficher les informations) doivent absolument être dans le while.
- Plutôt que de fermer/ouvrir tout le temps la balise <? ?>, il est préférable, lorsque le texte affiché n'est pas très long, comme ici, d'utiliser echo 'mon texte'.$ma_variable.'mon texte suite';

A+ :)
0
fabrice11901 Messages postés 787 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 12 juillet 2007 64
12 juin 2006 à 07:24
Salut
C'est bon ça marche !
Effectivement j'avais pas pensé à mettre le if au-dessus de while !
merci beaucoup !
Fabrice
0
Thom@s Messages postés 3412 Date d'inscription mardi 4 mars 2003 Statut Modérateur Dernière intervention 28 septembre 2019 678
12 juin 2006 à 11:51
De rien ;-)
0