Calvein | 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 :
- <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>
- <?php
- if (tabVide($lesSalles)){
- echo "<div class=\"enteteTab\">
- <p>
- <span>N° Salle</span>
- <span>Nb Postes</span>
- <span class=\"last\">Installer</span>
- </p>
- </div>";
- foreach ($lesSalles as $laSalle) {
- echo "<div class=\"corpsTab\">
- <p>
- <span>".$laSalle['num']."</span>
- <span>".$laSalle['nbPostes']."</span>
- <span class=\"lastRight\"><input type=\"checkbox\" name=\"InstallerSalle[]\" value=\"".$laSalle['num']."\" /></span>
- </p>
- </div>";
- }
- }
- 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>
- <?php
- if (tabVide($lesSallesLog)){
- echo "<div class=\"enteteTab\">
- <p>
- <span>N° Salle</span>
- <span>Nb Postes</span>
- <span class=\"last\">Installer</span>
- </p>
- </div>";
- foreach ($lesSallesLog as $laSalle) {
- echo "<div class=\"corpsTab\">
- <p>
- <span>".$laSalle['num']."</span>
- <span>".$laSalle['nbPostes']."</span>
- <span class=\"lastRight\"><input type=\"checkbox\" name=\"DesinstallerSalle[]\" checked=\"checked\" value=\"".$laSalle['num']."\" /></span>
- </p>
- </div>";
- }
- }
- 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 :
- //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 :
- // 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é).
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 |