Mon code marche mais il me semble complexe

Eléphant du PHP | 65 Messages

10 janv. 2007, 18:02

Salut tout le monde! :shock: J'ai codé un truc, ce code permet d'afficher 5 resultat par page, j'ai besoin de vos avis car j'ai l'impression de vraiment me compliquer la vie:

Code : Tout sélectionner

<?php mysql_connect($host, $user, $password) or die ("Erreur de connexion à la base sql :/"); mysql_select_db('livredor_db') or die ("Impossible de trouver la BDD"); $query = mysql_query("SELECT count(id) FROM livredor"); $row = mysql_fetch_row($query); $total = $row[0]; $nombre = "5"; if (isset($_GET['limite']) && is_numeric($_GET['limite']) && $_GET['limite'] + $nombre < $total){ $limite = $_GET['limite']; $suivant = $limite + $nombre; echo '<a href="'.$_SERVER['PHP_SELF'].'?limite='.$suivant.'">Suivant</a>'; } if (isset($_GET['limite']) && is_numeric($_GET['limite']) && $_GET['limite'] != 0){ $limite = $_GET['limite']; $precedant = $limite - $nombre; echo '<a href="'.$_SERVER['PHP_SELF'].'?limite='.$precedant.'">Precedant</a>'; } if (!isset($_GET['limite'])){ $limite = 0; $suivant = $limite + $nombre; echo '<a href="'.$_SERVER['PHP_SELF'].'?limite='.$suivant.'">Suivant</a>'; } if ($total){ $query = mysql_query("SELECT * FROM livredor ORDER BY id DESC LIMIT $limite, $nombre"); echo '<table width="900" border="0" cellspacing="1" cellpadding="0" align="center">'; while ($array = mysql_fetch_array($query)){ echo '<tr> <td width="900">Commentaire n°'.$array['id'].'</td> </tr> <tr> <td widht="900"> <table width="900" border="0" cellspacing="0" cellpading="0"> <tr> <td width="150">Nom : '.$array['pseudo'].'</td> <td width="750">Mail : '.$array['mail'].'</td> </tr> </table> </td> <tr> <td width="900">Message : '.$array['message'].'</td> </tr> <tr> <td height="15"></td> </tr>'; } echo '</table>'; } else{ echo 'Aucune entrée'; } mysql_free_result($query);
Est-ce que j'ai bien codé? Ou est-ce que c'est médiocre? J'ai vraiment l'impression que c'est nul

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 janv. 2007, 18:27

Bah il est très bien ce code.... y a pas grand chose à redire :)

Eventuellement, tu peux simplifier les 3 premiers if() (le 3ème étant le même que le 1er pour le cas ou $limite est à 0)
$limite = isset($_GET['limite']) ? $_GET['limite'] : 0;

if (is_numeric($limite) && $limite+$nombre < $total) { 
  $suivant = $limite + $nombre; 
  echo '<a href="'.$_SERVER['PHP_SELF'].'?limite='.$suivant.'">Suivant</a>'; 
} 
if (is_numeric($limite) && $limite > 0) { 
  $precedent = $limite - $nombre; 
  echo '<a href="'.$_SERVER['PHP_SELF'].'?limite='.$precedent.'">Précédent</a>'; 
} 
Et personnellement, quand j'ai une grosse quantité de html, je préfère sortir du php, mais c'est pas obligatoire :
<?php
while ($array = mysql_fetch_array($query)){ 
  ?>
      <tr> 
            <td width="900">Commentaire n°<?php echo $array['id'];?></td> 
         </tr> 
         <tr> 
            <td widht="900"> 
            <table width="900" border="0" cellspacing="0" cellpading="0"> 
            <tr> 
               <td width="150">Nom : <?php echo $array['pseudo'];?></td> 
               <td width="750">Mail : <?php echo $array['mail'];?></td> 
            </tr> 
            </table> 
            </td> 
         <tr> 
            <td width="900">Message : <?php echo $array['message'];?></td> 
         </tr> 
         <tr> 
            <td height="15"></td> 
         </tr>
  <?php 
      } 
?>
Tu n'es pas obligé non plus de mettre du width="900" partout (t'as d'ailleurs un "widht" qui traine ;)). Le simple fait d'avoir tes deux cellules à 150 et 750 imposera automatiquement une taille de 900px à tout le reste du tableau :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 445 Messages

10 janv. 2007, 18:34

Et $nombre étant constant, pourquoi ne pas en faire une constante ?

D'ailleurs, à ce propos, les constantes optimisent-elles le code dans ce genre de cas ?
<?php

define('NOMBRE', 5);

?>
LLDC
Ulti

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 janv. 2007, 18:45

Je ne pense pas que les constantes soient plus optimisées (ou moins d'ailleurs) ques les variables classiques.

Le gros avantage par rapport aux variables, c'est qu'elles sont implicitement globales, donc pas besoin de les déclarer comme tel dans des classes ou des fonctions, mais comme il n'en a pas l'usage ici...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 65 Messages

10 janv. 2007, 19:33

J'avais pris l'habitude de programmer comme ca car souvent je fais des tableau sur des tableau sur des tableau etc()... :shock:

pour ce qui est d'une function, ca pourrais être pas mal que j'en crais une, car je ne sais pas m'en servir! je vais essayer de creer une fonction tiens!
Ultim en ce qui concerne la constante oui c'est envisageable! etant donné que $nombre ne change pas! Ca pourrais m'entrainer

Ryle, j'aurais une petite question à te poser
Est ce que ca serais possible de faire un topic exercices sur ce forum, les moderateurs ou membres qui ont de l'experience donnent des instructions avec un delais et nous les debutants ont crais le programme en consequence? ca serais excellent!