Souci de Post avec des variables dynamiques

Résolu
Odeatho -  
 Odeatho -
Bonjour a tous,
Je vous explique mon souci ,
en fait je crée un tableau dynamiquement en fonction du résultat d'une requête sql ( je crée autant de lignes que de personnes dans ma table)
et j ai crée deux input text par lignes.
Comme ils sont dynamiques , ils se nomment nbSite_$i avec $i comme itérateur.

en fait , le souci c est que je n arrive pas a récupérer les variables contenues dans les champs textes de mes input dynamiques. ( c est possible que j ai commis une grosse faute je ne suis pas un expert)

voici le code :

<?php $week = date("W"); ?>
										<caption>Tableau des Sites classés en semaine <?php echo $week ?></caption>
									<?php
										require ('config.php');
										$db_table='relance';
										mysql_connect ($db_server, $db_user, $db_pass);
										mysql_select_db($db);
										$sql_tab="SELECT DISTINCT `$st` FROM `$db_table` ORDER BY `$st` ";
										$res_tab =mysql_query($sql_tab);
										$i=0;
									while($ligne=mysql_fetch_assoc($res_tab)) { ?>
									<form method="POST" action ="Site.php" >
											<tr class='odd' >
												<td width=20%>
												<?php echo "Sous_traitants" ?><br/>
											<select name='stsc_$i' id='stsc_$i'>
											<OPTION selected value=1 >Tous
											<?PHP
											require ('config.php');
											$db_table='relance';
											mysql_connect ($db_server, $db_user, $db_pass);
											mysql_select_db($db);
											$sql="SELECT DISTINCT `$st` FROM `$db_table` ORDER BY `$st` ";
											$res=mysql_query($sql);
											while($ligne=mysql_fetch_assoc($res))
												echo "<option value='".$ligne[$st]."'>".$ligne[$st]."</option>";
													?>
													</select>
													</td>
												<td width=20%>
														<?php echo "Nombre de sites  classés" ?><br/>
													<input type='text' name='nbSite_$i'  value='' size='30'/>
													</td>
												<td width=20%>
													<?php echo "Nombre de sites  classés avec retard" ?><br/>
													<input type='text' name='nbSiteR_$i'  value='' size='30'/>
													</td> 
													</tr> <?php $i++; } ?>
										</table>
										<input class=Perso  type="submit"  value="envoyer" />
										<input type=hidden name=enregistrer value=ok>
										<h2><a href="Relance.php"> Accéder à la page des Relances </a> <b/></h2>
										<h2><a href="Stat.php"> Accéder à la page Statistiques </a></h2> </form>
											<?php
												if(isset($_POST['enregistrer']))
													{
														$Verif=true;
														for($d=0;$d<$i;$d++)
														{
																if( isset($_POST['stsc_'.$d]) )
																{
																}
																if( isset($_POST['nbSite_'.$d]) )
																{
																}
																if(isset($_POST['nbSiteR_'.$d]))
																{
																}
													}	
											?>

mais jamais ca ne passe les isset. ( a part enregistrer bien sur)
Je ne comprends pas d'où ça vient.
J'ai lu les réponses sur un problème similaire au mien et je n ai pas réussi a m'en sortir quand meme.
Je vous remercie?

5 réponses

  1. doudi
     
    Bonjour ,

    1er chose ton form doit etre à l'extérieur de ta boucle.
    0
    1. Odeatho
       
      si tu parles de la boucle du while , le form est dedans
      0
      1. Odeatho > Odeatho
         
        ah la deuxieme boucle autant pour moi désolé je tes et je te redis
        0
  2. doudi
     
    j'ai un peu retravailler ton code :

    <?php
    require ('config.php');
    
    $db_table = 'relance';
    $link = mysql_connect ($db_server, $db_user, $db_pass);
    mysql_select_db($db,$link);
    			
    $sql_tab = "SELECT DISTINCT `$st` FROM `$db_table` ORDER BY `$st` ";
    $res_tab = mysql_query($sql_tab);
    
    $liste = array();
    while($ligne = mysql_fetch_assoc($res_tab)) {
      $liste[] = $ligne;
    }
    $nb = count($liste);
    mysql_free_result;
    mysql_close($link);
    ?>
    
    <form action="Site.php" method="post">
      <?php 
     
      for($i = 0;$i<$nb;++$i){?>
      <p>
        <label>Sous Traitants : </label>
        <select name='stsc_<?php echo $i;?> id='stsc_<?php echo $i;?>'>
            <?php foreach($liste as $values){?>
          
          <option value="<?php echo $values['$st']?>"><?php echo $values['$st'];?></option>
           
           <?php } ?>
        </select>  
      </p>
      <p>
        <label>Nombre de sites  classés : </label>
        <input type="text" name="nbSite_<?php echo $i;?>" /> 
      </p>
      <p>
        <label>Nombre de sites  classés avec retard : </label>
        <input type="text" name="nbSite_<?php echo $i;?>" /> 
      </p>
      <?php } ?>
    </form>
    0
    1. Odeatho
       
      j'ai testé avec le code que tu as fait ( y a plus le tableau mais c est pas un souci )

      Lorsque j ai rempli les champs et que je fais envoyer,
      La page me dit : undefined index stsc_0 et pareil pour nbSite et nbSiteR

      ca me fait ca depuis le début , on dirait que mes variables ne passant pas par post
      J'ai testé avec GEt mais la c est pire car GET remplace le charactere $ par %24

      merci de ta réponse rapide
      0
  3. doudi
     
    Fais un code source de ta page et regarde s'il y a bien nbSite_0 ou 1 dans les champ input?
    0
  4. doudi
     
    Tu a bien fermé la balise </form> j'espere et ton bouton <input type="submit"> doit être à l'intérieur .
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. doudi
     
    Je viens de tester mon code et il fonctionne il me manque juste une petite code au niveau du select .
    0
    1. Odeatho
       
      Oui mon input submit est dans le form.
      Par contre dans ton code , cette ligne
      <select name='stsc_<?php echo $i;?> id='stsc_<?php echo $i;?>'>
      tu es sur qu il ne manque pas des ' ?

      car dans le code source j ai cela :
      <select name='stsc_0 id='stsc_0' >

      j'ai l'impression qu il manque un ' apres le name

      je te remercie
      0
      1. Odeatho > Odeatho
         
        effectivement j'ai rajouté le ' dans le name et ca marche.
        Je te remercie , je vais rajouter le tableau dans tout ca et ce sera bon .
        Merci beaucoup
        0