5 pièce(s) jointe(s)
Récupération de CheckBox Multiples php/Mysql
Bonjour,
Je vais reprendre de zero.
J'ai une page add_server.php qui permet de creer un serveur et de le lier a des applications et des environnements.
Ex : Je creer un serveur TOTO sur lequel est installe APPTEST1 de PRODUCTION + RECETTE et APPTEST3 de DEVELOPPEMENT
cf PJ add_server.php.jpeg
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52
|
<?php
require("./head.inc");
if(!isset($_SESSION['login']))
{
echo '<div class="texte">';
echo '</br>ERREUR : Vous n\'etes pas autorise a acceder a cette page.';
echo '</div>';
}
else
{
//<!-- -----------------------[###########################]----------------------- -->
echo '<div class="haut_news"><img src="images/fleche.png" alt=""/> Ajouter un serveur</div>';
echo '<div class="texte">';
echo '<form method="post" action="add_server_ok.php">';
echo '<fieldset>';
echo '<legend>Informations :</legend>';
echo 'Nom : <br><input type="text" name="NAME_SERVER" style="text-transform: uppercase" /><br/>';
echo 'Description : <br><textarea name="DESC_SERVER" rows="5" cols="45" ></textarea><br/>';
echo 'Commentaire : <br><textarea name="COM_SERVER" rows="5" cols="45" ></textarea><br/>';
echo 'Status : <br>';
echo '<input type="radio" name="STATUS_SERVER" value="Online" checked="checked">Online';
echo '<input type="radio" name="STATUS_SERVER" value="Offline">Offline';
echo '<br/>';
echo '</fieldset>';
echo '<fieldset>';
echo '<legend>Lier une application а ce serveur (Par dйfaut AUCUNE) : <br></legend>';
$sql1 = ("SELECT * FROM APP ORDER BY NAME_APP");
$query1=mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
while ($result1 = mysql_fetch_assoc($query1))
{
echo '<div class="liste_appli">';
echo "<INPUT TYPE=checkbox NAME=CHECK_APP[] value=".$result1["ID_APP"].">".$result1["NAME_APP"]."";
$sql2 = ("SELECT * FROM ENV");
$query2=mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
while ($result2 = mysql_fetch_assoc($query2))
{
echo '<div class="liste_env">';
echo "<INPUT TYPE=checkbox NAME=CHECK_ENV_".$result1["ID_APP"]."[] value=".$result2["ID_ENV"].">".$result2["NAME_ENV"]."";
echo '</div>';
}
echo '</div><br/>';
}
echo '</fieldset>';
echo '<input type="submit" value="Valider" class="button"/>';
echo '</form>';
echo '</div>';
}
//<!-- -----------------------[###########################]----------------------- -->
require("./footer.inc");
?> |
Jusque la pas de pb.
J'ai une page add_server_ok.php qui permet d'ajouter mes donnees dans ma base.
Code:
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 41 42 43 44
|
<?php
require("./head.inc");
if(!isset($_SESSION['login']))
{
echo '<div class="texte">';
echo '</br>ERREUR : Vous n\'etes pas autorise a acceder a cette page.';
echo '</div>';
}
else
{
$NAME_SERVER = strtoupper($_POST['NAME_SERVER']);
$DESC_SERVER = $_POST['DESC_SERVER'];
$COM_SERVER = $_POST['COM_SERVER'];
$IP_REQ_SERVER = $_SERVER['REMOTE_ADDR'];
$STATUS_SERVER = $_POST['STATUS_SERVER'];
$datetime = date("Y-m-d - H:i:s");
if(!empty($_POST['NAME_SERVER']))
{
$sql1 = ("INSERT INTO SERVER (NAME_SERVER, DESC_SERVER, STATUS_SERVER, COM_SERVER, DATE_SERVER, IP_REQ_SERVER) VALUES('$NAME_SERVER','$DESC_SERVER', '$STATUS_SERVER', '$COM_SERVER', '$datetime', '$IP_REQ_SERVER')");
$query1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
$ID_SERVER = mysql_insert_id();
foreach($_POST['CHECK_APP'] as $ID_APP)
{
foreach($_POST['CHECK_ENV_'.$ID_APP] as $ID_ENV)
{
$sql2 = ("INSERT INTO HOST VALUES('$ID_APP','$ID_ENV','$ID_SERVER')");
$query2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
}
}
header('Location: index.php');
}
else
{
echo '<div class="texte">';
echo '</br>ERREUR : Merci d\'indiquer un nom de serveur.';
echo '</div>';
}
}
require("./footer.inc");
?> |
J'ecris dans une table SERVER + HOST qui me permet de faire les liens entre toutes mes tables.
Ce qui donne :
Citation:
Dans SERVER :
ID_SERVER DATE_SERVER NAME_SERVER
14 2012-10-17 12:45:12 TOTO
Dans HOST :
ID_APP ID_ENV ID_SERVER
1 1 14
1 2 14
3 3 14
je peux donc afficher :
PJ catupre.jpeg
Jusque la pas de pb non plus, ca enregistre bien les donnees dans ma base.
Maintenant j'ai une page modify_server_view.php qui permet de modifier mon serveur en question TOTO et de voir les applications liees et les environnements.
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
<?php require("./head.inc");
$NAME_SERVER= $_GET['MODIFY_SERVER'];
$IP_REQ_APP = $_SERVER['REMOTE_ADDR'];
?>
<!-- -----------------------[######################################]----------------------- -->
<div class="haut_news"><img src="images/fleche.png" alt=""/> Modifier une serveur</div>
<div class="texte">
<form method="post" action="modify_server_ok.php">
<fieldset>
<legend>Informations :</legend>
<?php
$sql1 = "SELECT * FROM SERVER where NAME_SERVER = '$NAME_SERVER' ";
$query1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
while($resultat1 = mysql_fetch_array($query1))
{
echo 'Nom : <br><input type="text" name="NAME_SERVER" style="text-transform: uppercase" value="'.$resultat1['NAME_SERVER'].'"/><br/>';
echo 'Description : <br><textarea name="DESC_SERVER" rows="5" cols="45">'.$resultat1['DESC_SERVER'].'</textarea><br/>';
echo 'Commentaire : <br><textarea name="COM_SERVER" rows="5" cols="45">'.$resultat1['COM_SERVER'].'</textarea><br/>';
$selected="";
if ($resultat1['STATUS_SERVER']=="Online")
{
$selected=" checked=\"checked\"";
echo 'Status : <br><input type="radio" name="STATUS_SERVER" value='.$resultat1['STATUS_SERVER'].' '.$selected.'>Online';
echo '<input type="radio" name="STATUS_SERVER" value="Offline">Offline';
}
else
{
$selected=" checked=\"checked\"";
echo 'Status : <br><input type="radio" name="STATUS_SERVER" value="Online">Online';
echo '<input type="radio" name="STATUS_SERVER" value='.$resultat1['STATUS_SERVER'].' '.$selected.'>Offline';
}
$ID_SERVER= $resultat1['ID_SERVER'];
$_SESSION['ID_SERVER'] = $ID_SERVER;
}
?>
</fieldset>
<div class="haut_news"><img src="images/fleche.png" alt=""/> Applications lies a ce serveur</div>
<div class="texte">
<?php
$sql2 = ("
SELECT APP.NAME_APP, ENV.NAME_ENV, SERVER.NAME_SERVER
FROM APP, SERVER, ENV, HOST
WHERE APP.ID_APP=HOST.ID_APP
AND ENV.ID_ENV=HOST.ID_ENV
AND SERVER.ID_SERVER=HOST.ID_SERVER
AND SERVER.NAME_SERVER = '$NAME_SERVER';
");
$query2=mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
while($resultat2 = mysql_fetch_array($query2))
{
echo '<div class="cadre_normal">';
echo $resultat2['NAME_APP'].' '.$resultat2['NAME_ENV'].' '.$resultat2['NAME_SERVER'].'<br>';
echo '</div><br />';
}
?>
</div>
<!-- -----------------------[######################################]----------------------- -->
<fieldset>
<legend>Lier une application а ce serveur (Par dйfaut AUCUNE) : <br></legend>
<?php
$sql3 = ("
SELECT
DISTINCT APP.NAME_APP,APP.ID_APP,T1.NAME_SERVER
FROM
APP
left join
(SELECT SERVER.NAME_SERVER , HOST.ID_APP FROM HOST,SERVER
WHERE HOST.ID_SERVER=SERVER.ID_SERVER
AND SERVER.NAME_SERVER ='$NAME_SERVER') AS T1
on
APP.ID_APP = T1.ID_APP;
");
$query3=mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error());
while ($result3 = mysql_fetch_array($query3))
{
$selected2="";
if ($result3['NAME_SERVER']==$NAME_SERVER)
{
$selected2=" checked=\"checked\"";
}
echo '<div class="liste_appli">';
echo "<INPUT TYPE=checkbox NAME=CHECK_APP[] value=".$result3["ID_APP"]." ".$selected2.">".$result3["NAME_APP"]."";
if (empty($selected2))
{
$sql5 = ("SELECT * FROM ENV;");
$query5=mysql_query($sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error());
while ($result5 = mysql_fetch_array($query5))
{
echo '<div class="liste_env">';
echo "<INPUT TYPE=checkbox NAME=CHECK_ENV_".$result3["ID_APP"]."[] value=".$result5["ID_ENV"].">".$result5["NAME_ENV"]."";
echo '</div>';
}
}
else
{
$NAME_APP = $result3["NAME_APP"];
//echo 'resultat :' .$test;
//echo 'resultat :' .$NAME_SERVER;
$sql4 = ("
SELECT DISTINCT e.NAME_ENV, e.ID_ENV,
s.NAME_SERVER,
CASE
WHEN s.NAME_SERVER IS NULL THEN NULL
ELSE a.NAME_APP
END AS NAME_APP
FROM ENV e
LEFT OUTER JOIN HOST h ON h.ID_ENV = e.ID_ENV
LEFT OUTER JOIN SERVER s
ON s.ID_SERVER = h.ID_SERVER
AND s.NAME_SERVER = '$NAME_SERVER'
LEFT OUTER JOIN APP a ON a.ID_APP = h.ID_APP
AND a.NAME_APP = '$NAME_APP';
");
$query4=mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error());
while ($result4 = mysql_fetch_array($query4))
{
$selected3="";
if($result4['NAME_SERVER']==$NAME_SERVER)
{
$selected3=" checked=\"checked\"";
}
echo '<div class="liste_env">';
echo "<INPUT TYPE=checkbox NAME=CHECK_ENV_".$result3["ID_APP"]."[] value=".$result4["ID_ENV"]." ".$selected3.">".$result4["NAME_ENV"]."";
echo '</div>';
}
}
echo '</div><br/>';
}
?>
</fieldset>
<input type="submit" value="Valider" />
</form>
</div>
<!-- -----------------------[######################################]----------------------- -->
<?php require("./footer.inc");?> |
Dans cette page j'ai 2 requetes : sql3 et sql4
sql3 permet pour un serveur donne ex : TOTO de connaitre les applications installees sur ce serveur, j'affiche des checkbox qui sont cochees en fonction du resultat de ma requete.
Dans notre cas ca donnera en php :
Citation:
TOTO
APPTEST1 coche checkbox
APPTEST2
APPTEST3 coche checkbox
PJ modify_server..jpg
Jusque la pas de probleme non plus.
La ou ca se complique c'est pour remonter les envirronnements associes a mon SERVER TOTO pour l'application APPTEST1, APPTEST2, etc.
C'est cette fameuse requete sql4 qui me pose un gros pb.
Comment faire pour lister mes environnements et que ceux ci soient coches pour mes differentes applications :
Aujourd'hui j'arrive a un truc mais ca donne ca :
j'ai des doublons et je ne comprends pas
PJ modify_NOK.JPG
et je voudrais que ca me remonte ca :
cf modify_OK.JPG
une idee svp, en esperant avoir ete le plus clair possible ????? :)
Merci d'avance pour votre aide precieuse car je bloque.