2 boucles imbriqués

mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009 - 19 juin 2006 à 13:59
mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009 - 20 juin 2006 à 11:24
bonjour à tous,
Voilà j'ai un petit soucis concernant 2 boucles imbriquées pour l'affichage d'un formulaire qui augmente ou diminue des champs(zone de texte avec titre).
La première boucle fonctionne mais mon problèmme se situe au niveau de la seconde où je n'arrive pas à augemnter et avoir plus de 2 champs.
Mon but étant de pouvoir déterminer au cour de mon formulaire des zones de texte (primaire)avec un nombre invariable de champs et des zone de texte (secondaire) dans chaque "primaire" avec égalment un nombre de champs invariable

j'e n'ai mis que l'essentiel et le code n'étant pas optimizé je suis conscient ce que je désir arriver à faire ç le fonctionnement de bas , le principe.

Merci d'avance si quelqu'un voit mon erreur et pourrais m'aider.

<?php
//init variable
if(isset($upload)==""){
$upload=0;
}


//recupération variable première boucle
if($_POST){
$upload=$_POST['upload'];
}


//recupération variable ajout ou surpprime champs dans 1 boucle
if($_POST['submit']=="plus"){
$upload++;
}elseif($_POST['submit']=="moins"){
 if($upload>0){
 $upload--;
 }
}

//formulaire
echo "<form name='form' action='#' enctype='multipart/form-data' method='POST'>";
echo "";
echo "";
echo "
";
// boucle 1
$cpt=1;
for($i=0; $i<=$upload; $i++) {
echo 'titre primaire '.$cpt;
echo'
<select name="textfield3" style="width:530px;">';
echo'<option>select</option>';
echo'</select>
';
 $cpt2=1;
 echo $_POST[upload2][$i];
 if($upload2[$i]==""){
  $upload2[$i]=0;
 }


 if($_POST['submit2'][$i]=="plus2[$i]"){
  $upload2[$i]++;
 }elseif($_POST['submit2'][$i]=="moins2[$i]"){
   if($upload2[$i]>0){
   $upload2[$i]--;
   }
 }


// boucle 2
 for($e=0; $e<=($upload2[$i]); $e++) {
 echo "";
  if($e==0){
  echo "";
  echo "
";
  }
 echo 'titre secondaire '.$cpt.'.'.$cpt2;
 echo'
<select>';
 echo'<option>select</option>';
 echo'</select>
';
 echo 'texte secondaire '.$cpt.'.'.$cpt2;
 echo '
<textarea name="texte[$i][]">'.$_POST[texte][$i][$e].'</textarea>
';
 $cpt2++;
 }

echo'
';
$cpt++;
}
echo'</form>';
?>

1 réponse

mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009
20 juin 2006 à 11:24
Bonjour,

Je pense avoir résolu mon problème concernant la boucle mais maintenant j'ai un autre gros problème concernant la récupération des valeurs de mes champs.
Voici le formulaire qui tourne excepter la récupération des valeur des champs.
Si quelqu'un aurait une idée ce serait bien simpathique merci d'avance à tous.

<?php if($_POST['submit']){ ?>
<form name="form" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<?php }else{ ?>
<form name="form" action="#" method="post" enctype="multipart/form-data">
<?php } ?>
<?php
if(isset($upload)==""){
$upload=0;
}


if($_POST){
$upload=$_POST['upload'];
}


if($_POST['submit1']=="plus"){
$upload++;
}elseif($_POST['submit1']=="moins"){
 if($upload>0){
 $upload--;
 }
}
/* variables à modifier */
$taillemax = 512000; // taille max d'un fichier (multiple de 1024)
$filetype = "(jpeg|gif)"; // types de fichiers acceptés, séparés par |
$nametype = "(.jpeg|.jpg|.gif)"; // extensions correspondantes
echo "";
// boucle selon nombre de fichiers $upload
$cpt=1;
for($i=0; $i<=$upload; $i++) {
echo '<fieldset ><legend>Titre primaire '.$cpt.'&nbsp;';
echo "&nbsp;";
echo "
";
echo'</legend>';
echo'<label>insérer titre primaire</label>';
echo'<select name="textfield3" style="width:530px;">';
for($d=0;$d<sizeof($tab);$d++)
{
 if( ($_POST['textfield3'])==$tab[$d] ){
 $selected='selected';
 }else{
 $selected='';
 }
echo'<option '.$selected.' value="'.$tab_id[$d].'">'.$tab[$d].'</option>';
}
echo'</select></fieldset >';


 $cpt2=1;
 if($_POST['upload2'][$i]==""){
  $upload2[$i]=0;
 }
 
 $upload2[$i]=$_POST['upload2'][$i]; 


 if( ($_POST['submit2'][$i])==("plus2".$i) ){
  $upload2[$i]++;
 }elseif( ($_POST['submit2'][$i])==("moins2".$i) ) {
   if($upload2[$i]>0){
   $upload2[$i]--;
   }
 }
 for($e=0; $e<=($upload2[$i]); $e++) {
 echo "";
 echo "";
 echo "";


 //echo'';
 echo '
<fieldset ><legend>Titre secondaire '.$cpt.'.'.$cpt2.'&nbsp;';
 echo "&nbsp;";
 echo "
";
 echo'</legend>';
 echo'<select name="textfield3" style="width:530px;">';
 for($t=0;$t<sizeof($tab);$t++)
 {
 if( ($_POST['textfield3'])==$tab[$t] ){
 $selected='selected';
 }else{
 $selected='';
 }
 echo'<option '.$selected.' value="'.$tab_id[$t].'">'.$tab[$t].'</option>';
 }
 echo'</select>';
 echo'</fieldset >
';
 echo '<fieldset ><legend>Texte secondaire '.$cpt.'.'.$cpt2.'</legend>';
 echo '
<textarea name="textfield[$i][]" cols="65" rows="10">'.$_POST['textfield'][$i][$e].'</textarea></fieldset >
';
 ?>
 <script language="javascript" type="text/javascript">
 function preview<?php echo $i;?><?php echo $e;?>(test)
 {
     document.getElementById('apercu[<?php echo $i;?>][<?php echo $e;?>]').src = test;
 }
 </script>
 <?php
 echo"<fieldset><legend>Aperçu de l'image</legend>";
 echo '';
 echo "";
 ?>
 <script>
 if (navigator.appName=="Netscape")
 {
   document.write("nondisponible");
 }else{
 document.write('][<?php echo $e;?>]" height="32" width="32"/>');
 }
 </script>
 <?php
 echo'</fieldset>';
 //echo'';
 $cpt2++;
 }
echo'
';
$cpt++;
}
?>

</form>

<?php
//problème :
echo count($_POST['upload']);
 for($i=0; $i<=count($_POST['upload']); $i++) {
 echo count($_POST['upload2'][$i]);
  for($e=0; $e<=(count($_POST['upload2'][$i])); $e++) {
  echo $_POST['textfield'][$i]; //????????????
  }
 }
?>
0
Rejoignez-nous