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 html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<form method="post" action="index.php">
    <fieldset>
    <input type="hidden" name="Logiciel" value="<?php echo $codeLogi; ?>" />
        <legend>Salle ou le logiciel n'est pas installé</legend><br />
<?php
          if (tabVide($lesSallesAll)){
            echo "N° salle Nb postes Installer<br /><br />\n";
            foreach ($lesSallesAll as $laSalle) {
              echo "".$laSalle['num']."\n";
              echo "".$laSalle['nbPostes']."\n";
              echo "<input type=\"checkbox\" name=\"InstallerSalle[]\" value=\"".$laSalle['num']."\" /><br />\n";
              echo "<br />\n";
            }
          }
          else{
            echo "Toute les salles sont équipées du logiciel de code ".$codeLogi;
          }
?>
    </fieldset><p></p>
   <fieldset>
        <legend>Salle ou le logiciel est installé</legend><br />
<?php
          if (tabVide($lesSalles)){
            echo "N° salle Nb postes Installer<br /><br />\n";
            foreach ($lesSalles as $laSalle) {
              echo "".$laSalle['num']."\n";
              echo "".$laSalle['nbPostes']."\n";
              echo "<input type=\"checkbox\" name=\"DesinstallerSalle[]\" value=\"".$laSalle['num']."\" /><br />\n";
              echo "<br />\n";
            }
          }
          else{
            echo "Il n'y a aucune salle avec le logiciel de code ".$codeLogi;
          }          
?>
    </fieldset>
    <p><br />
        <input type="submit" value="Valider" />
    </p>
</form>
Controle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                 //Installer des logiciels
                if (isset($_POST["InstallerSalle"])){
                    $tabInstall = $_POST["InstallerSalle"];
                    $codeLogi = $_POST["Logiciel"];
                    foreach ($tabInstall as $tab){
                        installerLogiciel($connexion, $tab, $codeLogi);
                    }
                }                
                //Desinstaller des logiciels                
                if (isset($_POST["DesinstallerSalle"])){
                    $tabDesinstall = $_POST["DesinstallerSalle"];
                    $codeLogi = $_POST["Logiciel"];
                    foreach ($tabDesinstall as $tab){
                        desinstallerLogiciel($connexion, $tab, $codeLogi);
                    }
                }
Modèle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// void installerLogiciel($idConnexion, $tab, $codeLogi)
// Installe le logiciel dans la bdd en fonction de la salle
function installerLogiciel($idConnexion, $tab, $codeLogi){
    $req = "SELECT * FROM Installer WHERE numsalle='".$tab."' AND codeLogiciel='".$codeLogi."'";
 
   $jeuResultat=mysql_query($req, $idConnexion);
    if($jeuResultat){
        $req="INSERT INTO `Installer` (`numSalle` ,`codeLogiciel`)VALUES ('".$tab."', '".$codeLogi."')";
        mysql_query($req, $idConnexion);    
    }
 
   mysql_free_result($jeuResultat);
}
// void desinstallerLogiciel($idConnexion, $tab, $codeLogi)
// Desinstalle le logiciel dans la bdd en fonction de la salle
function desinstallerLogiciel($idConnexion, $tab, $codeLogi){
    $req = "SELECT * FROM Installer WHERE numsalle='".$tab."' AND codeLogiciel='".$codeLogi."'";
 
   $jeuResultat=mysql_query($req, $idConnexion);
    if($jeuResultat){
        $req="DELETE FROM Installer WHERE numSalle = '".$tab."' AND codeLogiciel = '".$codeLogi."'";
        mysql_query($req, $idConnexion);    
    }
 
   mysql_free_result($jeuResultat);
}
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é).

Merci