Simplification du code

Simplification du code - PHP - Programmation

Marsh Posté le 27-04-2006 à 14:05:09    

Bonjour à tous,
 
J'aurais souhaité avoir un conseil pour simplifier un code...(enfin si on peut appeler ca un code).
 
J'ai créer un formulaire dans lequel l'utilisateur doit rentrer le jour,moi,années d'un rendez-vous ainsin que l'heure début et l'heure de fin.
 
Voila la chose

Code :
  1. echo "Date du rendez-vous  : jour <select name='jour'>
  2.            <option value=1>1
  3.            <option value=2>2
  4.            <option value=3>3
  5.            <option value=4>4
  6.            <option value=5>5
  7.            <option value=6>6
  8.            <option value=7>7
  9.            <option value=8>8
  10.            <option value=9>9
  11.            <option value=10>10
  12.            <option value=11>11
  13.            <option value=12>12
  14.            <option value=13>13
  15.            <option value=14>14
  16.            <option value=15>15
  17.            <option value=16>16
  18.            <option value=17>17
  19.            <option value=18>18
  20.            <option value=19>19
  21.            <option value=20>20
  22.            <option value=21>21
  23.            <option value=22>22
  24.            <option value=23>23
  25.            <option value=24>24
  26.            <option value=25>25
  27.            <option value=26>26
  28.            <option value=27>27
  29.            <option value=28>28
  30.            <option value=29>29
  31.            <option value=30>30
  32.            <option value=31>31
  33.           </select>
  34.          mois <select name='mois'>
  35.            <option value=1>Janvier
  36.            <option value=2>Fevrier
  37.            <option value=3>Mars
  38.            <option value=4>Avril
  39.            <option value=5>Mai
  40.            <option value=6>Juin
  41.            <option value=7>Juillet
  42.            <option value=8>Aout
  43.            <option value=9>Septembre
  44.            <option value=10>Octobre
  45.            <option value=11>Novembre
  46.            <option value=12>Decembre
  47.           </select>
  48.          annees <select name='annees'>
  49.            <option value=1>2005
  50.            <option value=2>2006
  51.            <option value=3>2007
  52.           </select><br>";


 
C'est laid n'est-ce pas !  :cry:  
 
Vu que je suis nul en prog je voulais savoir si il y avait moyen de mettre ca sous forme de variable ou je sais pas trop quoi, indiquer moi juste une piste.
 
Merci par avance, :jap:

Reply

Marsh Posté le 27-04-2006 à 14:05:09   

Reply

Marsh Posté le 27-04-2006 à 14:21:53    


Tu peux faire une boucle for :
 

Code :
  1. echo "Date du rendez-vous  : jour <select name='jour'>";
  2. for ($i = 1; $i <= 31; $i++) echo "<option value=$i>$i";


 
j'ai pas testé, fait longtemps que j'ai pas retouché au PHP,  
c'est ptet pas la bonne syntaxe mais t'as la logique.

Reply

Marsh Posté le 27-04-2006 à 14:31:27    

Je te remercie infiniment car c'est exactement ça.

Reply

Marsh Posté le 27-04-2006 à 14:54:57    

Le seul probleme c'est que je n'arrive pas à rajouter les mois à la suite des jours, car je pense laisser le code comme ca pour les mois ?

Reply

Marsh Posté le 27-04-2006 à 14:56:22    

oups dsl je n'ai rien dit je vienx de trouver.
 
Mille excuse,

Reply

Marsh Posté le 27-04-2006 à 14:58:50    

