Simplification de mon code et 2 questions

Simplification de mon code et 2 questions - PHP - Programmation

Marsh Posté le 19-10-2008 à 22:10:22    

Je viens de me replonger dans le PHP (et le SQL surtout) pour une petite appli, mon code est bon mais je pense que je peux le faire beaucoup plus simplement.
 
J'utilise le modèle MCV, voilà mes parties :
 
Vue :
 

Code :
  1. <form method="post" action="index.php">
  2. <fieldset>
  3. <input type="hidden" name="Logiciel" value="<?php echo $codeLogi; ?>" />
  4.  <legend>Salle ou le logiciel n'est pas installé</legend>  
  5. <?php
  6.           if (tabVide($lesSalles)){
  7.             echo "<div class=\"enteteTab\">
  8.                             <p>
  9.           <span>N° Salle</span>
  10.           <span>Nb Postes</span>
  11.           <span class=\"last\">Installer</span>
  12.         </p>
  13.        </div>";
  14.             foreach ($lesSalles as $laSalle) {
  15.               echo "<div class=\"corpsTab\">
  16.                  <p>
  17.                   <span>".$laSalle['num']."</span>
  18.                     <span>".$laSalle['nbPostes']."</span>
  19.                     <span class=\"lastRight\"><input type=\"checkbox\" name=\"InstallerSalle[]\" value=\"".$laSalle['num']."\" /></span>
  20.                    </p>
  21.                   </div>";
  22.             }       
  23.           }
  24.           else{
  25.             echo "Toute les salles sont équipées du logiciel de code ".$codeLogi;
  26.           }
  27. ?>
  28. </fieldset><p></p>
  29.    <fieldset>
  30.  <legend>Salle ou le logiciel est installé</legend>
  31. <?php
  32.           if (tabVide($lesSallesLog)){
  33.             echo "<div class=\"enteteTab\">
  34.         <p>
  35.           <span>N° Salle</span>
  36.           <span>Nb Postes</span>
  37.           <span class=\"last\">Installer</span>
  38.         </p>
  39.        </div>";
  40.             foreach ($lesSallesLog as $laSalle) {
  41.               echo "<div class=\"corpsTab\">
  42.                  <p>
  43.                   <span>".$laSalle['num']."</span>
  44.                     <span>".$laSalle['nbPostes']."</span>
  45.                     <span class=\"lastRight\"><input type=\"checkbox\" name=\"DesinstallerSalle[]\" checked=\"checked\" value=\"".$laSalle['num']."\" /></span>
  46.                    </p>
  47.                   </div>";
  48.             }       
  49.           }
  50.           else{
  51.             echo "Il n'y a aucune salle avec le logiciel de code ".$codeLogi;
  52.           }         
  53. ?>
  54. </fieldset>
  55. <p><br />
  56.  <input type="submit" value="Valider" />
  57. </p>
  58. </form>

Controle :
 

Code :
  1. //Installer des logiciels
  2.                 if (isset($_POST["InstallerSalle"])){
  3.                     $tabInstall = $_POST["InstallerSalle"];
  4.                     $codeLogi = $_POST["Logiciel"];
  5.                     foreach ($tabInstall as $tab){
  6.                         installerLogiciel($connexion, $tab, $codeLogi);
  7.                     }
  8.                 }               
  9.                 //Desinstaller des logiciels                 
  10.                 if (isset($_POST["DesinstallerSalle"])){
  11.                     $tabDesinstall = $_POST["DesinstallerSalle"];
  12.                     $codeLogi = $_POST["Logiciel"];
  13.                     foreach ($tabDesinstall as $tab){
  14.                         desinstallerLogiciel($connexion, $tab, $codeLogi);
  15.                     }
  16.                 }

Modèle :
 

Code :
  1. // void installerLogiciel($idConnexion, $tab, $codeLogi)
  2. // Installe le logiciel dans la bdd en fonction de la salle
  3. function installerLogiciel($idConnexion, $tab, $codeLogi){
  4.     $req = "SELECT * FROM Installer WHERE numsalle='".$tab."' AND codeLogiciel='".$codeLogi."'";
  5.    $jeuResultat=mysql_query($req, $idConnexion);
  6.     if($jeuResultat){
  7.         $req="INSERT INTO `Installer` (`numSalle` ,`codeLogiciel`)VALUES ('".$tab."', '".$codeLogi."')";
  8.         mysql_query($req, $idConnexion);   
  9.     }
  10.    mysql_free_result($jeuResultat);
  11. }
  12. // void desinstallerLogiciel($idConnexion, $tab, $codeLogi)
  13. // Desinstalle le logiciel dans la bdd en fonction de la salle
  14. function desinstallerLogiciel($idConnexion, $tab, $codeLogi){
  15.     $req = "SELECT * FROM Installer WHERE numsalle='".$tab."' AND codeLogiciel='".$codeLogi."'";
  16.    $jeuResultat=mysql_query($req, $idConnexion);
  17.     if($jeuResultat){
  18.         $req="DELETE FROM Installer WHERE numSalle = '".$tab."' AND codeLogiciel = '".$codeLogi."'";
  19.         mysql_query($req, $idConnexion);   
  20.     }
  21.    mysql_free_result($jeuResultat);
  22. }

Je pense qu'il est assez simplifiable mais c'est la première fois que j'utilise le modèle MCV et le retour au PHP est assez laborieux.
 
De plus, j'aurai aimé pouvoir faire en sorte que les logiciels installés soient, par défaut, checker dans le checkbox et c'est en les decheckant qu'il se désintalleraient (là, il sont vide et il faut les checker pour les désintallé, comme pour ceux à installé).
 
Et aussi, j'aurai aimé faire en sorte que mon dernier foreach ai une class supplémentaire (c'est un tableau en span, j'ai désactivé la bordure du bas et j'aimerai la mettre quand j'arrive à la fin de mon instruction).
 
Merci :)

Reply

Marsh Posté le 19-10-2008 à 22:10:22   

Reply

Marsh Posté le 20-10-2008 à 09:40:45    

1- ça pourrait être plus lisible en encapsulant tout ça dans des classes  
 
2- tu affiches les checkbox avec '<input type="checkbox" name="InstallerSalle" value="'.$laSalle['num'].'" checked /> et dans ton traitement, tu compare la liste des logiciels avec celle qui est checkée. Les soft qui sont dans ta liste, mais qui n'ont pas de checkbox sont a desinstaller
Au passage, pourquoi ne pas appliquer la classe lastRight directement sur la checkbox ?  
 
3-tu teux pas le remaplcer en for($cpt = 0 ; $cpt < sizeof($lesSallesLog ) $cpt++) ?


---------------

Reply

Sujets relatifs:

Leave a Replay

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