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

PHP & Base de données Discussion :

Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Bonsoir,

    J'ai une page php (qui génère un ensemble de formulaires).

    voici le code html
    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
     
    <form name="createArtist" action="admin.php?action=create&page=3" method="POST">
    <!-- bloc de donnée à enregister dans la base -->
    Ann&eacute;e : 
    <select name="date_art_0">
    <option value="">defaut</option>
    <option value="1900">2006</option>
    <option value="1901">2005</option>
    </select>
    Descriptif en français :
    <input name="desc_fr_0"  type="textarea" style="width:350px; height:50px" />
    Descriptif en anglais :
    <input name="desc_en_0"  type="textarea" style="width:350px; height:50px" />
    <!-- bloc de donnée à enregister dans la base -->
    <!-- ce bloc apparait 10 fois ou "n" fois le nom des champs étant terminé par un indice : 0, 1 , 2 , 3,... -->
    Je récupère les variables $_POST que j'extrait pour les stocker dans un nouveau tableau associatif, en excluant les valeurs qui ne m'intéressent pas ou les champs vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $Tab_formulaire_post = array();
    foreach ($_POST as $key=>$val)
    {
    	if ( ($val !== '') && ($val !== "VALIDER") ) {
    	$Tab_formulaire_post [$key] = $val;
    }
    Je veux insérer dans la base (sur une même ligne...) le tiercé de valeurs :
    "date_art_1", "desc_fr_1", "desc_en_1" (par exemple). Sachant que le suffixe de ces variables va de 0 à n....

    Comment pourrai-je faire pour stocker ces trois valeurs "ensemble" de façon a éxécuter ma requete d'insertion à chaque itération d'une boucle "foreach" sur mon tableau "$Tab_formulaire_post".

    Voici la structure de ma table MySql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ---------------------------------------------------
    id   | date_art  | desc_art_fr  | desc_art_en
    ---------------------------------------------------
    J'espère que je me suis bien fait comprendre.

    Merci d'avance pour votre aide.


  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour, c'est quelque chose comme ceci que tu cherches à faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach ($_POST as $key=>$val)
    {
    	if ( ($val !== '') && ($val !== "VALIDER") ) {
     
            mysql_query('INSERT INTO tatable(date_art,desc_art_fr,desc_art_en)
                              VALUES ($_POST['date_art_[$key]'],$_POST['desc_art_fr_[$key]'],$_POST['desc_art_en_[$key]']) ') 
     
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse, j'avais pondu le code suivant qui peux me permettre d'effectuer des traitements supplémentaires sur les résultats, (un peu laborieux, et il y a surement plus élégant) je le poste ici :

    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
     
    /* RÉCUPÉRATION DES VALEURS $_POST DANS LE TABLEAU "$Tab_formulaire_post"*/
     
    $Tab_formulaire_post = array();
    foreach ($_POST as $key=>$val) {
    	if ( ($val !== '') && ($val !== "VALIDER") ) {
    	$Tab_formulaire_post [$key] = $val;
    	}
    }
     
    // COMPTEUR DE TABLEAU DE VALEUR RÉCUPÉRÉES
     
    $t=0;
     
    // COMPTEUR D'INDICE DE TABLEAU DE VALEUR RÉCUPÉRÉES
     
    $cpt=0;
     
    /*TRAITEMENT DES ENSEMBLES (de 3) DE VALEURS ISSUES DE $_POST & INSERTION DANS LA BASE*/
     
    foreach ($Tab_formulaire_post as $cle=>$valeur)
    {
     
    	if ($cpt == 0) {
     
    		$val_extract = $valeur;	
    		${"Tab_ensemble_".$t}[$cpt] = $val_extract;
    		$cpt++;
     
    	} 
     
    	elseif ($cpt !== 0) {
     
    		if ($cpt == 2) {
     
    		$val_extract = $valeur;
    		${"Tab_ensemble_".$t}[$cpt] = $val_extract;
    		$req = "INSERT INTO `maTable` (date_art_forma,desc_forma_fr,desc_forma_en) VALUES ('".${"Tab_ensemble_".$t} [0]."','".${"Tab_ensemble_".$t} [1]."','".${"Tab_ensemble_".$t} [2]."') WHERE `id_machin='".$_GET[id_machin]."'";
    		mysql_query ($req) or die (mysql_error);
    		$cpt=0;
    		$t++;
     
     
    		} elseif ($cpt > 0) {
     
    		$val_extract = $valeur;
    		${"Tab_ensemble_".$t}[$cpt] = $val_extract;
    		$cpt++;
    		}
     
    	}
    }

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

Discussions similaires

  1. [Vxi3] générer des pdf à partir d'une boucle
    Par milkaaa dans le forum Webi
    Réponses: 4
    Dernier message: 09/04/2013, 18h07
  2. Réponses: 3
    Dernier message: 22/03/2010, 01h12
  3. Copier/coller des informations à partir d'une boucle
    Par BOU59000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2009, 09h21
  4. insérer des valeurs à partir d'une boucle automatique
    Par buhrne dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/12/2007, 16h52
  5. Générer des classes à partir d'une BDD
    Par christo.pop dans le forum Persistance des données
    Réponses: 2
    Dernier message: 27/03/2007, 09h11

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