Pdo insert array dans une table
Résolu/Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
3 juin 2021 à 11:42
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 3 juin 2021 à 14:34
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 3 juin 2021 à 14:34
A voir également:
- Php pdo insert array
- Touche insert - Guide
- Easy php - Télécharger - Divers Web & Internet
- Disk boot failure insert system disk and press enter - Guide
- Retour a la ligne php ✓ - Forum PHP
- Ou est la touche "INSERT" ? ✓ - Forum Clavier
3 réponses
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mars 2025
4 740
3 juin 2021 à 12:26
3 juin 2021 à 12:26
Bonjour,
je suppose que ce que tu envoies en POST sont des array ?
Dans ce cas, dans ta boucle, il faut utiliser un truc du genre
Dans le doute, si tu n'arrives pas à voir, fais un
et regarde ce qu'il contient....
je suppose que ce que tu envoies en POST sont des array ?
Dans ce cas, dans ta boucle, il faut utiliser un truc du genre
$txt_valeur = trim(strip_tags($_POST["txt_valeur_a"][$ligne]));
Dans le doute, si tu n'arrives pas à voir, fais un
var_dump($_POST);
et regarde ce qu'il contient....
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
3 juin 2021 à 12:49
3 juin 2021 à 12:49
Bonjour Jordane,
Les valeurs envoyées par POST sont uniques, c'est dans le fichier _generer.php que j'ai fais un While du code_coupon et du hash selon la valeur de txt_nbr_a...
Voici ce que le var_dump($_POST) me renvois :
index.php
_generer.php
Les valeurs envoyées par POST sont uniques, c'est dans le fichier _generer.php que j'ai fais un While du code_coupon et du hash selon la valeur de txt_nbr_a...
Voici ce que le var_dump($_POST) me renvois :
array(5) { ["txt_nbr_a"]=> string(1) "2" ["txt_valeur_a"]=> string(4) "3333" ["txt_nature_a"]=> string(4) "test" ["txt_expire_a"]=> string(1) "3" ["Generer_a"]=> string(0) "" }
index.php
<form name="form" action="_generer.php" method="POST" enctype="multipart/form-data"> <input type="number" id="txt_nbr_a" name="txt_nbr_a" value="1" required> <input type="text" id="txt_valeur_a" name="txt_valeur_a" required value=""> <input type="text" id="txt_nature_a" name="txt_nature_a" required value=""> <select id="txt_expire_a" name="txt_expire_a" required> <option selected></option> <option value="1">1 jour</option> <option value="3">3 jours</option> <option value="7">7 jours</option> <option value="15">15 jours</option> </select> <button class="btn btn-primary" name="Generer_a" type="submit">Générer</button> </form>
_generer.php
<?php function CodeCoupon( $longueur = 4 ) { $caracteres1 = "012"; $caracteres2 = "AbC"; $caracteres3 = "301"; $caracteres = $caracteres1.$caracteres2; $longueurMax = strlen( $caracteres ); $chaineAleatoire = ''; for ( $i = 0; $i < $longueur; $i++ ) {$chaineAleatoire .= $caracteres[ rand( 0, $longueurMax - 1 ) ];} return $chaineAleatoire; } if(isset($_POST['Generer_a'])){foreach($_POST as $var=>$val){if(!is_array($val)){$$var=strip_tags($val);}else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} $txt_nbr = trim(strip_tags($_POST["txt_nbr_a"])); $txt_nbr = !empty($txt_nbr) ? "$txt_nbr" : NULL; $ligne = 1; $data = array(); while ($ligne <= $_POST["txt_nbr_a"]) { $code_coupon = CodeCoupon()."-".CodeCoupon()."-".CodeCoupon()."-".CodeCoupon(); $code_coupon = !empty($code_coupon) ? $code_coupon : array(); $txt_hash = md5($code_coupon); $txt_hash = !empty($txt_hash) ? $txt_hash : array(); $txt_valeur = trim(strip_tags($_POST["txt_valeur_a"])); $txt_valeur = !empty($txt_valeur) ? "$txt_valeur" : 0; $txt_nature = trim(strip_tags($_POST["txt_nature_a"])); $txt_nature = !empty($txt_nature) ? "$txt_nature" : NULL; $txt_creation = date("Y-m-d"); $txt_exp = trim(strip_tags($_POST["txt_expire_a"])); $txt_exp = !empty($txt_exp) ? "$txt_exp" : NULL; $txt_expire = strftime(DATE_SQL, strtotime("+$txt_exp days")); $data[] = array( "code_coupon" => $code_coupon, "valeur" => $txt_valeur, "nature" => $txt_nature, "date_creation" => $txt_creation, "date_expiration" => $txt_expire, "hash" => $txt_hash ); $ligne ++ ; } if(!empty($data)) { $stmt = $pdo->prepare("INSERT INTO tab_shop_coupons (code_coupon,valeur,nature,date_creation,date_expiration,hash) VALUES (?,?,?,?,?,?)"); var_dump($_POST)."<br>"; try { $pdo->beginTransaction(); foreach ($data as $row) { $stmt->execute($row); } $pdo->commit(); }catch (Exception $e){ $pdo->rollback(); throw $e; } } } ?>
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mars 2025
4 740
3 juin 2021 à 13:11
3 juin 2021 à 13:11
Ah ..
Tu as utilisé un tableau associatif pour des variables nommées
Alors que dans ta requête tu as mis des points d'interrogation...
Il faut retirer les clés dans ta variable data
Tu as utilisé un tableau associatif pour des variables nommées
Alors que dans ta requête tu as mis des points d'interrogation...
Il faut retirer les clés dans ta variable data
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
3 juin 2021 à 14:34
3 juin 2021 à 14:34
Merci Jordane, tu m'as bien guidé.
if(!empty($data)) { $stmt = $pdo->prepare("INSERT INTO tab_shop_coupons (code_coupon,valeur,nature,date_creation,date_expiration,hash) VALUES (:code_coupon,:valeur,:nature,:date_creation,:date_expiration,:hash)"); try { $pdo->beginTransaction(); foreach ($data as $row) { $stmt->bindParam(':code_coupon', $row['code_coupon']); $stmt->bindParam(':valeur', $row['valeur']); $stmt->bindParam(':nature', $row['nature']); $stmt->bindParam(':date_creation', $row['date_creation']); $stmt->bindParam(':date_expiration', $row['date_expiration']); $stmt->bindParam(':hash', $row['hash']); $stmt->execute(); } $pdo->commit(); }catch (Exception $e){ $pdo->rollback(); throw $e; } }