IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

INSERT INTO à partir d'un formualire dynamique ( en ajoutant des lignes de champs)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Points : 8
    Points
    8
    Par défaut INSERT INTO à partir d'un formualire dynamique ( en ajoutant des lignes de champs)
    Bonjour,

    Je vous remercie d'avance pour vos futures réponses ;

    J'ai créer un formulaire dynamique avec un petit [+] pour ajouter une ligne (aide du lien : http://www.solucior.com/11-Dynamical..._solution.html ).
    le formulaire est jolie et fonctionne bien mais le problème viens après pour faire un INSERT INTO.

    Voici mon code php.

    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
     
    // Display the form
    echo '
      <h2>Ajouter des Echantillons '.$id.' :</h2>
    <form method="post" action=",,/php/echantillon_nouv.php">
    	<table class="table table-hover">
    	<tbody>
    	<thead>
       <tr>
    		<th>Référence Client</th>
           <th>N° Externe</th>
           <th>N° Interne</th>
           <th>Description</th>
       </tr>
       </thead>';
    //  Prépare le nombre de ligne 
    for ($i=0; $i<100; $i++) {
      // affiche seulement la 1er ligne, 
       if ($nbr_ligne == 0) $nbr_ligne = 1;
       if ($i >= $nbr_ligne) $display = 'style="display:none"';
       echo '
       <tr id="cell'.$i.'" '.$display.'>
     
              <td>
    	   	   <div class="form-group">
    			<select class="form-control" name="ref_client'.$i.'" " required id="sel1"  >';
    			// Si l'ID du lot existe alors la ref_client ne peux être que celle du lot.
    						if (isset($id)){
    						$query_exist=$db->prepare('SELECT * FROM lots WHERE lot_id = :lot_id');
    						$query_exist->bindValue(':lot_id',$id, PDO::PARAM_STR);
    						$query_exist->execute();
    						$data_exist=$query_exist->fetch();
    						// On affiche une entrée
    							 echo'  <option  value="'.$data_exist['ref_client'].'" >'.$data_exist['ref_client'].'</option>';
    						}else{
    							$reponse_ref_client = $db->query('SELECT * FROM  lots  ');
     
    						// On affiche chaque entrée une à une
    						while ($donnees_ref_client = $reponse_ref_client->fetch()){
    							 echo'  <option  value="'.$donnees_ref_client['ref_client'].'" >'.$donnees_ref_client['ref_client'].'</option>';
    						}
    						}
    			  echo'</select></br>
    			</div> 
           </td>
     
           <td>
    		   <div class="form-group">
    			  <input type="text"   name="numero_externe'.$i.'" required class="form-control" ';
    				if ($i <=9 ){
    					echo 'value="ECH-00'.($i+1).'"';
    				}else{
    					if ($i <=99 ){
    					 echo 'value="ECH-0'.($i+1).'"';
    						}else{		
    							if ($i >=100 ){
    								echo 'value="ECH-'.($i+1).'"';
    							}
    						}
    					}
    				echo' ></input>
    			</div> 
           </td>
     
           <td>
    			<div class="form-group">
    				 <input type="text"   name="numero_interne'.$i.'" required class="form-control" ';
    					$query=$db->prepare('SELECT * FROM `echantillons` ORDER BY `numero_interne` DESC'  );
    					$query->execute();
    					$data=$query->fetch();
     
    					$annee = substr($data['numero_interne'], 0, 2);  
    					$mois = substr($data['numero_interne'], 2, 2);  
    					$compteur = substr($data['numero_interne'], 4, 4);  
    					//echo 'value="'.$annee.'-'.$mois.'-'.($compteur).'"';	
     
    						if ($annee == date('y')){
    							if ($mois == date('m')){
    								$compteurs = $compteur+($i+1);			
    								echo 'value="'.date('y').''.date('m').''.str_pad($compteurs, 4, "0", STR_PAD_LEFT).'"';	
    								}else{
    									$compteurs = ($i+1);			
    									echo 'value="'.date('y').''.date('m').''.str_pad($compteurs, 4, "0", STR_PAD_LEFT).'"';	
    									}	
    							}else{
    								$compteurs = ($i+1);			
    								echo 'value="'.date('y').''.date('m').''.str_pad($compteurs, 4, "0", STR_PAD_LEFT).'"';	
    							}
    			  echo' > </input>
    			</div>  
           </td>
           <td>
    			<div class="form-group">
    				<input type="text" name="descriptif'.$i.'"  required class="form-control" />
    			</div>   
    	   <td>
    			<div class="form-group">
    				<a href="javascript:void(0)" onclick="javascript:document.getElementById(\'cell'.($i+1).'\').style.display=\'table-row\'; this.style.display=\'none\'">[+]</a>
    			</div>
           </td>
       </tr>
             ';
    }
     
    echo '
       </table>
       <tbody> 
    		<div class="form-group">        
               <button type="submit" name="ajouter_echantillon"  required class="btn btn-primary btn-lg btn-block">Ajouter ces echantillons >> </button>
    		</div>
    </form>
    ';?>

    Je pense qu'ensuite je vérifie if (isset($_POST['ajouter_echantillon'])) et si c'est le cas je fais un INSERT de toutes les lignes ou le display est activé..

    ET C'EST LA QUE CA BLOQUE . Je sais pourtant faire un INSERT INTO D'un formulaire avec une ligne (exemple : nom, prenom, age, date de naissance ) Mais quand il faut récupérer plusieurs lignes et faire un INSERT INTO d'un seul coup avec toutes les informations la c'est un soucis..

    A très vite !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il ne faut pas faire un seul INSERT mais un INSERT par ligne en faisant une boucle sur tes données recuperées du formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Merci Sabotage pour la rapide réponse.

    Dans mon esprit, il faudrait que :
    - lorsque je clique sur le bouton "ajouter les échantillons" toutes mes lignes se mettes dans un tableau (Colonne1; Colonne2; Colonne3; Colonne4)
    - Ensuite - que chaque ligne se mette 1 par 1 dans les colonnes. (1er champs de la ligne 1 dans colonne 1 / 2eme champs de la ligne 1 dans colonne 2 etc)
    - Pour finir que je fasse une sorte de foreach qui parcours le tableau et qui fait un insert pour chaque ligne du tableau.

    Mais maintenant mon soucis c'est que comment coder ca ? ... aucunes idées.. j'ai de la peine avec la gestion des tableaux.

    Merci beaucoup d'avance !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plutôt que de numéroter des noms de champs, prépare directement un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="ref_client['.$i.']"
    Tu recevrais ainsi pour chaque champs un tableau indexé par le numéro de la ligne.
    Il ne restera plus qu'à en parcourir un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach ($_POST['ref_client'] as $key=>$value) {
        $ref_client = $value;
        $numero_interne = $_POST['numero_interne'][$key];
        $numero_externe = $_POST['numero_externe'][$key];
        ....... 
        $sql = 'INSERT INTO ...... ';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    HAN GÉNIAL ! ! Merci beaucoup c'est tout bon ! t'es un chef !

    Belle fin de journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JTable dynamique : ajouter des lignes
    Par koolway dans le forum Composants
    Réponses: 6
    Dernier message: 17/06/2010, 15h41
  2. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/06/2007, 12h15
  3. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Windows
    Réponses: 1
    Dernier message: 20/06/2007, 11h28
  4. Réponses: 5
    Dernier message: 17/08/2006, 14h45
  5. Réponses: 14
    Dernier message: 22/09/2005, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo