Menu

[php] la page n'affiche rien [Fermé]

fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 10 juin 2006 à 09:07 - Dernière réponse : Thom@s 3434 Messages postés mardi 4 mars 2003Date d'inscriptionModérateurStatut 27 août 2010 Dernière intervention
- 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
Afficher la suite 

10 réponses

Thom@s 3434 Messages postés mardi 4 mars 2003Date d'inscriptionModérateurStatut 27 août 2010 Dernière intervention - 10 juin 2006 à 11:11
0
Merci
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+ :)
fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 10 juin 2006 à 11:49
0
Merci
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
Thom@s 3434 Messages postés mardi 4 mars 2003Date d'inscriptionModérateurStatut 27 août 2010 Dernière intervention - 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+ :)
fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 10 juin 2006 à 12:14
0
Merci
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(); ?>

Thom@s 3434 Messages postés mardi 4 mars 2003Date d'inscriptionModérateurStatut 27 août 2010 Dernière intervention - 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+ :)
fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 10 juin 2006 à 14:15
0
Merci
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();?> 

fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 11 juin 2006 à 11:36
0
Merci
salut
alors tu trouve quelque chose?
merci
Thom@s 3434 Messages postés mardi 4 mars 2003Date d'inscriptionModérateurStatut 27 août 2010 Dernière intervention - 11 juin 2006 à 22:17
0
Merci
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+ :)
fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 12 juin 2006 à 07:24
0
Merci
Salut
C'est bon ça marche !
Effectivement j'avais pas pensé à mettre le if au-dessus de while !
merci beaucoup !
Fabrice
Thom@s 3434 Messages postés mardi 4 mars 2003Date d'inscriptionModérateurStatut 27 août 2010 Dernière intervention - 12 juin 2006 à 11:51
De rien ;-)