Gestion d'une permanence pour une association

Gestion d'une permanence pour une association - HTML/CSS - Programmation

Marsh Posté le 03-11-2008 à 10:16:23    

Bonjour à tous,  :hello:  
 
Je voudrais créer une page web où des personnes de mon association pourraient s'inscrire par plage horaire.  
Il faudrait pouvoir fixer un nombre de personne maximum par plage horaire.  
L'authentification serait un plus pour permettre de modifier ses inscriptions.
 
Existe-t-il déjà une telle solution et dans le cas contraire, quelle serait la solution la plus adaptée?
 
Je reste disponible pour toute question si la formulation n''est pas claire.
 
Merci d'avance,
 
Neoraptor

Reply

Marsh Posté le 03-11-2008 à 10:16:23   

Reply

Marsh Posté le 03-11-2008 à 23:07:31    

Je me permet de faire un petit up.
 
Je pense que je vais essayer de développer le bout de code moi-même.
 
Avez-vous quelques conseils à suivre pour réaliser cette application (je ne connais pas encore très bien les technos web)?
 

Reply

Marsh Posté le 03-11-2008 à 23:09:26    

Reply

Marsh Posté le 04-11-2008 à 11:27:15    

Ca ressemble vachement à un simple calendrier en ligne partagé... Je doute qu'une recherche Google ne te donne pas au moins un produit gratuit tout fait qui ferait l'affaire.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-11-2008 à 19:45:07    

Je me suis créé un script en php pour réaliser la gestion.
 
Pouvez-vous m'indiquer ce qui peut-être optimisé ou s'il y a des défauts de conception?
Ceci est mon premier script PHP, donc j'aimerais savoir si je suis parti du bon pied ou pas.
 
