Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2489 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Est-ce normal d'avoir 200 lignes de code pour en afficher 4 ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Est-ce normal d'avoir 200 lignes de code pour en afficher 4 ?

n°699951
Master_Jul
Posté le 15-04-2004 à 11:09:30  profilanswer
 

Hello,
 
voilà je suis en train de faire un « petit » script pour gérer des cours et leur numéro (première partie d'un exercice), voilà le résultat :
 
http://masterjul.homeip.net/tp_sql/gest_cours.php
 
Et voilà... le code :
http://masterjul.homeip.net/tp_sql/source_cours.php
 
Soit un peu plus de 200 lignes (avec les commentaires et le HTML certes). Je précise avant de voir arriver les vautours que le but n'est pas pour le moment de faire du code W3C compliant mais les remarques sont les bienvenues, quand même.
 
Ma question est surtout de savoir si l'on ne pas simplifier ce code ou c'est une taille normale. Et puis s'il y a des erreurs à la con, je veux bien des remarques aussi !
 
Je travaille en registe_global à off et error_reporting E_ALL. :p
 
Merci !
 
EDIT 17 AVRIL :  
 
Je viens de pondre la gestion des centres, préparez-vous psychologiquement avant de regarder le code :  
 
http://masterjul.homeip.net/tp_sql/gest_centres.php  
http://masterjul.homeip.net/tp_sql/source_centres.php


Message édité par Master_Jul le 17-04-2004 à 11:14:21

---------------
En français, on écrit "connexion", pas "connection".
mood
Publicité
Posté le 15-04-2004 à 11:09:30  profilanswer
 

n°700021
drasche
Posté le 15-04-2004 à 11:52:30  profilanswer
 

Tu pourrais virer tous ces echo et taper le code HTML en brut avec juste des echo ici et là pour afficher les données, ça me semble mieux et beaucoup plus lisible (pis tu te ferais pas chier avec l'échappement de quotes).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°700034
Arjuna
Aircraft Ident.: F-MBSD
Posté le 15-04-2004 à 12:17:06  profilanswer
 

Ce serait bien de te mettre d'accord avec toi-même : soit tu utilise le ' soit tu utilise le " pour les chaînes PHP, mais évite de mélanger les deux, quitte à mettre des caractères d'échappement à l'intérieur. Parceque c'est passablement illisible.

n°700045
Dj YeLL
$question = $to_be || !$to_be;
Posté le 15-04-2004 à 12:40:49  profilanswer
 

Bon, pour ce qui est du nombre de ligne de code, c'est pas evident de te répondre, je ne sais pas s'il y a des choses superflues...
 
Sinon voici comment moi je procède (mais bon, chacun sa méthode) :
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2.   <html>
  3.   <head>
  4.   <title>Gestion des cours</title>
  5.   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6.   <link href="tp_sql.css" rel="stylesheet" type="text/css">
  7.   <script type="text/javascript" language="javascript">
  8.   var confirmMsg  = 'Êtes-vous sûr(e) de vouloir supprimer ';
  9.   </script>
  10.   <script src="libraries/functions.js" type="text/javascript" language="javascript"></script>
  11.   </head>
  12.  
  13.   <body background="images/fond1.gif">
  14.   <div align="center">
  15.     <p class="police_std_titre">GESTION DES COURS</p>
  16.  
  17.   <?PHP
  18.  
  19.   //Paramètres de connexion à la base MySQL  
  20.  
  21.   require 'connexion.inc.php';
  22.  
  23.   //Connexion  
  24.   $connex = connex_base();
  25.   if (!$connex)
  26.   {
  27.      echo "Connexion à la base impossible, réessayez plus tard.";
  28.      exit;
  29.   }
  30.  
  31.   /*********************************************************\  
  32.     Fontion pour tester la présence d'un cours dans la base   
  33.     Test basé sur le numéro du cours                         
  34.   \*********************************************************/
  35.  
  36.   function presence_cours($cours)
  37.   {
  38.      $sql= "SELECT cours FROM cours WHERE cours=$cours";
  39.      $req= mysql_query($sql) or die('Erreur SQL : '.$sql.'<br>'.mysql_error());
  40.      $line = mysql_fetch_array($req);
  41.      
  42.      if($line)
  43.      {
  44.         return false;
  45.      }
  46.      else return true;
  47.     }
  48.  
  49.   // On extrait les variables passées dans l'URL  
  50.   extract($_GET,EXTR_OVERWRITE);
  51.  
  52.   // Les variables sont définies histoire de coder proprement  
  53.   if(!isset($action)) $action=null;
  54.     if(!isset($cours_existant_value)) $cours_existant_value=null;
  55.     if(!isset($tri)) $tri=null;
  56.    
  57.  
  58.   /******************\  
  59.     GESTION DU TRI                   
  60.   \******************/
  61.  
  62.   if($tri=='intitule')
  63.     $order_by="ORDER BY intitule";
  64.   else
  65.     $order_by="ORDER BY cours";
  66.  
  67.   /********************\  
  68.     AJOUT D'UN COURS                       
  69.   \********************/
  70.  
  71.   if($action=='ajouter')
  72.   {
  73.      
  74.      extract($_POST,EXTR_OVERWRITE);
  75.      
  76.      if(presence_cours($cours))
  77.      {
  78.         $intitule=strtoupper(trim($intitule));
  79.        
  80.         $sql= "INSERT INTO cours VALUES ($cours,'$intitule')";
  81.         $req= mysql_query($sql) or die('Erreur SQL : '.$sql.'<br>'.mysql_error());
  82.        
  83.         if(!$req) echo "Echec de l'insertion.";
  84.        } else
  85.      {
  86.         echo '<p class="header_table">Le  cours '.$cours.' existe d&eacute;j&agrave; !</p>';
  87.         $cours_existant_value=$intitule;
  88.      }
  89.      
  90.   }
  91.  
  92.  
  93.   /*************************\  
  94.     MODIFICATION D'UN COURS                       
  95.   \*************************/
  96.  
  97.   elseif($action=='modifier_valide')
  98.   {
  99.      extract($_POST,EXTR_OVERWRITE);
  100.      $intitule=strtoupper(trim($intitule));
  101.      
  102.      $sql= "UPDATE cours SET cours=$cours,intitule='$intitule' WHERE cours='$cours_mod'";
  103.      $req= mysql_query($sql) or die('Erreur SQL : '.$sql.'<br>'.mysql_error());
  104.      
  105.      if(!$req) echo "Echec de la modification.";
  106.     }
  107.  
  108.   /*************************\  
  109.     SUPPRESSION D'UN COURS                       
  110.   \*************************/
  111.  
  112.   elseif($action=='supprimer')
  113.   {
  114.      $sql= "DELETE FROM cours WHERE cours=$cours";
  115.      $req= mysql_query($sql) or die('Erreur SQL : '.$sql.'<br>'.mysql_error());
  116.      
  117.      if(!$req) echo "Echec de la suppression.";
  118.        
  119.   }
  120.  
  121.   /************************\  
  122.     CREATION DE LA LISTE                       
  123.   \************************/
  124.  
  125.   $sql= "SELECT * FROM cours $order_by";
  126.   $req= mysql_query($sql) or die('Erreur SQL : '.$sql.'<br>'.mysql_error());
  127.  
  128.  
  129.   // Entête du tableau  
  130. ?>
  131. <table width="60%"  border="0" align="center" bgcolor="#FFFFFF">
  132.    <tr bgcolor="#4E76A4" class="header_table">
  133.      <td><div align="center"><a href="gest_cours.php" class="header_table">N&deg;</a></div></td>
  134.      <td><div align="center"><a href="gest_cours.php?tri=intitule" class="header_table">Intitul&eacute;</a></div></td>
  135.      <td><div align="center">Modif.</div></td>
  136.      <td><div align="center">Suppr.</div></td>
  137.    </tr>
  138. <? 
  139.   // Compteur pour couleurs alternées  
  140.   $i=0;
  141.  
  142.   while($line = mysql_fetch_array($req))
  143.   {
  144.      // La couleur de fond de la ligne change une fois sur deux  
  145.      
  146.      if($i%2!=0) $bgcolor='#9FBED0'; else $bgcolor='#C2D6E2';
  147.        $i++;
  148.      echo '    <tr bgcolor="'.$bgcolor.'" class="police_std">'."\n";
  149.      
  150.      // Si l'on est en train de modifier une valeur  
  151.      if($action=='modifier' && $cours_mod==$line['cours'])
  152.      {
  153. ?>
  154. <form name="modif_cours_form" method="post" action="gest_cours.php?action=modifier_valide&cours_mod=<?=$cours_mod?>">
  155.  <td>
  156.   <input name="cours" type="text" size="3" value="<?=$line['cours']?>">
  157.  </td>
  158.  <td>
  159.   <input name="intitule" type="text" size="35" value="<?=$line['intitule']?>">
  160.  </td>
  161.  <td colspan="2">
  162.   <div align="center">
  163.   <input type="submit" name="Submit" value="Modifier ce cours">
  164.   </div>
  165.  </td>
  166. </form>
  167. <?
  168.      } else


 
++

n°700046
Dj YeLL
$question = $to_be || !$to_be;
Posté le 15-04-2004 à 12:44:15  profilanswer
 

Sinon j'ai aussi l'impression que tout est mélangé ... tu devrais peut etre séparer les differentes choses dans plusieurs fichiers, et faire des includes ... (ajout, suppression, edition etc...)
 
++

n°700130
Master_Jul
Posté le 15-04-2004 à 13:56:16  profilanswer
 

Nouvelle version, suivant vos conseils :
 
http://masterjul.homeip.net/tp_sql/source_cours.php
 
Sinon Dj YeLL, je dois tout faire en un seul fichier, et je ne saurai de toute façon pas trop comment dispatcher les tâches dans d'autres fichiers, à part 3 requêtes SQL tout reste assez « collé » à la page.


Message édité par Master_Jul le 15-04-2004 à 13:57:45

---------------
En français, on écrit "connexion", pas "connection".
n°700132
drasche
Posté le 15-04-2004 à 13:56:40  profilanswer
 

ça va pas marcher ton lien :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°700135
Master_Jul
Posté le 15-04-2004 à 13:58:10  profilanswer
 

drasche a écrit :

ça va pas marcher ton lien :D


 
Je viens de m'en appercevoir en le collant dans le premier post. :D


---------------
En français, on écrit "connexion", pas "connection".
n°700142
Master_Jul
Posté le 15-04-2004 à 14:00:45  profilanswer
 

Y'a 3 lignes de code qui ne servent à rien :
 
if(!$req) echo "Echec de la modification.";  
 
On ne peut pas les atteindre...


---------------
En français, on écrit "connexion", pas "connection".
n°700159
Dj YeLL
$question = $to_be || !$to_be;
Posté le 15-04-2004 à 14:14:00  profilanswer
 

Euh ... si tu mettais ton code dans un TXT on pourrait peut etre le lire ... parceque la, on ne verra que le HTML (c'est tout l'interet du PHP d'ailleurs) :)
 
++
 
 
Edit : OUPS, j'aurais mieux fait de cliquer avant de parler :D


Message édité par Dj YeLL le 15-04-2004 à 14:44:56
mood
Publicité
Posté le 15-04-2004 à 14:14:00  profilanswer
 

n°700185
kalex
Posté le 15-04-2004 à 14:36:42  profilanswer
 

Si c'est le nombre de ligne qui te tracasse, oui y a moyen de faire plus court.
 
Par exemple, remplace :

Code :
  1. if($tri=='intitule')
  2. $order_by="ORDER BY intitule";
  3. else
  4. $order_by="ORDER BY cours";


Par

Code :
  1. $order_by = 'ORDER BY '.($tri == 'intitule' ? $tri : 'cours');


Tu peux appliquer ça plusieurs fois dans ton code (ça marche aussi pour return...).
 
Et les commentaires façon entête sont un peu gros, il veut mieux expliquer au début du fichier ce que tu vas faire et ensuite commenter le minimum (des noms explicites pour les variables et fonctions suffisent souvent).
 
Enfin, ce n'est que mon avis. ;)


Message édité par kalex le 15-04-2004 à 14:59:31
n°700209
nico168
Posté le 15-04-2004 à 14:57:22  profilanswer
 

"Est-ce normal d'avoir 200 lignes de code pour en afficher 4 ?"
 
moi je vois pas de pertinence dans le rapport entre le nombre du ligne du code source et le nombre de ligne en sortie.

Code :
  1. <?php while(1) echo "toto<br>"; ?>


n°700226
Dj YeLL
$question = $to_be || !$to_be;
Posté le 15-04-2004 à 15:06:43  profilanswer
 

Pourtant il y en a ... de la pertinence à cette question ...
 
C'est pas le fait d'avoir 200 lignes de code pour en afficher 4 qui importe ici ....
 
C'est d'avoir 200 lignes de code alors qu'on pourrait peut-etre en avoir 100 ...
 
On appelle ça de l'optimisation ...
 
Suivant ton exemple, si je te met :
 
echo "t";
echo "o";
echo "t";
echo "o";
 
Tu crois pas qu'il serait plus interessant de le transformer en echo "toto"; ?
 
Donc oui, sa question est pertinente :D
 
CQFD
 
++

n°700228
drasche
Posté le 15-04-2004 à 15:07:55  profilanswer
 

disons que la formulation du titre du topic est erronée.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°700504
Master_Jul
Posté le 15-04-2004 à 19:18:48  profilanswer
 

kalex a écrit :

Si c'est le nombre de ligne qui te tracasse, oui y a moyen de faire plus court.
 
Par exemple, remplace :

Code :
  1. if($tri=='intitule')
  2. $order_by="ORDER BY intitule";
  3. else
  4. $order_by="ORDER BY cours";


Par

Code :
  1. $order_by = 'ORDER BY '.($tri == 'intitule' ? $tri : 'cours');


Tu peux appliquer ça plusieurs fois dans ton code (ça marche aussi pour return...).
 
Et les commentaires façon entête sont un peu gros, il veut mieux expliquer au début du fichier ce que tu vas faire et ensuite commenter le minimum (des noms explicites pour les variables et fonctions suffisent souvent).
 
Enfin, ce n'est que mon avis. ;)


 
Je n'ai pas très bien compris comment marchait cette syntaxe, j'ai essayé de trouver des trucs sur Google à « syntaxe courte » mais je n'ai rien trouvé. Enfin si, juste le echo court.


---------------
En français, on écrit "connexion", pas "connection".
n°700658
R3g
fonctionnaire certifié ITIL
Posté le 16-04-2004 à 00:11:25  profilanswer
 

Master_Jul a écrit :


 
Je n'ai pas très bien compris comment marchait cette syntaxe, j'ai essayé de trouver des trucs sur Google à « syntaxe courte » mais je n'ai rien trouvé. Enfin si, juste le echo court.

ça s'apelle opérateur ternaire et ça sert à remplacer un if. en gros ça s'écrit condition ? action_si_vrai : action_si_faux


---------------
Au royaume des sourds, les borgnes sont sourds.
n°700688
kalex
Posté le 16-04-2004 à 01:26:57  profilanswer
 

C'est bien ça. ;)  
La doc (voir en bas) :
http://www.unixtech.be/docs/php-fr [...] rison.html

n°700887
Master_Jul
Posté le 16-04-2004 à 11:35:47  profilanswer
 

Ok merci ! En fait j'avais du mal à comprendre à cause du $tri, j'aurai mieux compris comme ça :
 
$order_by = 'ORDER BY '.($tri == 'intitule' ? 'intitule' : 'cours'); :)


---------------
En français, on écrit "connexion", pas "connection".
n°700958
jagstang
Pa Capona ಠ_ಠ
Posté le 16-04-2004 à 12:49:25  profilanswer
 

Master_Jul a écrit :

Ok merci ! En fait j'avais du mal à comprendre à cause du $tri, j'aurai mieux compris comme ça :
 
$order_by = 'ORDER BY '.($tri == 'intitule' ? 'intitule' : 'cours'); :)


c'est pas de l'optimisation ça... ni pour la machine, et surtout pas pour le lecteur...

n°700961
Dj YeLL
$question = $to_be || !$to_be;
Posté le 16-04-2004 à 12:53:08  profilanswer
 

Surtout si l'intitulé est $tri = "Bienvenue dans la 1ère partie de notre courcernant la symbiose incorrecte entre les lapins géants d'Afrique du Sud et la tourtelle à 3 patte du Corridor Argenté"...
 
:D

n°700981
jagstang
Pa Capona ಠ_ಠ
Posté le 16-04-2004 à 13:06:55  profilanswer
 

mysql_close();  
 
Tu peux le faire bien avant la fin de la page ! Tout le monde fait la même erreur

n°701140
kalex
Posté le 16-04-2004 à 15:16:20  profilanswer
 

JagStang a écrit :


c'est pas de l'optimisation ça... ni pour la machine, et surtout pas pour le lecteur...

Pour le lecteur, je veux bien (et encore c'est pas parce qu'on le voit rarement en php que ce n'est pas extrêmement utile, justement pour alléger la syntaxe), mais pour la machine si ! Même si ici, les deux manières de faire sont si rapides qu'on ne verra jamais la différence.


Message édité par kalex le 16-04-2004 à 15:17:41
n°701145
jagstang
Pa Capona ಠ_ಠ
Posté le 16-04-2004 à 15:21:56  profilanswer
 

aucune différence à mon sens. PHP étant un language interprété, puis le résultat de celui-ci envoyé via un média instable comme internet, ce genre d'"optimisation" s'apparente  _vraiment_ à de l'enc**age de mouche.
 
a+

n°701148
Master_Jul
Posté le 16-04-2004 à 15:24:24  profilanswer
 

et sinon une petite question conne, au début j'avais fait
 
//modif
if {}
//ajout
if {}
// suppr
if {}
 
Et après, je me suis dit que je pouvais mettre d'un point de vu plus "logique" des elseif mais est-ce que celà change quelque chose du point de vu du code et de sa rapidité/façon d'éxécution ?  
 
À priori, je ne vois pas de différence si je ne termine pas la série de elseif par un else, ce dont je n'ai pas besoin ici.


---------------
En français, on écrit "connexion", pas "connection".
n°701152
jagstang
Pa Capona ಠ_ಠ
Posté le 16-04-2004 à 15:27:29  profilanswer
 

attend c'est du PHP là. c'est pas comme si ce code devait être exécuté des milliards de fois...
 
c'est clair que des if c'est plus long. mets un switch si tu veux.
 
Mais ça reste de l'optimisation à 2 balles je m'excuse... Le gars devra de toute façon attendre quelques ms avant de recevoir la page par le réseau.

n°701186
kalex
Posté le 16-04-2004 à 15:53:12  profilanswer
 

JagStang a écrit :

aucune différence à mon sens. PHP étant un language interprété, puis le résultat de celui-ci envoyé via un média instable comme internet, ce genre d'"optimisation" s'apparente  _vraiment_ à de l'enc**age de mouche.
 
a+

Tu dois pas aimer Perl toi ? ;)
Non, ça permet souvent d'ogmenter la lisibilité et la simplicité du code.
Je préfère faire :

Code :
  1. do_func(($var == 'ok' ? TRUE : FALSE), $var2, $var3);


Que :

Code :
  1. if($var == 'ok')
  2. do_func(TRUE, $var2, $var3);
  3. else
  4. do_func(FALSE, $var2, $var3);


C'est peut-être con pour toi, mais pour moi c'est plus clair et logique. Et surtout je ne vais dire à personne, que ne pas faire comme moi est stupide...
 
De plus que PHP soit un langage interprété est plutôt une bonne chose pour ce genre de truc...

n°701200
Master_Jul
Posté le 16-04-2004 à 16:07:03  profilanswer
 

Je viens de tranposer un return et ça fait quand même beaucoup plus propre [:mlc] :
 
Avant :
 
if($line)
{
return false;
}
else return true;
 
Après :
 
return ($line) ? false : true;


---------------
En français, on écrit "connexion", pas "connection".
n°701206
Master_Jul
Posté le 16-04-2004 à 16:13:55  profilanswer
 

Le code est mis à jour et je pense pour ainsi dire bouclé, merci à vous. :jap:
 
http://masterjul.homeip.net/tp_sql/source_cours.php


---------------
En français, on écrit "connexion", pas "connection".
n°701229
jagstang
Pa Capona ಠ_ಠ
Posté le 16-04-2004 à 16:28:35  profilanswer
 

Master_Jul a écrit :

Je viens de tranposer un return et ça fait quand même beaucoup plus propre [:mlc] :
 
Avant :
 
if($line)
{
return false;
}
else return true;
 
Après :
 
return ($line) ? false : true;
 


 
encore mieux. remplace  
 
return ($line) ? false : true;
 
par  
 
return ($line) ;
 

n°701235
Master_Jul
Posté le 16-04-2004 à 16:30:23  profilanswer
 

Ça ne serait pas plutôt return(!$line); ?


---------------
En français, on écrit "connexion", pas "connection".
n°701240
jagstang
Pa Capona ಠ_ಠ
Posté le 16-04-2004 à 16:31:25  profilanswer
 

oui bien vu. Alors ça marche ?

n°701243
Master_Jul
Posté le 16-04-2004 à 16:32:33  profilanswer
 

Impéc, merci. :jap:  
 
Bon, je vais passer au gros morceau, la gestion des centres.


---------------
En français, on écrit "connexion", pas "connection".
n°701259
kalex
Posté le 16-04-2004 à 16:43:03  profilanswer
 

Ça commence à devenir bien propre tout ça. ;)
Encore un enculage de mouches :D :
return (!mysql_fetch_array($req));

n°701581
Master_Jul
Posté le 17-04-2004 à 11:12:04  profilanswer
 

Je viens de pondre la gestion des centres, préparez-vous psychologiquement avant de regarder le code :
 
http://masterjul.homeip.net/tp_sql/gest_centres.php
http://masterjul.homeip.net/tp_sql/source_centres.php
 
Déjà, je ne vais faire qu'une fonction pour le changement de date, en utilisant un second argument.


Message édité par Master_Jul le 17-04-2004 à 11:13:51

---------------
En français, on écrit "connexion", pas "connection".
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Est-ce normal d'avoir 200 lignes de code pour en afficher 4 ?

 

Sujets relatifs
Extraire le code ISRC d'un CD audio[CSS]Pourriez vous m'aider pour ce code (CSS ELITE)
Afficher les dernières entrée d'une table ...trouver son temps de connexion internet et l'afficher
[PHP] Faire son code source en unicode...[MFC] Afficher une seconde vue sur un document besoin d'aide
un code écrit en assembleur est-il exécutable sur n'importe quel OS ?[pda pocket pc C#] code touche
[PHP] Probleme pour afficher un champ (bd) dans une page PHPafficher les sous ensembles d un ensembles. (gray inside)
Plus de sujets relatifs à : Est-ce normal d'avoir 200 lignes de code pour en afficher 4 ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR