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 :

insérer des array dans la BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 8
    Points
    8
    Par défaut insérer des array dans la BDD
    Bonjour,

    J'essaie de faire un formulaire de devis que je voudrais enregistrer dans la BDD.
    Mon formulaire renvoie vers ma page PHP d'insertion différents Array:
    Description, Prix unitaire, Quantité, Taux de TVA, total, N° d'offre.

    Pour identifier ce que je reçois dans la page php d'insertion j'ai mis un code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
     
    echo '<pre>';
    	@print_r($_POST[ardesc]);
    	@ print_r($_POST[entqte]);
    	@ print_r($_POST[entpu]);
    	@ print_r($_POST[enttva]);
    	@ print_r($_POST[total]);
    echo '</pre>'; 
     
     @ print_r($_POST[OfID]);
     
     ?>
    La page m'imprime les données sous cette forme:

    Code x : 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
    Array
    (
        [1] => Descriptif 1
        [2] => Descriptif 2
        [3] => Descriptif 3
        [4] => 
        [5] => 
        [6] => 
    )
    Array
    (
        [1] => 2
        [2] => 1
        [3] => 10
        [4] => 
        [5] => 
        [6] => 
    )
    Array
    (
        [1] => 125
        [2] => 320
        [3] => 25.5
        [4] => 
        [5] => 
        [6] => 
    )
    Array
    (
        [1] => 1.21
        [2] => 1.21
        [3] => 
        [4] => 
        [5] => 
        [6] => 
    )
    Array
    (
        [1] => 302.5
        [2] => 387.2
        [3] => 308.55
        [4] => 
        [5] => 
        [6] => 
    )
    80

    Mes données sont donc bien arrivées et correctement classées.

    Maintenant que je sais que mes données sont correctement classées dans $_POST[ardesc], $_POST[entqte] etc... comment faire pour les insérer dans la base de données?

    Faut il les exploser, faire une boucle???
    Je ne vois pas vers quoi diriger mes recherches.

    Je souhaiterais que la table "entree" soit libellée avec les champs correspondants à chaque ligne. Donc que le descriptif de la ligne 1 soit enregistré en même temps que le prix unitaire 1, quantité 1...
    Idem pour les 6 lignes de mon formulaire.

    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $req = $bdd->prepare('INSERT INTO entree(ardesc, entqte, entpu, enttva, total, OfID, entNumLigne) VALUES(:ardesc, :entqte, :entpu, :enttva, :total, :OfID, :entNumLigne');
    $req->execute(array(    
    	'ardesc' => $_POST[ardesc],
    	'entqte' => $_POST[entqte],
    	'entpu' => $_POST[entpu],
    	'enttva' => $_POST[enttva],    
    	'total' => $_POST[total],
            'OfID' => $_POST[OfID],      
            'entNumLigne' => $_POST[NumLigne],
    Mais ça ne fonctionne évidemment pas...

    Pouvez-vous me guider SVP?

    Merci

  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
    avec un foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $req = $bdd->prepare('INSERT INTO entree(ardesc, entqte, entpu, enttva, total, OfID, entNumLigne) VALUES(:ardesc, :entqte, :entpu, :enttva, :total, :OfID, :entNumLigne');
    foreach($_POST['NumLigne'] as $key=>$value) {
    $req->execute(array(    
    	'ardesc' => $_POST[ardesc][$key],
    	'entqte' => $_POST[entqte][$key],
    	'entpu' => $_POST[entpu][$key],
    	'enttva' => $_POST[enttva][$key],    
    	'total' => $_POST[total][$key],
            'OfID' => $_POST[OfID][$key],      
            'entNumLigne' => [$key]));
    }
    Il serait cependant meilleur de nommer tes champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="article[$i][ardesc]"
    avec $i incrementé pour chaque article.
    Ca te permet de mieux regrouper tes données en obtenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['article'][13221] = array('ardesc'=>'Descriptif1', 'entqte'=>2, etc.);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse rapide, je vais essayer de ce pas

    Par contre pourrais-tu m'expliquer un peu la partie nommer les champs, je ne comprends pas. (Je débute en PHP)

    Je crois comprendre que tu me suggères de nommer les champs à l'intérieur de l'array... C'est ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['article'][13221] = array('ardesc'=>'Descriptif1', 'entqte'=>2, etc.);
    Que signifie [13221]?

  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
    Je suppose qu'actuellement tes champs de formulaire sont comme ça :
    Je te propose des les nommes comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="article[$i][ardesc]"
    de facon a recuperer un tableau comme je t'ai indiqué.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Actuellement ils sont comme ça:

    Code html : 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
    <tr>
              <td><input type="text" name="ardesc[1]" size="100"></td>
              <td><input type="text" name="entpu[1]" size="8" onBlur="calcul_form(this)"/></td>
              <td><input type="text" name="entqte[1]" size="5" onBlur="calcul_form(this)" /></td>
              <td>
                <select name="enttva[1]" onBlur="calcul_form(this)" >
                    <option value="1.21">21%</option>
                    <option value="1.06">6%</option>
                </select>
              </td>
              <td><input type="text" name="total[1]" readonly size="8"></td>
            </tr>
    		<tr>
              <td><input type="text" name="ardesc[2]" size="100"></td>
              <td><input type="text" name="entpu[2]" size="8" onBlur="calcul_form(this)"/></td>
              <td><input type="text" name="entqte[2]" size="5" onBlur="calcul_form(this)" /></td>
              <td>
                <select name="enttva[2]" onBlur="calcul_form(this)" >
                    <option value="1.21">21%</option>
                    <option value="1.06">6%</option>
                </select>
              </td>

    etc...

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Arghhhhhh!

    J'ai une erreur:
    Parse error: syntax error, unexpected '[' in ... on line 21
    qui correspond à la ligne 11 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
    $req = $bdd->prepare('INSERT INTO entree(EntDescr, EntQte, EntPu, EntTotal, EntOfID, EntOfLigne) VALUES(:ardesc, :entqte, :entpu, :total, :OfID, :entNumLigne');
    foreach($_POST['entNumLigne'] as $key=>$value) {
    $req->execute(array(    
    	'ardesc' => $_POST[ardesc][$key],
    	'entqte' => $_POST[entqte][$key],
    	'entpu' => $_POST[entpu][$key],
    	'total' => $_POST[total][$key],
            'OfID' => $_POST['OfID'],      
            'entNumLigne' => [$key],
    	));
     
    	}
     
    echo 'L\'offre à bien été enregistrée, merci !<br/>';

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="text" name="ardesc[1]" size="100"></td>
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="text" name="article[1][ardesc]" size="100"></td>

    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach($_POST['article'] as $key=>$values) {
    $req->execute(array(    
    	'ardesc' => $values['ardesc'],
    	'entqte' => $values['entqte'],
    	'entpu' =>$values['entpu'],
    	'total' =>$values['total'],
            'OfID' => $values['OfID'],      
            'entNumLigne' => $key
    	));
     
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Ca marche, non sans mal mon javascript qui s'occupe des calculs sur la page des formulaires a fait un peu la tronche mais j'ai résolu les problèmes.

    Merci beaucoup pour ta très précieuse aide!!

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

Discussions similaires

  1. Insérer des valeurs dans une BDD de manière périodique
    Par camillestx dans le forum Autres SGBD
    Réponses: 0
    Dernier message: 16/02/2015, 15h53
  2. [Tableaux] Insérer des arrays dans des arrays
    Par DJ Caësar 9114 dans le forum Langage
    Réponses: 2
    Dernier message: 01/06/2009, 13h03
  3. Insérer des Jpeg dans une BDD
    Par KRis dans le forum Bases de données
    Réponses: 8
    Dernier message: 19/03/2009, 19h16
  4. Insérer des images dans une BDD Access
    Par polothentik dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/05/2008, 09h00
  5. Insérer des données dans ma BDD
    Par griese dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 28/06/2006, 09h34

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