Merci d'avance.
 
 
Voici le script :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="fr-CH" xml:lang="fr-CH">
  4.    <head>
  5.       <title>Inscription</title>
  6.   <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  7. <link rel="stylesheet" type="text/css" href="style.css"/>
  8.    </head>
  9. <body>
  10. <?php
  11.     // Récupération de paramètres passés par la méthode GET
  12.     $sam14 = $_POST["sam14"];
  13.     $dim15 = $_POST["dim15"];
  14.     $sam21 = $_POST["sam21"];
  15.     $dim22 = $_POST["dim22"];
  16.     $Submit1 = $_POST["Submit1"];
  17. $groupe = $_POST["groupe"]."/";
  18.     $Nom=$_POST["NOM"]."\n";
  19.    
  20.     if ($Submit1<>"" )
  21.      effacer_fichier();
  22.    
  23.     ecrire_fichier($sam14,$Nom,$groupe."sam14_" );
  24. ecrire_fichier($dim15,$Nom,$groupe."dim15_" );
  25. ecrire_fichier($sam21,$Nom,$groupe."sam21_" );
  26. ecrire_fichier($dim22,$Nom,$groupe."dim22_" );
  27. ?>
  28. <?php
  29. function ecrire_fichier($periode, $nom, $fichier)
  30. {
  31. if ($nom<>"\n" )
  32. {
  33. for ($i=0; $i<=count($periode); $i++)
  34.  {
  35.   if ($periode[$i]!="" )
  36.   {
  37.       $ouvre=fopen($fichier.$periode[$i].".txt","a+" );
  38.    fwrite($ouvre,$nom);
  39.    fclose($ouvre);
  40.   }
  41.         }
  42. }
  43. }
  44. ?>
  45. <?php
  46. function effacer_fichier()
  47. {
  48. $path_tab=array(2=>"groupe1",3=>"groupe2",4=>"groupe3" );
  49. $filename_tab=array("","sam14_14.txt","sam14_15.txt","sam14_16.txt",
  50.   "dim15_14.txt","dim15_15.txt","dim15_16.txt",
  51.   "sam21_14.txt","sam21_15.txt","sam21_16.txt",
  52.   "dim22_14.txt","dim22_15.txt","dim22_16.txt" );
  53. for ($i=1;$i<=12;$i++)
  54. {
  55.  for ($j=2;$j<=4;$j++)
  56.  {
  57.   $ouvre=fopen($path_tab[$j]."/".$filename_tab[$i],"w+" );
  58.   fwrite($ouvre,"" );
  59.   fclose($ouvre);
  60.  }
  61. }
  62. }
  63. ?>
  64. <?php
  65. function lire_fichier($fichier1)
  66. {
  67. $ouvre=fopen($fichier1,"r" ); // ouverture fichier en lecture "r"
  68. $nb_ligne=0;
  69. while($row=fgets($ouvre))
  70.  {
  71.  echo $row."<br/>";
  72.  $nb_ligne++;
  73.  }
  74. fclose($ouvre);         // fermeture fichier
  75. }
  76. ?>
  77. <h1>Tableau inscription</h1>
  78. <?php
  79. $N=4;
  80. $date_tab=array("samedi 13/12/08","dimanche 14/12/08",
  81.     "samedi 20/12/08","dimanche 21/12/08" );
  82. $header_tab=array("","","groupe1oliques","groupe2estants","groupe3géliques" );
  83. $periode_tab=array("14h-15h","15h-16h","16h-17h" );
  84. $path_tab=array(2=>"groupe1",3=>"groupe2",4=>"groupe3" );
  85. $filename_tab=array("","sam14_14.txt","sam14_15.txt","sam14_16.txt",
  86.   "dim15_14.txt","dim15_15.txt","dim15_16.txt",
  87.   "sam21_14.txt","sam21_15.txt","sam21_16.txt",
  88.   "dim22_14.txt","dim22_15.txt","dim22_16.txt" );
  89. echo "<table border=\"1\">";
  90. echo "<tr>";
  91. for ($k=1;$k<=4;$k++)
  92.  echo "<td class=\"Titre\">$header_tab[$k]</td>";
  93. echo "</tr>";
  94. for ($i=1; $i<=12; $i++)
  95. {
  96. echo "<tr>";
  97. for ($j=1; $j<=4; $j++)
  98. {
  99.  if ($j==1) {
  100.   if (($i-1) % 3 == 0)
  101.   {
  102.   $tmp=($i-1)/3;
  103.   echo "<td class=\"diagonale\" >$date_tab[$tmp]</td></tr><tr>";
  104.   }
  105.      $tmp=($i-1)%3;
  106.   echo "<td class=\"Titre\">$periode_tab[$tmp]</td>";
  107.  }
  108.  else
  109.  {
  110.   echo "<td class=\"normale\">";
  111.   lire_fichier($path_tab[$j]."/".$filename_tab[$i]);
  112.   echo "</td>";
  113.  }
  114. }
  115. echo "</tr>";
  116. }
  117. echo "</table>";
  118. ?>
  119. <br/>
  120. <br/>
  121. <h1>Formulaire d'inscription</h1>
  122. <hr></hr>
  123. <form action="test.php" method="post" enctype="multipart/form-data">
  124.  <p>
  125.   <label> Nom</label>
  126.   <input type="text" name="NOM" size="40"/>
  127.  </p>
  128.  <p>
  129.   <label> Samedi 14/12/08</label><br/>
  130.    <label><input type="checkbox" name="sam14[]" value="14"/>14h-15h</label>
  131.    <label><input type="checkbox" name="sam14[]" value="15"/>15h-16h</label>
  132.    <label><input type="checkbox" name="sam14[]" value="16"/>16h-17h</label>
  133.  </p>
  134.  <p>
  135.   <label> Dimanche 15/12/08</label><br/>
  136.    <label><input type="checkbox" name="dim15[]" value="14"/>14h-15h</label>
  137.    <label><input type="checkbox" name="dim15[]" value="15"/>15h-16h</label>
  138.    <label><input type="checkbox" name="dim15[]" value="16"/>16h-17h</label>
  139.  </p>
  140.  <p>
  141.   <label> Samedi 21/12/08</label><br/>
  142.    <label><input type="checkbox" name="sam21[]" value="14"/>14h-15h</label>
  143.    <label><input type="checkbox" name="sam21[]" value="15"/>15h-16h</label>
  144.    <label><input type="checkbox" name="sam21[]" value="16"/>16h-17h</label>
  145.  </p>
  146.  <p>
  147.   <label> Dimanche 22/12/08</label><br/>
  148.    <label><input type="checkbox" name="dim22[]" value="14"/>14h-15h</label>
  149.    <label><input type="checkbox" name="dim22[]" value="15"/>15h-16h</label>
  150.    <label><input type="checkbox" name="dim22[]" value="16"/>16h-17h</label>
  151.  </p>
  152.  <p>
  153.   <label> Groupe</label><br/>
  154.    <label> <input type="radio" name="groupe" value="groupe1" checked="checked" />groupe1</label>
  155.    <label> <input type="radio" name="groupe" value="groupe2"/>groupe2</label>
  156.    <label> <input type="radio" name="groupe" value="groupe3" />groupe3</label>
  157.  </p>
  158.  <p>
  159.   <input type="submit" name="Submit" value="Envoyer" />
  160.   <input type="submit" name="Submit1" value="Reset table" />
  161.  </p>
  162.  <p>
  163.   <input type="reset" name="Reset" value="Remise à zéro" />
  164.  </p>
  165. </form>
  166. <hr></hr>
  167. <p>
  168.  <a href="http://validator.w3.org/check?uri=referer"><img
  169.   src="http://www.w3.org/Icons/valid-xhtml10-blue"
  170.   alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
  171. </p>
  172. </body>
  173. </html>

