Problème avec tableau en PHP à partir d'une base de donnée

Résolu/Fermé
Cielmonbivouac - 28 sept. 2022 à 19:51
 Cielmonbivouac - 29 sept. 2022 à 08:20

Bonjour à tous,

J'ai une question toute simple en PHP que je n'arrive pas à résoudre ...

J'ai une boucle et j'aimerais générer une ligne de tableau avec des ids produits et la quantité associées, provenant d'une bdd MySQL.

Pour être beaucoup plus clair, j'aimerais générer ça à partir d'une boucle :

'line_items' => 
[
    [
    'price' => 'price_6uBA',
    'quantity' => 1,
  ],
  [
    'price' => 'price_J5aM',
    'quantity' => 2,
  ],
  [
    'price' => 'price_NcP9',
    'quantity' => 1,
  ],
  [
    'price' => 'price_S2Af',
    'quantity' => 4,
  ]
]

Ca doit être tout simple, mais comment faire ?

BOUCLE 
{
... 

  $product = array(
                  'price' => $option_stripe_id,
                  'quantity' => $product_quantity
                 );
  $shop_list = array_push($shop_list, $product);
}

Un  genre de truc comme ça, mais qui fonctionne ? :)

Merci à toutes les personnes qui voudront bien m'aider !

Bonne soirée !
Windows / Firefox 105.0

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 28 sept. 2022 à 20:30

Bonjour,

Il nous faudrait voir comment tu fais ta boucle

et où et comment tu initialises ta variable 

$shop_list

Et si possible, un var_dump de la variable qui contient les données issues de ta bdd


0
Cielmonbivouac
28 sept. 2022 à 20:50

Salut Jordane !

Tu vas vraiment me sauver mon site ! Merci !

Alors, pour la boucle :

// On crée ici le panier produit :
$sql = "SELECT * FROM products_sell";
$bdd_nom_produit = $bdd->query($sql);

$shop_list = array();

while($nom_produit_shopping_card = $bdd_nom_produit->fetch())
          {
      // [...]  Je pense vraiment que c'est pas nécessaire de détailler les conditions relatives à la boucle, mais si besoin, je peux. 

 $product_quantity = valid_donnees($_COOKIE[$set_produits_quantity]);

$products_name_option = valid_donnees($_COOKIE[$set_nom_cookie_guess]);

$product = array(
                  'price' => $option_stripe_id,
                  'quantity' => $product_quantity);
              $shop_list = array_push($shop_list, $product);

}


Le résultat du var_dump :

var_dump($shop_list);

Là, avec ce que j'ai réécrit, ça donne ça comme erreur :

<br />
<b>Warning</b>:  array_push() expects parameter 1 to be array, int given in <b>/var/www/cielmonbivouac/create-checkout-session_3.php</b> on line <b>49</b><br />
<br />
<b>Warning</b>:  array_push() expects parameter 1 to be array, null given in <b>/var/www/cielmonbivouac/create-checkout-session_3.php</b> on line <b>49</b><br />
NULL

Bien à toi !

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
28 sept. 2022 à 21:23

Ce n'est pas un var_dump sur $shop_list que je voulais .. mais sur le résultat de ta requête sql..

De plus, on ne sait rien de ta fonction valid_donnees  .. ni de ce que contiennent tes cookies ( étrange de passer par des cookies d'ailleurs.. et peu fiable (vu qu'on peut les désactiver/supprimer à tout moment .. )

Mais bon,

En se basant sur le code que tu viens de nous donner.. ça pourrait ressembler à ça

// On crée ici le panier produit :
$sql = "SELECT * FROM products_sell";
$bdd_nom_produit = $bdd->query($sql);

$shop_list = array();

while($nom_produit_shopping_card = $bdd_nom_produit->fetch()){
  // [...]  Je pense vraiment que c'est pas nécessaire de détailler les conditions relatives à la boucle, mais si besoin, je peux. 

  $product_quantity = valid_donnees($_COOKIE[$set_produits_quantity]);

  $products_name_option = valid_donnees($_COOKIE[$set_nom_cookie_guess]);

  $product = array(
    'price' => $option_stripe_id,
    'quantity' => $product_quantity
    );
    
    $shop_list{'line_items'][] = $product;

}

0
Cielmonbivouac
28 sept. 2022 à 21:39

Nickel, ça marche parfaitement ! Merci Jordane !

Et effectivement, passer par des cookies n'est peut-être pas la meilleure des idées. En fait, je récupère un panier sauvegardé à partir d'un cookie. L'idée pour améliorer tout ça serait peut être de sauvegarder le panier en bdd une fois que l'on passe au paiement, histoire que si y'a un problème de cookie entre la page paiement et la validation, ça éviterait tout problème.

C'est pas bien compliqué à faire et je m'en occuperais avant finalisation.

Merci à toi encore une fois !

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 28 sept. 2022 à 21:52

Tu pourrais déjà utiliser les variables de session pour gérer ton panier.

Cadeau

https://codes-sources.commentcamarche.net/source/102874-php-panier-caddi-virtuel-en-session

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cielmonbivouac
28 sept. 2022 à 23:02

Merci beaucoup ! ;) En vrai, les cookies du panier fonctionnent déjà très bien ! Le prix est fixé en bdd et les cookies ne servent qu'à appeler l'id du produit, son option choisie et sa quantité voulue. Bref, ça tourne nickel en somme déjà ! 

Je suis content, je suis pas codeur à la base, mais vidéaste. C'est juste sympa de se mettre au code de temps en temps, même si je suis impatient que tout roule et que je laisse ça derrière moi pour quelques mois !

Prends soin de toi et merci beaucoup pour l'aide !!

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
28 sept. 2022 à 23:06

J'imagine bien que ça fonctionne avec les cookies... Mais si tu comptes utiliser ce site pour de vrai, sache que l'utilisation des cookies peut-être désactivée dans les navigateurs internet tu n'es donc pas à l'abri qu'un utilisateur ne puisse pas ajouter de produits au panier à cause de cela

0
Cielmonbivouac
29 sept. 2022 à 08:20

Yeap ! Je rajouterais quelques lignes s'il faut, pour stocker le panier dans le compte utilisateur, au cas où :)

Merci à toi !

0