Code :
  1. $mois=array(1=>'Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
  2. for ($i=1;$i<13;$i++) {
  3. echo '<option value="'.$i.'">'.htmlentities($mois[$i]).'</option>'.chr(13);
  4. }


Reply

Marsh Posté le 27-04-2006 à 15:11:51    

Je te remercie, effectivement c'est beaucoup plus simple (quoique)
 
Je manque de logique pour ce genre de chose, je suis pas pres d'etre developpeur

Reply

Marsh Posté le 27-04-2006 à 15:16:46    

j'ai regardé sur http://fr2.php.net/manual/fr/function.htmlentities.php et je dois bien avouer que je n'est pas tout a fait saisi le sens de  

Code :
  1. .htmlentities($mois[$i])


 
Pourrais tu m'expliquer stp

Reply

Marsh Posté le 27-04-2006 à 15:21:08    

htmlentities sert à transcoder tes caractères en langage HTML, par exemple, il transforme

Code :
  1. é par &eacute;
  2. ê => &circ;
  3. & => &amp;
  4. Février devient F&eacute;vrier


Je le mets d'office quand je ne connais pas l'encodage de ta page même si ce n'est pas indispensable.


Message édité par The-Shadow le 27-04-2006 à 15:21:51
Reply

Marsh Posté le 27-04-2006 à 15:28:42    

ok je vois un peu mieux, c'est une maniere d'adapter quelque soit le type de code.
 

Reply

Marsh Posté le 27-04-2006 à 15:28:42   

Reply

Marsh Posté le 27-04-2006 à 15:35:35    

je voudrais juste poser un derniere question (enfin j'espere) j'ai utilisé à la fois ton code et celui de PepMat, le souci c'est que à l'affichage, ça me (concatene) le reste du formulaire
 

Code :
  1. echo "Date du rendez-vous  : <select name='jour'>";
  2.   for ($j = 1; $j <= 31; $j++)
  3.    echo "<option value=$j>$j";
  4.  echo "<select name='mois'>";
  5.   $mois=array(1=>'Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'); 
  6.   for ($i=1;$i<13;$i++)   
  7.    echo '<option value="'.$i.'">'.htmlentities($mois[$i]).'</option>'.chr(13); 
  8.  echo "<select name='annees'>";
  9.   for ($a = 2006; $a <= 2050; $a++)
  10.    echo "<option value=$a>$a"; //a ce niveau, ca m'affice "Heure du début du rendez-vous" dans la meme case en meme temp que les dates, et c'est pareil pour le reste  
  11.  echo "<br>Heure du début du rendez-vous : <select name='heure'>";
  12.   for ($h = 0; $h <= 23; $h++)
  13.    echo "<option value=$h>$h";
  14.  echo "<select name='minute'>";
  15.   for ($m = 0; $m <= 59; $m++)
  16.    echo "<option value=$m>$m"; 
  17.  echo "<select name='secondes'>";
  18.   for ($s = 0; $s <= 59; $s++)
  19.    echo "<option value=$s>$s";
  20.  echo "Heure de fin du rendez-vous  : <input type='text' name='heure_fin'><br>";
  21.  echo "<br><input type='submit' value='Enregistrer (INSERT)'>";
  22.  echo "<input type='hidden' name='ajout' value='1'>";
  23.  echo "</form>";


 
Exite t il des séparateur à mettre ?

Reply

Marsh Posté le 27-04-2006 à 15:41:11    

Bah normalement, .chr(13) à la fin des lignes. :D
 
Les options du mois sont concaténés aussi ?


Message édité par The-Shadow le 27-04-2006 à 15:41:42
Reply

Marsh Posté le 27-04-2006 à 15:51:38    

en faite, dans la liste pour les années, ca va jusqu'a 2050 et juste à coté de 2050 il m'affiche le nom du prochain select, ici c'est "Heure du début du rendez-vous". c'est pareil pour "Heure de fin du rendez-vous" qui est affiché dans la liste des secondes.
 
 
Mais j'ai remarqué que lorsque je ferme mon <select name='année'> par </select> après echo "<option value=$a>$a" ;(ce qui n'est pas le cas ici), cela ne le fait plus, mais il ne m'affiche plus qu'une seule année, en l'occurence, la valeur de base de $a. et ilm'affiche toutes les autres années comme du texte

Reply

Marsh Posté le 27-04-2006 à 15:55:30    

Prends quelques bonnes habitudes.

Code :
  1. for (...) {
  2. la boucle à exécuter dans des accolades.
  3. }


Ce n'est pas indispensable, mais c'est préférable, c'est plus facile de s'y retrouver dans le code et de plus, ça résoudra ton problème ici présent.

Reply

Marsh Posté le 27-04-2006 à 16:01:25    

Oui dsl, je suis d'accord avec toi ça fait plus propre mais cela ne résout pas le probleme

Reply

Marsh Posté le 27-04-2006 à 16:02:59    

akalaan a écrit :

Oui dsl, je suis d'accord avec toi ça fait plus propre mais cela ne résout pas le probleme


T'es sûr ?  :whistle:  

Reply

Marsh Posté le 27-04-2006 à 16:04:01    

Et bien je pense les avoirs correctement mis...
 

Code :
  1. function Ajouter() {
  2.  echo "<form action='action_agenda.php' method='post'>";
  3.  echo "<br>Client visité : <input type='text' name='client_visite'><br>";
  4.         echo "Date du rendez-vous  : <select name='jour'>";
  5.   for ($j = 1; $j <= 31; $j++) {
  6.    echo "<option value=$j>$j";
  7.  }
  8.  echo "<select name='mois'>";
  9.   $mois=array(1=>'Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'); 
  10.   for ($i=1;$i<13;$i++)  { 
  11.    echo '<option value="'.$i.'">'.htmlentities($mois[$i]).'</option>'.chr(13);
  12.  }
  13.  echo "<select name='annees'>";
  14.   for ($a = 2006; $a <= 2050; $a++) {
  15.    echo "<option value=$a>$a</select>";
  16.  }
  17.  echo "Heure du début du rendez-vous : <select name='heure'>";
  18.   for ($hd = 0; $hd <= 23; $hd++) {
  19.    echo "<option value=$hd>$hd";
  20.  }
  21.  echo "<select name='minute'>";
  22.   for ($md = 0; $md <= 59; $md++) {
  23.    echo "<option value=$md>$md";
  24.  }
  25.  echo "<select name='secondes'>";
  26.   for ($sd = 0; $sd <= 59; $sd++) {
  27.    echo "<option value=$sd>$sd</select>";
  28.  }
  29.  echo "Heure de fin du rendez-vous  : <select name='heure'>";
  30.   for ($hf = 0; $hf <= 23; $hf++) {
  31.    echo "<option value=$hf>$hf";
  32.  }
  33.  echo "<select name='minute'>";
  34.   for ($mf = 0; $mf <= 59; $mf++) {
  35.    echo "<option value=$mf>$mf";
  36.  }
  37.  echo "<select name='secondes'>";
  38.   for ($sf= 0; $sf <= 59; $sf++) {
  39.    echo "<option value=$sf>$sf</select>";
  40.  }
  41.  echo "<br><input type='submit' value='Enregistrer (INSERT)'>";
  42.  echo "<input type='hidden' name='ajout' value='1'>";
  43.  echo "</form>";
  44. }

Reply

Marsh Posté le 27-04-2006 à 16:04:40    

Penses à fermer les <option> également.

Reply

Marsh Posté le 27-04-2006 à 16:05:54    

Non, ils sont mal fermés.
Pense à fermer les <option> par </option> et regarde où tu fermes tes <select>.  :whistle:  
 
Ce n'est pas indispensable, mais ça évite de genre de déconvenu.


Message édité par The-Shadow le 27-04-2006 à 16:06:30
Reply

Marsh Posté le 27-04-2006 à 16:08:03    

Dsl, ça ne change rien

Reply

Marsh Posté le 27-04-2006 à 16:09:03    

Code :
  1. echo "<select name='annees'>";
  2.   for ($a = 2006; $a <= 2050; $a++) {
  3.    echo "<option value=$a>$a</option></select>";
  4.  }

Reply

Marsh Posté le 27-04-2006 à 16:12:01    

Ok je crois avoir compris
 
Les select se ferme juste avant le commencement d'un nouveau select et non a la fin de celui-ci

Reply

Marsh Posté le 27-04-2006 à 16:18:18    

Le select doit se fermer après la liste d'<option>, en aucun cas on ne doit trouver un </select> dans une boucle.

Code :
  1. echo "<select name='annees'>";
  2.                   for ($a = 2006; $a <= 2050; $a++) {
  3.                       echo "<option value=$a>$a</option>";
  4.               }
  5. echo '</select>';

Reply

Marsh Posté le 27-04-2006 à 16:23:38    

Je te remercie pour tes précieux conseil, maintenant je vais m'attaquer à la récupération de ces données vers une bdd MySQL.
 
Merci,

Reply

Marsh Posté le 27-04-2006 à 16:25:55    

Si tu veux un autre conseil, prend l'habitude de bien séparer les variables du texte, ex
Au lieu de :

Code :
  1. echo "<option value=$a>$a</option>";


Tu mets :

Code :
  1. echo '<option value='.$a.'>'.$a.'</option>';


 
C'est plus rapide pour le PHP à traiter et avec un éditeur à coloration syntaxique, tu t'y retrouveras mieux sur des gros projets.
 
Edit : Rien qu'avec la coloration sur HFR, la deuxième ligne est plus claire.


Message édité par The-Shadow le 27-04-2006 à 16:26:31
Reply

Marsh Posté le 27-04-2006 à 16:30:13    

Oui c'est vrai tu as raison, je vais essayer d'en prendre l'habitude

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed