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

  FORUM HardWare.fr
  Programmation
  PHP

  Simplification de mon code et 2 questions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Simplification de mon code et 2 questions

n°1802175
Calvein
Posté le 19-10-2008 à 22:10:22  profilanswer
 

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 :)

mood
Publicité
Posté le 19-10-2008 à 22:10:22  profilanswer
 

n°1802227
flo850
moi je
Posté le 20-10-2008 à 09:40:45  profilanswer
 

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++) ?


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


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

  Simplification de mon code et 2 questions

 

Sujets relatifs
code vba protection feuille excel sauf userformeffacer deux colones sur trois avec du code VBA dans Excel...
Plantage de Mozilla firefox a cause d'un code JavascriptLE code jules cesar en c++
Petit soucis avec mon code html et l'affichage sur googleCode source HTML suspect
aide pour corriger un code[C/C++] Choisir sur quel processeur/coeur executer du code
code::blocks, fentre d'erreurs disparueAppel d'une fonction mysql dans du code javascript
Plus de sujets relatifs à : Simplification de mon code et 2 questions


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