Reply

Marsh Posté le 10-11-2008 à 10:29:11    

Google agenda est ton ami =)...


---------------
C'est lorsqu'on a tout perdu qu'on est libre de faire tout ce que l'on veut...(Edward Norton, Fight Club)
Reply

Marsh Posté le 10-11-2008 à 12:47:24    

Et que pensez-vous du script proprement dit, sur le point de vue du codage?
 
Je souhaite continuer à développer en PHP afin de mieux découvrir les possibilités de PHP.

Reply

Marsh Posté le 11-11-2008 à 18:26:40    

Je me permet un petit up.
 
Que pensez-vous du code et de son architecture?
Y a t-il des choses à reprendre? Que puis-je améliorer?
 
Merci d'avance pour vos idées / commentaires / critiques.

Reply

Marsh Posté le 11-11-2008 à 18:45:12    

J'ai à peine regardé et j'ai déjà deux remarques à faire :
- Pourquoi ne pas utiliser une BDD ?
- Evites de mettre du HTML dans un echo :/

Reply

Marsh Posté le 13-11-2008 à 20:34:19    

J'ai réalisé la migration vers MySQL.  :wahoo:  
J'ai par ailleurs rajouté un moyen de supprimer des personnes et leurs périodes associées.
 
Y a-t-il des points où il faut faire attention (requêtes SQL, sécurité, autre) ? Et concernant le code, est-ce assez propre ou il y a des parties à revoir?
 
Merci de vos avis.  :jap:  
 
