Page 1 sur 1

si rien, on affiche rien

Posté : 24 mai 2005, 22:43
par sebf
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:

Posté : 24 mai 2005, 22:57
par Cyrano
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 :)

Posté : 24 mai 2005, 22:58
par ouckileou
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

Posté : 24 mai 2005, 23:15
par sebf
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)

Posté : 24 mai 2005, 23:37
par sebf
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)

Posté : 24 mai 2005, 23:45
par Cyrano
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.

Posté : 25 mai 2005, 00:40
par ouckileou
sinon pour le bout de code posté à propos du mysql_num_rows() c'est comme ça que ça marche oui :)