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 donnée d'un tableau dans base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2022
    Messages : 35
    Par défaut Insérer donnée d'un tableau dans base de données
    Bonjour à tous
    Je viens demander votre aide.
    J'ai un tableau dont je souhaite enregistrer les valeur dans une base de donnée. Le nombre de colonnes et de lignes est variable.
    J'ai pu récupérer les données dans un tableau mais je bloque sur l'insertion dans la bdd.
    Le tableau html:
    Nom : tbl.png
Affichages : 100
Taille : 10,0 Ko

    L'array :
    data, [{"mesure":"mes1","agent1":"0.001","agent2":"0.002","agent3":"0.003"},{"mesure":"mes2","agent1":"0.004","agent2":"0.005","agent3":"0.006"}]C'est à partir de ce tableau que je souhaite enregistrer les données dans la bdd afin d'avoir le résultat ci dessous :
    Nom : BDD.png
Affichages : 111
Taille : 10,2 Ko

    A noter que le nombre de colonnes agent et de ligne est variable.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 329
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 329
    Billets dans le blog
    17
    Par défaut
    As-tu la main sur la structure de $data ?

    Car ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data = [
        {"mesure":"mes1","agent1":"0.001","agent2":"0.002","agent3":"0.003"},
        {"mesure":"mes2","agent1":"0.004","agent2":"0.005","agent3":"0.006"}
    ]
    Devrait plutôt être comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data = [
        {"mesure":"mes1", "agents": {"agent1":"0.001","agent2":"0.002","agent3":"0.003"}},
        {"mesure":"mes2", "agents": {"agent1":"0.004","agent2":"0.005","agent3":"0.006"}}
    ]
    Avec un tableau/dictionnaire des mesures effectuées par les agents.

    Ainsi tu pourrais boucler sur les mesures, puis les agents, et faire un INSERT sur chaque itération.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2022
    Messages : 35
    Par défaut
    Merci pour ta réponse

    Citation Envoyé par Séb. Voir le message
    As-tu la main sur la structure de $data ?
    Oui j'ai la main. Ci dessous le code que j'utilise pour avoir le tableau :
    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
    function tjson(){
    	var $table = $(".Datames")
        rows = [],
        header = [];
     
    	$table.find("thead th").each(function () {
    		header.push($(this).html());
    	});
     
    	$table.find("tbody tr").each(function () {
    		var row = {};
    		$(this).find("td input").each(function (q) {
    			var key = header[q],
    				value = $(this).val();
    			row[key] = value;
    		});
    		rows.push(row);
    	});
     
    	return JSON.stringify(rows);
    }
    Citation Envoyé par Séb. Voir le message
    Avec un tableau/dictionnaire des mesures effectuées par les agents.

    Ainsi tu pourrais boucler sur les mesures, puis les agents, et faire un INSERT sur chaque itération.
    Désolée, ca m'embête un peu de le dire mais je ne sais pas trop comment faire ca en fait ou je n'ai pas bien compris.

    Merci

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 329
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 329
    Billets dans le blog
    17
    Par défaut
    C'est moche

    Bon, plutôt que de toucher au JS (qui n'a pas l'air tout jeune) et de tout casser, je te propose ceci :

    Code php : 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
    /*
     
    Je considère que l'on reçoit des données ressemblant à ceci :
     
    $data = [
        {"mesure":"mes1","agent1":"0.001","agent2":"0.002","agent3":"0.003"},
        {"mesure":"mes2","agent1":"0.004","agent2":"0.005","agent3":"0.006"}
    ]
     
    */
     
    $data = json_decode($data); // On obtient un tableau d'objets
     
    echo '[DEBUG] ', print_r($data, true);
     
    foreach ($data as $ligne) { // Parcours des lignes de ton tableau HTML
        foreach ($ligne as $agent => $mesure) { // Parcours des cellules de chaque ligne
            if ($agent === 'mesure') { // Cellule "mesure" ?
                continue; // Si oui on l'ignore car on ne s'occupe que des valeurs
            }
            // Arrivé ici nous sommes sur une cellule de valeur de mesure
            $sql = <<<SQL
                INSERT INTO ta_table (agent, mes, valeur) -- Je ne sais pas comment valoriser link
                VALUES ({$pdo->quote($agent)}, {$pdo->quote($ligne->mesure)}, {$pdo->quote($mesure)})
                SQL;
            echo "[DEBUG] {$sql}\r\n";
            $pdo->exec($sql);
        }
    }

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2022
    Messages : 35
    Par défaut
    Citation Envoyé par Séb. Voir le message
    C'est moche
    Oui c'est vrai mais je ne sais pas faire mieux pour l'instant!

    J'ai essayé ton code et il marche super bien, exactement ce que je voulais faire!

    Grand merci à toi

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

Discussions similaires

  1. Insérer valeur récupérée en get dans base de données
    Par crastinette dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 06/09/2021, 21h23
  2. [XL-2010] Insérer chaque ligne d'un tableau dans une base de données
    Par Marc_Ingé dans le forum Excel
    Réponses: 2
    Dernier message: 14/06/2021, 11h12
  3. insérer image dans base de données
    Par eriz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/04/2007, 12h03
  4. Réponses: 22
    Dernier message: 22/12/2006, 18h01
  5. Insérer Enregistrement dans Base de données
    Par TurricanII dans le forum JBuilder
    Réponses: 3
    Dernier message: 30/05/2006, 12h59

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