Voici le script principal (test.php) :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="fr-CH" xml:lang="fr-CH">
  4.    <head>
  5.       <title>Inscription</title>
  6.   <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  7. <link rel="stylesheet" type="text/css" href="style.css"/>
  8.    </head>
  9. <body onload="Grise('liste2','Supprimer');">
  10. <?php
  11.  // Vérifie état boutons Reset et Envoyer
  12.  $Submit = $_POST["Submit"];
  13.  $Submit1 = $_POST["Submit1"];
  14.  if ($Submit1<>"" )
  15.   effacer_fichier();
  16.  if ($Submit<>"" ) {
  17.   ecrire_fichier();
  18.  }
  19. ?>
  20. <?php
  21.  $Supprimer = $_POST["Supprimer"];
  22.  $noms = $_POST["liste2"];
  23.  echo $noms;
  24.  if ($Supprimer<>"" )
  25.   effacer_personne($noms);
  26. ?>
  27. <?php
  28.  function ecrire_fichier()
  29.  {
  30.   $nom=$_POST["NOM"];
  31.   $tel=$_POST["TEL"];
  32.   $email=$_POST["EMAIL"];
  33.   $sam14 = $_POST["sam14"];
  34.   $dim15 = $_POST["dim15"];
  35.   $sam21 = $_POST["sam21"];
  36.   $dim22 = $_POST["dim22"];
  37.   $groupe = $_POST["groupe"];
  38.   $fichier=array("","sam14_","dim15_","sam21_","dim22_" );
  39.   $valeur=array("",$sam14,$dim15,$sam21,$dim22);
  40.   if ($nom<>"" ) {
  41.    // Connexion MySQL
  42.    $db = mysql_connect('localhost', 'user', 'pass');
  43.    mysql_select_db('gestionPermance);
  44.    $sql="SELECT * FROM Personne where Personne.NomPersonne='$nom'";
  45.    $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  46.    // Vérifie si utilisateur déjà existant
  47.    if (mysql_affected_rows()<>0) {
  48.     echo 'Cette personne existe déjà';
  49.     echo '<br/> Entrer un autre nom';
  50.    }
  51.    else {
  52.     // 1. Insérer Personne
  53.     $sql = "INSERT INTO Personne VALUES('','$nom','$tel','$email','$groupe')";
  54.     mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  55.     $sql="SELECT NoPersonne FROM Personne where NomPersonne='$nom'";
  56.     $result=mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  57.     $tmp = mysql_fetch_array($result);
  58.     $noPersonne=$tmp[0];
  59.     for ($i=1;$i<=4;$i++) {
  60.      $passage=$passage+parcoursInsertion($noPersonne,$fichier[$i],$valeur[$i]);
  61.     }
  62.     if ($passage==0) {
  63.      echo "Vous devez vous inscrire à au moins un crénau pour être validé.";
  64.      effacer_personne($nom);
  65.     }
  66.    }
  67.    mysql_close();
  68.   }
  69.  }
  70. ?>
  71. <?php
  72.  function parcoursInsertion($noPersonne,$fichier,$periode) {
  73.   $passage=0;
  74.   for ($i=0; $i<=count($periode); $i++) {
  75.    if ($periode[$i]<>"" ) {
  76.     $passage=1;
  77.     // 2. MàJ Inscription      
  78.     $temp = $fichier.$periode[$i];
  79.     $sql = "INSERT INTO Periode VALUES('','$temp','$noPersonne')";
  80.     mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  81.    }
  82.      }
  83.      return $passage;
  84.     }
  85. ?>
  86. <?php
  87.  function effacer_personne($nom) {
  88.   if ($nom<>"" ) {
  89.    $db = mysql_connect('localhost', 'user', 'pass');
  90.    mysql_select_db('gestionPermance);
  91.    $sql="SELECT Personne.NoPersonne FROM Personne where Personne.NomPersonne='$nom'";
  92.    $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  93.    $tmp = mysql_fetch_array($rep);
  94.    // Vérifie si utilisateur existe
  95.    if ($tmp<>0) {
  96.     $noPersonne=$tmp[0];
  97.     $sql="Delete Periode.* FROM Periode where Periode.FK_NoPersonne='$noPersonne'";
  98.     $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  99.     $sql="Delete Personne.* FROM Personne where Personne.NoPersonne='$noPersonne'";
  100.     $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  101.    }
  102.    else {
  103.     echo 'Cette personne n\'existe pas';
  104.     echo '<br/> Entrer un autre nom';
  105.    }
  106.   }
  107.  }
  108. ?>
  109. <?php
  110.  function effacer_fichier() {
  111.   $db = mysql_connect('localhost', 'user', 'pass');
  112.   mysql_select_db('gestionPermance);
  113.   $sql="Delete Periode.* FROM Periode";
  114.   $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  115.   $sql="Delete Personne.* FROM Personne";
  116.   $rep = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  117.  }
  118. ?>
  119. <?php
  120.  function lire_fichier($groupe, $periode) {
  121.   $db = mysql_connect('localhost', 'user', 'pass');
  122.   mysql_select_db('gestionPermance);
  123.   $periode="\"$periode\"";
  124.   $groupe="\"$groupe\"";
  125.   $sql ="select t1.NomPersonne, t1.Tel, t1.Email from (
  126.    select * from Personne
  127.    left outer join Periode
  128.    on Periode.FK_NoPersonne=Personne.NoPersonne) as t1
  129.   Where t1.NomPeriode=$periode AND t1.Groupe=$groupe ORDER BY `NomPersonne`";
  130.   $reponse = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  131.   while ($donnees = mysql_fetch_array($reponse) )
  132.   {
  133.    echo $donnees['NomPersonne'] . "(".$donnees['Tel']." / ".$donnees['Email']." )";
  134.    echo "<br/>";
  135.   }
  136.   mysql_close();
  137.  }
  138. ?>
  139. <!-- Affichage du tableau d'inscription -->
  140. <div>
  141.  <h1>Tableau inscription</h1>
  142.  <hr></hr>
  143.  <table border="1">
  144.  <tr>
  145.  <?php
  146.   $N=4;
  147.   $date_tab=array("samedi 13/12/08","dimanche 14/12/08",
  148.       "samedi 20/12/08","dimanche 21/12/08" );
  149.   $header_tab=array("","","Groupe 1","Groupe 2","Groupe 3" );
  150.   $periode_tab=array("14h-15h","15h-16h","16h-17h" );
  151.   $path_tab=array(2=>"cath",3=>"prot",4=>"evan" );
  152.   $filename_tab=array("","sam14_14","sam14_15","sam14_16",
  153.     "dim15_14","dim15_15","dim15_16",
  154.     "sam21_14","sam21_15","sam21_16",
  155.     "dim22_14","dim22_15","dim22_16" );
  156.   for ($k=1;$k<=4;$k++)
  157.    echo "<td class=\"Titre\">$header_tab[$k]</td>";
  158.  echo "</tr>";
  159.  for ($i=1; $i<=12; $i++)
  160.  {
  161.   echo "<tr>";
  162.   for ($j=1; $j<=4; $j++)
  163.   {
  164.    if ($j==1) {
  165.     if (($i-1) % 3 == 0)
  166.     {
  167.     $tmp=($i-1)/3;
  168.     echo "<td class=\"diagonale\" >$date_tab[$tmp]</td></tr><tr>";
  169.     }
  170.        $tmp=($i-1)%3;
  171.     echo "<td class=\"Titre\">$periode_tab[$tmp]</td>";
  172.    }
  173.    else
  174.    {
  175.     echo "<td class=\"normale\">";
  176.     lire_fichier($path_tab[$j], $filename_tab[$i]);
  177.     echo "</td>";
  178.    }
  179.   }
  180.   echo "</tr>";
  181.  }
  182.  ?>
  183.  </table>
  184. </div>
  185. <!-- Affichage du formulaire d'inscription -->
  186. <div>
  187.  <h1>Formulaire d'inscription</h1>
  188.  <hr></hr>
  189.  <form action="test.php" method="post" enctype="multipart/form-data">
  190.   <p>
  191.    <label>Nom</label>
  192.    <input type="text" name="NOM" size="50"/>
  193.   </p>
  194.   <p>
  195.    <label>Téléphone</label>
  196.    <input type="text" name="TEL" size="13"/>
  197.   </p>
  198.   <p>
  199.    <label>Email</label>
  200.    <input type="text" name="EMAIL" size="100"/>
  201.   </p>
  202.   <p>
  203.    <label> Samedi 14/12/08</label><br/>
  204.     <label><input type="checkbox" name="sam14[]" value="14"/>14h-15h</label>
  205.     <label><input type="checkbox" name="sam14[]" value="15"/>15h-16h</label>
  206.     <label><input type="checkbox" name="sam14[]" value="16"/>16h-17h</label>
  207.   </p>
  208.   <p>
  209.    <label> Dimanche 15/12/08</label><br/>
  210.     <label><input type="checkbox" name="dim15[]" value="14"/>14h-15h</label>
  211.     <label><input type="checkbox" name="dim15[]" value="15"/>15h-16h</label>
  212.     <label><input type="checkbox" name="dim15[]" value="16"/>16h-17h</label>
  213.   </p>
  214.   <p>
  215.    <label> Samedi 21/12/08</label><br/>
  216.     <label><input type="checkbox" name="sam21[]" value="14"/>14h-15h</label>
  217.     <label><input type="checkbox" name="sam21[]" value="15"/>15h-16h</label>
  218.     <label><input type="checkbox" name="sam21[]" value="16"/>16h-17h</label>
  219.   </p>
  220.   <p>
  221.    <label> Dimanche 22/12/08</label><br/>
  222.     <label><input type="checkbox" name="dim22[]" value="14"/>14h-15h</label>
  223.     <label><input type="checkbox" name="dim22[]" value="15"/>15h-16h</label>
  224.     <label><input type="checkbox" name="dim22[]" value="16"/>16h-17h</label>
  225.   </p>
  226.   <p>
  227.    <label>Religion</label><br/>
  228.     <label> <input type="radio" name="groupe" value="cath" checked="checked" />Groupe 1</label>
  229.     <label> <input type="radio" name="groupe" value="prot"/>Groupe 2</label>
  230.     <label> <input type="radio" name="groupe" value="evan" />Groupe 3</label>
  231.   </p>
  232.   <p>
  233.    <input type="submit" name="Submit" value="Envoyer" />
  234.    <input type="submit" name="Submit1" value="Reset table" />
  235.   </p>
  236.   <p>
  237.    <input type="reset" name="Reset" value="Remise à zéro" />
  238.   </p>
  239.  </form>
  240. </div>
  241. <hr></hr>
  242.  <!-- Lors du chargement de la page >> désactive la lecture -->
  243.  <script type="text/javascript"><!--
  244.   function Grise(element1,element2) {
  245.    input = document.getElementById(element1);
  246.    input.disabled = true;
  247.    input2 = document.getElementById(element2);
  248.    input2.disabled = true;
  249.   }
  250.  //--></script>
  251.  <script type="text/javascript"><!--
  252.   function Degrise(element) {
  253.    input = document.getElementById(element);
  254.    input.disabled = false;
  255.   }
  256.  //--></script>
  257.  <script type="text/javascript" ><!--
  258.   // Vérifie la compatibilité du navigateur
  259.   function GetXmlHttpObject() {
  260.    var xmlHttp=null;
  261.    try {
  262.     // Firefox, Opera 8.0+, Safari
  263.     xmlHttp=new XMLHttpRequest();
  264.    }
  265.    catch (e) {
  266.     // Internet Explorer
  267.     try {
  268.      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP" );
  269.     }
  270.     catch (e) {
  271.      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP" );
  272.     }
  273.    }
  274.    return xmlHttp;
  275.   }
  276.  //--></script>
  277.  <!-- Lors de la sélection d'un groupe >> active la lecture -->
  278.  <script type="text/javascript"><!--
  279.   function active(element,element2,f) {
  280.    var l1    = f.elements["liste1"];
  281.    var l2    = f.elements["liste2"];
  282.    var index = l1.selectedIndex;
  283.    if (index<1) {
  284.     //l2.options.length=0;
  285.     // grise la 2ème liste
  286.     input = document.getElementById(element)
  287.     input.disabled = true;
  288.     input2 = document.getElementById(element2)
  289.     input2.disabled = true;
  290.    }
  291.    else {
  292.     input = document.getElementById(element)
  293.     input.disabled = false;
  294.     input2 = document.getElementById(element2)
  295.     input2.disabled = false;
  296.     // Vérifie compatibilité navigateur
  297.     xmlHttp=GetXmlHttpObject()
  298.     if (xmlHttp == null) {
  299.      alert ("Votre navigateur ne supporte pas les requêtes HTTP." )
  300.       return
  301.     }
  302.        // Prépare une requête sur le serveur
  303.        xmlHttp.open("POST", "sql.php", true);
  304.     
  305.        // attend réponse serveur (gestionnaire d'évènement pour chaque changement d'état)
  306.        xmlHttp.onreadystatechange = function() {
  307.     
  308.        // requête terminée
  309.        if (xmlHttp.readyState == 4)
  310.       // réponse du serveur
  311.         eval(xmlHttp.responseText);
  312.     }
  313.     // assigne un nom et une valeur à l'en-tête de la requête
  314.     xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
  315.     // requête
  316.     var data = "Groupe="+escape(l1.options[index].value)+"&form="+f.name+"&select=liste2";
  317.     // Lance la requête
  318.     xmlHttp.send(data);
  319.    }
  320.   }
  321.  //--></script>
  322. <!-- Affichage du formulaire de modification -->
  323. <div>
  324.  <h1>Formulaire de modification</h1>
  325.  <hr></hr>
  326.  <form action="test.php" method="post" name="form_modif" id="form_modif" enctype="multipart/form-data">
  327.   <fieldset>
  328.   <p>
  329.    <select name="liste1" id="liste1" size="4" onchange="active('liste2','Supprimer',this.form);">
  330.     <option value="" selected="selected"></option>
  331.     <option value="cath">Groupe 1</option>
  332.     <option value="prot">Groupe 2</option>
  333.     <option value="evan">Groupe 3</option>
  334.    </select>
  335.    <!-- A générer automatiquement en fonction du groupe -->
  336.    <select name="liste2" id="liste2" >
  337.    </select>
  338.   </p>
  339.   <br/>
  340.   <input type="submit" name="Supprimer" id="Supprimer" value="Supprimer" />
  341.   </fieldset>
  342.  </form>
  343. </div>
  344. <hr></hr>
  345. <div>
  346. <p>
  347.  <a href="http://validator.w3.org/check?uri=referer">
  348.  <img src="http://www.w3.org/Icons/valid-xhtml10-blue"
  349.   alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
  350. </p>
  351. </div>
  352. </body>
  353. </html>


 
Voici le script lié avec le javascript (sql.php):

Code :
  1. <?php
  2. header('Content-type: text/html; charset=iso-8859-1');
  3. $db = mysql_connect('', 'user', 'pass');
  4. mysql_select_db('gestionPermance);
  5. $sql = "SELECT Personne.NomPersonne FROM Personne WHERE Personne.Groupe='". $_POST["Groupe"]."' ORDER BY `NomPersonne`";
  6. $result = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
  7. echo 'var o = null;';
  8. echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
  9. echo 's.options.length = 0;';
  10. while($r = mysql_fetch_array($result))
  11.  echo 's.options[s.options.length] = new Option("'.$r["NomPersonne"].'" );';
  12. mysql_close($db);
  13. ?>


 
Et voici les requêtes SQL pour la création des tables :

  • Table Periode :
Code :
  1. CREATE TABLE `Periode` (
  2.   `NoPeriode` int(11) NOT NULL auto_increment,
  3.   `NomPeriode` tinytext NOT NULL,
  4.   `FK_NoPersonne` int(11) NOT NULL,
  5.   PRIMARY KEY  (`NoPeriode`),
  6.   KEY `FK_peNoPersonne` (`FK_NoPersonne`),
  7.   CONSTRAINT `FK_peNoPersonne` FOREIGN KEY (`FK_NoPersonne`) REFERENCES `Personne` (`NoPersonne`) ON DELETE NO ACTION ON UPDATE NO ACTION
  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1


 

  • Table Personne :
Code :
  1. CREATE TABLE `Personne` (
  2.   `NoPersonne` int(11) NOT NULL auto_increment,
  3.   `NomPersonne` tinytext NOT NULL,
  4.   `Tel` tinytext,
  5.   `Email` tinytext,
  6.   `Groupe` tinytext NOT NULL,
  7.   PRIMARY KEY  (`NoPersonne`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1

Reply

Marsh Posté le 13-11-2008 à 20:34:19   

Reply

Marsh Posté le 14-11-2008 à 10:08:01    

C'est vraiment pas terrible :(
 
Les variables et tableaux sam14, dim15, dim22, ... ça sert à quoi? C'est uniquement pour le samedi 14, le dimanche 15, etc?
 
Et tu ne peux gérer que des plages horaires 14-15, 16-17, 17-18 :-(
 
Énormément de copier-coller de choses qui se répètent. :(
 
N.B. Un jour, faudra qu'on m'explique pq les PDO n'ont pas plus la cote. Sans doute parce que ce sont les mêmes recettes copiés-collées ad nauseum qu'on retrouve sur le net. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-11-2008 à 11:37:10    

Merci pour ton commentaire, très utile pour moi.  :jap:  
 
1. Concernant les variables sam14, dim15, ...
> Il s'agit des valeurs que je récupère de mon formulaire.
_? Comment puis-je faire quelque chose de plus propre pour la lecture et utilisation de celles-ci?
 
2. Les tableaux
> Ca me permet de générer les titres de légendes et de colonnes de mon tableau.
 
3. En effet, je ne gère que 3 périodes fixes par jour (il y a 4 jours en tout)
> L'idéal serait de faire une gestion dynamique des périodes (toutes les périodes dans une table)
 
4. Pour réduire le nombre de copier-coller, le plus simple est de faire une fonction ou y a-t-il une autre solution plus propre et jolie?
 
5. Existe-t-il des outils / architecture pour faciliter le développement?

Reply

Sujets relatifs:

Leave a Replay

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