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
Jusque la pas de pb.
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
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"); ?>
J'ai une page add_server_ok.php qui permet d'ajouter mes donnees dans ma base.
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
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 :
je peux donc afficher :
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
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.
Dans cette page j'ai 2 requetes : sql3 et sql4
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
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");?>
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 :
PJ modify_server..jpgTOTO
APPTEST1 coche checkbox
APPTEST2
APPTEST3 coche checkbox
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.
Partager