PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 06-01-2019 04:06:29

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Noyade dans tableau associatifs et PDO

Bonjour,

J'essaye désespérément de comprendre comment je pourrais insérer dans ma base de donnée un tableau en php. Voici le tableau en question :


Array
(
    [CodeProduitImprime] => Array
        (
            [28] => 15
            [37] => 16
            [38] => 17
        )

    [Prix] => Array
        (
            [28] => 10
            [37] => 15
            [38] => 20
        )

    [Qte] => Array
        (
            [28] => 1
            [37] => 1
            [38] => 1
        )

    [FraisDePort] => Array
        (
            [1015] => 0
        )

    [Devise] => Array
        (
            [1015] => EUR
        )

    [Total] => Array
        (
            [1015] => 124.00
        )

)

Je parcours mon tableau comme ceci

foreach($_POST as $NomDuChamps => $ValeurDuChamps)
{
    echo $NomDuChamps.':<br>';
        // Lecture de chaque tableau de chaque ligne
    foreach($ValeurDuChamps as $Id => $Valeur){
                // Affichage
        echo $Id.': '.$Valeur.'<br>';
    }
}

j'obtiens donc

Nom input: CodeProduitImprime:
Id 28: Valeur : 15
Id 37: Valeur : 16
Id 38: Valeur : 17
Nom input: Prix:
Id 28: Valeur : 10
Id 37: Valeur : 15
Id 38: Valeur : 20
Nom input: Qte:
Id 28: Valeur : 1
Id 37: Valeur : 1
Id 38: Valeur : 1
Nom input: FraisDePort:
Id 1015: Valeur : 0
Nom input: Devise:
Id 1015: Valeur : EUR
Nom input: Total:
Id 1015: Valeur : 124.00

Mais la c'est le néant ! Je suis incapable de faire un update en PDO en utilisant ce tableau. Je ne sais pas par quel bout le prendre et je suis totalement perdu.

Exemple, pour la première ligne, Je veux faire un update du champs CodeProduitImprime en modifiant 15 sur l'id 28 :-(
en gros

UPDATE matable SET CodeProduitImprime = '15' WHERE id = '28'

et ainsi de suite en bouclant...

Je bloque depuis des heures alors je me permet de solliciter un conseil svp

Merci beaucoup!

Hors ligne

#2 06-01-2019 15:24:22

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : Noyade dans tableau associatifs et PDO


    $cles = array_keys($_POST['CodeProduitImprime']);
    for($i=0; $i<sizeof($_POST['CodeProduitImprime']); $i++){
         echo $cles[$i];
         echo $_POST['CodeProduitImprime'][$i];
         echo $_POST['Prix'][$i];
         echo $_POST['Qte'][$i];
    }
 

Hors ligne

#3 06-01-2019 16:48:07

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Noyade dans tableau associatifs et PDO

En manipulant le tableau, je m'approche du but :

// Tableau d'origine :
$tab = [
    'CodeProduitImprime' => [28 => 15, 37 => 16, 38 => 17],
    'Prix' => [28 => 10, 37 => 15, 38 => 20],
    'Qte' => [28 => 1, 37 => 1, 38 => 1],
    'FraisDePort' => [1015 => 0],
    'Devise' => [1015 => 'EUR'],
    'Total' => [1015 => 124.00]
];
// Reformatage du tableau :
$records = [];
foreach ($tab as $field => $record)
{
    foreach ($record as $id => $value)
    {
        $records[$id][$field] = $value;
    }
}
// Ensuite tu peux formater tes requêtes SQL :
$updates = [];
foreach ($records as $id => $record)
{
    $update = 'UPDATE maTable SET ';
    $keysValues = [];
    foreach ($record as $field => $value)
    {
        if (is_string($value)) {
            $value = "'$value'";
        } elseif (is_float($value)) {
            $value = number_format($value, 2);
        }
        $keysValues[] = "$field = $value";
    }
    $update .= implode(', ', $keysValues);
    $update .= " WHERE id = $id";
    $updates[] = $update;
}
// ici boucle pour la requete

J'ai juste oublié un détail, Les données à partir du champs "FraisDePort" sont destinées à une deuxième table et la je rebloque :-(

Hors ligne

Pied de page des forums