si rien, on affiche rien

sebf
Invité n'ayant pas de compte PHPfrance

24 mai 2005, 22:43

Bjs,

voilà, je suis pas doué en php/mysql .....
je voudrais dans la requete qui suit, si pas d'enregistrement trouvé , on affiche rien du tout

un truc de base je pense, mais je blok dessus :cry:
$requete = "SELECT date, user, circuit, auto, min, sec, mil, tot_mil, style, console, pays,console, valid FROM a_gt4 WHERE 'true' = 'true'";
if ($user2 != "all") {
   $requete .= " AND user='$user2' "; 
}
$requete .= " ORDER BY circuit ASC";
$result = $db->sql_query($requete);
echo '<table border=\"0\"><tr><td VALIGN=top><a href=\"modules.php?name=GT4\"><img src="modules/Home/images/gt4.gif" border=0></a></td>';
echo '<td><table CELLPADDING="1" CELLSPACING="1">';
echo '<tr><td></td><td></td><td><B>Pilote (circuit)</B></td><td><b>Voiture</b></td><td><B>Temps</B></td><td></td><tr>';
$a = 1;

// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($result))
    { 
// on affiche les informations de l'enregistrements en cours 
$data['valid'] = str_replace("0","<img src=\"modules/Home/images/non.gif\">",$data['valid']);
$data['valid'] = str_replace("1","<img src=\"modules/Home/images/ok.gif\">",$data['valid']);
$data['pays'] = str_replace("France","<img src=\"images/championnat/fra.gif\" width=13>",$data['pays']);
$data['pays'] = str_replace("Belgique","<img src=\"images/championnat/bel.gif\" width=13>",$data['pays']);
$data['pays'] = str_replace("Canada","<img src=\"images/championnat/can.gif\" width=13>",$data['pays']);
$data['pays'] = str_replace("Suisse","<img src=\"images/championnat/sui.gif\" width=13>",$data['pays']);
$data['console'] = str_replace("PS2","<img src=\"images/championnat/icon_ps2.gif\">",$data['console']);
$b = $a++;
    echo "<tr><td><B>$b</B>. </td>";
    echo '<td></td><td>'.$data['user'].' '.$data['pays'].' ( '.$data['circuit'].' )</td><td>'.$data['auto'].'</td><td>'.$data['min'].'\''.$data['sec'].'"'.$data['mil'].'</td>';
    echo '<td>'.$data['valid'].'</td><td>'.$data['console'].'</td></tr>';
    }

echo '</table></td></tr></table>';

Merci d'avance :wink:

Mammouth du PHP | 19672 Messages

24 mai 2005, 22:57

Salut,
à priori, il manque des bouts de code, tu utilises quelle classe de connexion?

En attendant, fais donc du code efficace et ne fais pas générer inutilement du HTML, c'est un brin plus de travail à faire, mais c'est d'une part infiniment plus lisible et d'autre part plus rapide en exécution:
<?php
$requete = "SELECT date, user, circuit, auto, min, sec, mil, tot_mil, style, console, pays,console, valid FROM a_gt4 WHERE 'true' = 'true'";
if ($user2 != "all")
{
    $requete .= " AND user='".$user2."' ";
}
$requete .= " ORDER BY circuit ASC";
$result = $db->sql_query($requete);
?>
<table border="0">
  <tr>
    <td VALIGN=top><a href="modules.php?name=GT4"><img src="modules/Home/images/gt4.gif" border=0></a></td>
    <td>
      <table CELLPADDING="1" CELLSPACING="1">
        <tr>
          <td>
          </td>
          <td>
          </td>
          <td><B>Pilote (circuit)</B></td>
          <td><b>Voiture</b></td>
          <td><B>Temps</B></td>
          <td>
          </td>
          <tr>';
<?php
$a = 1;

// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($result))
{
    // on affiche les informations de l'enregistrements en cours
    $data['valid'] = str_replace("0","<img src=\"modules/Home/images/non.gif\">",$data['valid']);
    $data['valid'] = str_replace("1","<img src=\"modules/Home/images/ok.gif\">",$data['valid']);
    $data['pays'] = str_replace("France","<img src=\"images/championnat/fra.gif\" width=13>",$data['pays']);
    $data['pays'] = str_replace("Belgique","<img src=\"images/championnat/bel.gif\" width=13>",$data['pays']);
    $data['pays'] = str_replace("Canada","<img src=\"images/championnat/can.gif\" width=13>",$data['pays']);
    $data['pays'] = str_replace("Suisse","<img src=\"images/championnat/sui.gif\" width=13>",$data['pays']);
    $data['console'] = str_replace("PS2","<img src=\"images/championnat/icon_ps2.gif\">",$data['console']);
    $b = $a++;
?>
            <tr>
              <td><B><?php echo($b); ?></B>. </td>
              <td></td>
              <td><?php echo($data['user']." ".$data['pays']." ( ".$data['circuit']." )"); ?></td>
              <td><?php echo($data['auto']); ?></td>
              <td><?php echo($data['min']."'".$data['sec']."\"".$data['mil']); ?></td>
              <td><?php echo($data['valid']); ?></td>
              <td><?php echo($data['console']); ?></td>
            </tr>
<?php   
}
?>
Ce que je ne sais pas, c'est ce que doit te retourner $result quand tu fais exécuter la requête: envoi le code le la méthode de classe sql_query(); À partir de là, on pourra te guider :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 mai 2005, 22:58

tu peux connaitre le nombre d'enregistrements rétournés par ta requête avec la fonction mysql_num_rows(), et donc agir en conséquence

faire ton traitement si $nbre > 0

sebf
Invité n'ayant pas de compte PHPfrance

24 mai 2005, 23:15

heu, j'ai pas compris ce qui te manque cyrano ....
la requette elle est en haut du code, non ?! :?

ok ouckileou, mais je suis nul moi, je fais ca comment
(c'est pas moi qui est codé le debut, j'ai pris des ex par ci par là pour faire ca)

sebf
Invité n'ayant pas de compte PHPfrance

24 mai 2005, 23:37

j'ai fait ca
if (mysql_num_rows($result) == 0)
    {
        echo "rien dans la base";
    }
    else
    {  mon code
      }

c'est bon ? (en tout les cas, ca marche mais c'est peut etre bourin)

Mammouth du PHP | 19672 Messages

24 mai 2005, 23:45

Tu as ceci dans ton code :
$result = $db->sql_query($requete);
C'est un appel de méthode de classe typique, mais ne voyant pas le code de cette méthode ni ne sachat de quelle classe il s'agit, je n'ai aucune idée du type de valeur retourné dans la variable $result. C'est pour ça que je te demande le code de la méthode.

Si tout ce que je viens de dire est du chinois pour toi, alors explique moi cette ligne :) À priori, il manquerait en plus l'instanciation de ladite classe.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

25 mai 2005, 00:40

sinon pour le bout de code posté à propos du mysql_num_rows() c'est comme ça que ça marche oui :)