Bonjour a tous, j'aurais besoin d'aides svp, je suis bloqué sur mon script depuis plusieurs jours à cause d'un problème à la gestion d'un compteur i sur plusieurs pages je pense. Je sais pas si je pourrais vous faire comprendre mon problème car c'est un peu compliquer à expliquer.
En fait, voila, mon problème est au niveau d'un select qui se retrouve dans un "while" et en même temps on à la possibilité d'en rajouter d'autres si on clique sur un bouton ajouter. Mais le problème n'est pas que cela car ses select sont dépendants de la précédente réponse d'un select (en effet le select en question apparait une fois le précédent rempli).
Merci
page ajouter2.php:
page fonction.inc( pour les combo box):
page form_ajax.php:
En fait, voila, mon problème est au niveau d'un select qui se retrouve dans un "while" et en même temps on à la possibilité d'en rajouter d'autres si on clique sur un bouton ajouter. Mais le problème n'est pas que cela car ses select sont dépendants de la précédente réponse d'un select (en effet le select en question apparait une fois le précédent rempli).
Merci
page ajouter2.php:
Code:
<?php
include('includes\fonctions.inc');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ajouter nouvelle Fiche KATIA</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" href="calendrier/microcalendar.css" />
<script language="javascript" src="calendrier/microcalendar.js"></script>
<script language="javascript" >
var param_ddeb = {"dfin" : "date_fin", "titre" : "date debut" };
var param_dfin = {"ddeb" : "date_deb", "titre" : "date fin" };
</script>
<style type="text/css">
fieldset {margin:3px;padding:10px}
body, input, label, select {font:normal 11px verdana}
.add {color:green;text-decoration:underline;cursor:hand}
.del {color:red;text-decoration:underline;cursor:hand}
body {background-color:#f8f8ff}
#global, h1, h4 {text-align:center}
h3, h4 {text-decoration:underline}
.cadre {margin:10px auto;text-align:center}
.sous_cadre {margin:5px auto}
.cadre, .sous_cadre {background-color:#e3e3e3;border:2px solid #d3d3d3;padding:3px;text-align:center}
</style>
<script type="text/javascript">
function rack_disk_max(str){
if (str==""){
document.getElementById("nb_disk_max").innerHTML="";
return;
}
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("nb_disk_max").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","form_ajax.php?f=rack_disk_max&v="+str,true);
xmlhttp.send();
}
function capacitedisk(str){
if (str==""){
document.getElementById("capacite").innerHTML="";
return;
}
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("capacite").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","form_ajax.php?f=capacitedisk&v="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="global">
<pre>
<?php
print_r ($_POST);
?>
</pre>
<h1>Configuration Netapp</h1>
<h4>(Kit d'Actualisation Technique des Informations Administratives)</h4>
<form id="new_fiche" action="new_fiche.php" method="post" class="addline" target="_blank">
<input type="hidden" value="<?echo $_POST['adresse_site'];?>" name="adresse_site"/>
<input type="hidden" value="<?echo $_POST['cluster_nb_noeud'];?>" name="cluster_nb_noeud"/>
<input type="hidden" value="<?echo $_POST['date_creation'];?>" name="date_creation" />
<input type="hidden" value="<?echo $_POST['date_finale'];?>" name="date_finale"/>
<input type="hidden" value="<?echo $_POST['id_fiche_client'];?>" name="id_fiche_client"/>
<input type="hidden" value="<?echo $_POST['id_intervenant'];?>" name="id_intervenant"/>
<input type="hidden" value="<?echo $_POST['id_label_model'];?>" name="id_label_model"/>
<input type="hidden" value="<?echo $_POST['id_label_produit'];?>" name="id_label_produit"/>
<input type="hidden" value="<?echo $_POST['id_type_cluster'];?>" name="id_type_cluster"/>
<input type="hidden" value="<?echo $_POST['no_bdd'];?>" name="no_bdd"/>
<?php $i=1;
if ($_POST['id_type_cluster']== "3"){
?>
<div class="cadre">
<h3>Informations sur les switch(s)</h3>
<fieldset class="switchs-<?=$i?>">
<table align="center">
<tr>
<td align="right"><label for="no_serie_switch-<?=$i?>">numero de série du switch</label> :</td>
<td><input type="text" id="no_serie_switch-<?=$i?>" name="no_serie_switch-<?=$i?>" size="30" /></td>
<td align="right"><label for="nb_ports_actifs-<?=$i?>">Nombre de ports actifs</label> :</td>
<td><input type="text" id="nb_ports_actifs-<?=$i?>" name="nb_ports_actifs-<?=$i?>" size="30" /></td>
<td align="right"><label for="fournisseur-<?=$i?>">Fournisseur</label> :</td>
<td><input type="text" id="fournisseur-<?=$i?>" name="fournisseur-<?=$i?>" size="30" /></td>
<td align="right"><label for="id_label_switch-<?=$i?>">Label du switch</label> :</td>
<td>
<?php
combo_switchs($i);
?>
</td>
</tr>
</table>
</fieldset>
</div>
<?php
}else{
print ("");
}
?>
<?php
while ($i <= $_POST['cluster_nb_noeud']){ ?>
<!--DEBUT BOUCLE WHILE //-->
<div class="sous_cadre">
<h3>Contrôleur</h3>
<h5>Si système Cluster : Indiquer les informations pour chacun des contrôleurs</h5>
<div class="sous_cadre">
<h3>Tête <?=$i?></h3>
<table align="center">
<tr>
<td><label for="no_serie-<?=$i?>">Numéro série système</label></td>
<td><label for="hostname-<?=$i?>">Hostname</label></td>
</tr>
<tr>
<td><input type="text" id="no_serie-<?=$i?>" name="no_serie-<?=$i?>" size="30" />
</td>
<td><input type="text" id="hostname-<?=$i?>" name="hostname-<?=$i?>" size="30" /></td>
</tr>
</table>
</div>
<div class="sous_cadre">
<h3>Cartes Add-On dans le Produit</h3>
<h5>Si le nombre de cartes est différent, prendre le nombre le plus grand</h5>
<fieldset class="addon-<?=$i?>">
<label for="id_addon-<?=$i?>">Nom Addon</label> :
<?php
combo_addon($i);
?>
</fieldset>
</div>
<div class="sous_cadre">
<h3>Détails des Racks</h3>
<h5>Remplir les champs ci-dessus et cliquer sur "Créer" : Si des disques sont dans le contrôleur, indiquer TÊTE à la place du No de série</h5>
<fieldset class="rack-<?=$i?>">
<table align="center">
<tr>
<td align="right"><label for="no_serie_rack-<?=$i?>">Numéro de série</label> :</td>
<td><input type="text" id="no_serie_rack-<?=$i?>" name="no_serie_rack-<?=$i?>" size="30" /></td>
<td align="right"><label for="label_rack-<?=$i?>">Type de rack</label> :</td>
<td>
<?php
combo_type_rack($i);
?>
</td>
<td align="right"><label for="nb_disk-<?=$i?>">Nombre de disques</label> :</td>
<td>
<div id="nb_disk_max"><b>Attente modele rack...</b> </div>
</td>
</tr>
<tr>
<td align="right"><label for="type_disk-<?=$i?>">Type de disque</label> :</td>
<td>
<?php
combo_disk($i);
?>
</td>
<td align="right"><label for="capacite-<?=$i?>">Capacité</label> :</td>
<td>
<div id="capacite"><b>Attente modele disque...</b> </div>
</td>
<td></td>
</tr>
</table>
</fieldset>
</div>
<div class="sous_cadre">
<h3>Licences</h3>
<h5>Attention!! Si cluster, remplir les têtes</h5>
<h4>Licences attachées au système: declarés sur le contrôleur Netapp</h4>
<fieldset class="licencesattachees-<?=$i?>">
<table align="center">
<tr>
<td align="right"><label for="licence-<?=$i?>">Type de licence</label> :</td>
<td>
<?php
combo_licences($i);
?>
</td>
<td align="right"><label for="nb_clients-<?=$i?>">Nombre de clients</label> :</td>
<td><input type="text" id="nb_clients-<?=$i?>" name="nb_clients-<?=$i?>" size="30" /></td>
<td align="right"><label for="bundle-<?=$i?>">Bundle</label> :</td>
<td>
<?php
combo_bundles($i);
?>
</td>
</tr>
</table>
</fieldset>
<h4>Licences non attachées au système: avec numéro de série</h4>
<fieldset class="licencesnonattachees-<?=$i?>">
<table align="center">
<tr>
<td align="right"><label for="licences-<?=$i?>">Type de licence</label> :</td>
<td>
<?php
combo_licences2($i);
?>
</td>
<td align="right"><label for="no_serie_licence-<?=$i?>">Numéro série</label> :</td>
<td><input type="text" id="no_serie_licence-<?=$i?>" name="no_serie_licence-<?=$i?>" size="30" /></td>
<td align="right"><label for="nb_licences-<?=$i?>">Nombre de licence</label> :</td>
<td><input type="text" id="nb_licences-<?=$i?>" name="nb_licences-<?=$i?>" size="30" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
<!--FIN BOUCLE WHILE //-->
<?php $i++;
} ?>
<input type="submit" value="Enregistrer" />
<input type="button" value="Accueil" onClick="javascript:window.location.href='accueil.php';" />
</form>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="fn.addline.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.addline').addline({debug:false});
});
</script>
</body>
</html>
page fonction.inc( pour les combo box):
Code:
<?php
## Connexion à la base "base_fsm"
$db = mysql_connect("localhost","root","") or die ("Erreur de connexion :". mysql_error() );
$maBase = mysql_select_db("base_fsm") or die (" Erreur de base : " . mysql_error() );
## Fonction pour afficher la liste déroulante des Types de Cluster
function combo_type_cluster() {
?>
<select name="id_type_cluster" onchange="cluster(this.value)" style="width:12em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_type_cluster`, `label_type_cluster`, `nb_max_noeud` FROM `type_cluster` ORDER BY `id_type_cluster`;";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_type_cluster']?>"><?=$data['label_type_cluster']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des Intervenants
function combo_intervenant() {
?>
<select name="id_intervenant" style="width:20em">
<option value="0" selected="selected" </option>
<?php
$MyRequest = "SELECT `id_intervenant`, `nom_intervenant`, `prenom_intervenant` FROM `intervenant`;";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_intervenant']?>"><?=$data['prenom_intervenant']?> <?=$data['nom_intervenant']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des Clients
function combo_client() {
?>
<select name="id_fiche_client" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_fiche_client`,`nom_client`,`adresse_site`,`cp_site`,`ville_site` FROM `fiche_client`;";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_fiche_client']?>"><?=$data['nom_client']?> <?=$data['adresse_site']?> <?=$data['cp_site']?> <?=$data['ville_site']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des Marques(produits)
function combo_marque() {
?>
<select name="id_label_produit" onchange="produit(this.value)" style="width:12em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_label_produit`,`marque` FROM `label_produit`;";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_label_produit']?>"><?=$data['marque']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des Switchs
function combo_switchs($countswitch) {
?>
<select id="id_label_switch-<?=$countswitch?>" name="id_label_switch-<?=$countswitch?>" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_label_switch`,`modele_switch`, `marque_switch`,`nb_ports` FROM label_switch";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_label_switch']?>"><?=$data['modele_switch']?><?=$data['marque_switch']?><?=$data['nb_ports']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des Addons
function combo_addon($count) {
?>
<select id="id_addon-<?=$count?>" name="id_addon-<?=$count?>" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_addon`,`nom_addon` FROM addon";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_addon']?>"><?=$data['nom_addon']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des types de racks
function combo_type_rack($countrack) {
?>
<select name="id_modele_rack-<?=$countrack?>" id="id_modele_rack-<?=$countrack?>" onchange="rack_disk_max(this.value)" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_modele_rack`,`label_rack`, `nb_disk_max` FROM modele_rack";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_modele_rack']?>"><?=$data['label_rack']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des types de disques
function combo_disk($countdisk) {
?>
<select name="id_type_techno-<?=$countdisk?>" id="id_type_techno-<?=$countdisk?>" onchange="capacitedisk(this.value)" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_type_techno`,`type_techno` FROM type_techno";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_type_techno']?>"><?=$data['type_techno']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des types de licences attachees
function combo_licences($countlicences) {
?>
<select id="id_label_licences-<?=$countlicences?>" name="id_label_licences-<?=$countlicences?>" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_label_licences`,`licences` FROM label_licences";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_label_licences']?>"><?=$data['licences']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des bundles
function combo_bundles($countbundles) {
?>
<select id="id_label_bundle-<?=$countbundles?>" name="id_label_bundle-<?=$countbundles?>" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_label_bundle`,`bundle` FROM label_bundle";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_label_bundle']?>"><?=$data['bundle']?></option>
<?php
}
?>
</select>
<?php
}
## Fonction pour afficher la liste déroulante des types de licences non attaches
function combo_licences2($countlicences2) {
?>
<select id="id_label_licences-<?=$countlicences2?>" name="id_label_licences-<?=$countlicences2?>" style="width:20em">
<option value="0" selected="selected"></option>
<?php
$MyRequest = "SELECT `id_label_licences`,`licences` FROM label_licences";
$MyExec = mysql_query($MyRequest);
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_label_licences']?>"><?=$data['licences']?></option>
<?php
}
?>
</select>
<?php
}
?>
page form_ajax.php:
Code:
<?php
include ('includes/fonctions.inc');
### foction produit et cluster qui intervient dans la page ajouter
$fonction = $_GET["f"];
if ($fonction == "produit"){
$valeur = $_GET["v"];
$MyRequest="SELECT id_label_model, modele, id_label_produit FROM label_modele WHERE id_label_produit = '".$valeur."'";
$MyExec = mysql_query($MyRequest);
?>
<select name="id_label_model">
<option value="0" selected="selected">Choisir Modèle...</option>
<?php
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_label_model']?>"><?=$data['modele']?></option>
<?php
}
?>
</select>
<?php
}
if ($fonction == "cluster"){
$valeur = $_GET["v"];
$MyRequest="SELECT `nb_max_noeud` FROM `type_cluster` WHERE `id_type_cluster` = '".$valeur."'";
$MyExec = mysql_query($MyRequest);
$Tmp_Cluster = mysql_fetch_assoc($MyExec);
$Nb_Max_Noeud = $Tmp_Cluster['nb_max_noeud'];
?>
<select name="cluster_nb_noeud">
<option value="0" selected="selected">Choisir nombre de noeuds...</option>
<?php
$c=1;
while ($c<=$Nb_Max_Noeud){
?>
<option value=<?=$c?>><?=$c?></option>
<?php
$c++;
}
?>
</select>
<?php
}
if ($fonction == "rack_disk_max"){
$valeur = $_GET["v"];
$MyRequest="SELECT `nb_disk_max` FROM `modele_rack` WHERE `id_modele_rack` = '".$valeur."'";
$MyExec = mysql_query($MyRequest);
$Tmp_rack_disk_max = mysql_fetch_assoc($MyExec);
$nb_disk_max = $Tmp_rack_disk_max['nb_disk_max'];
?>
<select name="nb_disk">
<option value="0" selected="selected">Choisir nombre de disques du racks...</option>
<?php
$s=1;
while ($s<=$nb_disk_max){
?>
<option value=<?=$s?>><?=$s?></option>
<?php
$s++;
}
}
?>
</select>
<?php
if ($fonction == "capacitedisk"){
$valeur = $_GET["v"];
$MyRequest="SELECT `id_modele_disk`,`capacite`,`vitesse_de_rotation`,`id_type_techno` FROM modele_disk WHERE `id_type_techno` = '".$valeur."'";
$MyExec = mysql_query($MyRequest);
?>
<select name="capacite">
<option value="0" selected="selected">Choisir capacite des disques...</option>
<?php
while($data = mysql_fetch_assoc($MyExec)){
?>
<option value="<?=$data['id_modele_disk']?>"><?=$data['capacite']?><?=$data['vitesse_de_rotation']?></option>
<?php
}
}
?>
</select>