[RESOLU] Passer des valeurs d'un tableau à un autre

Eléphant du PHP | 337 Messages

19 avr. 2015, 00:02

Bonjour à tous,

Je me prends la tête sur un détail stupide sans m'en sortir depuis quelques heures... Voici donc :

- J'ai une variable de session $_SESSION['liste_indices'] contenant pour commencer tous les indices de la variable $_SESSION['panier']. Exemple : si mon panier contient 5 articles, ma variable $_SESSION['liste_indices'] sera Array(0, 1, 2, 3, 4).

- Par soumission de formulaire, je sélectionne des éléments du panier pour les affecter à différentes adresses de livraison.
Du coup, je dois retirer les indices du panier correspondant de ma variable $_SESSION['liste_indices'].

J'ai essayé à coup de array_values et autres trucs plus ou moins vaseux, mais je n'y arrive pas... Un peu de code concret peut-être pour y voir plus clair :

Code : Tout sélectionner

$CHAINE_PANIER = array(); for($i=0 ; $i<sizeof($_SESSION['panier']) ; $i++) { // Si la case a été cochée, on ajoute cet article à la liste des articles correspondant à cette adresse de livraison // et on le supprime de la liste des articles non affectés if($_POST['item_'.$i] == 1) { $CHAINE_PANIER[] = $i; unset($_SESSION['liste_indices'][$i]); } } $_SESSION['liste_indices'] = array_values($_SESSION['liste_indices']);
Quelques précisions :
- $_POST['item_'.$i] correspond à une case à cocher dans le formulaire (vous vous en seriez doutés !)
- $CHAINE_PANIER est ensuite inscrit dans une variable $_SESSION['livraison']

Je crois que je m'embrouille entre les valeurs et les indices, mais ça fait trop longtemps que j'ai les yeux dessus, j'arrive plus à voir :)

Merci pour votre aide !

Eléphant du PHP | 337 Messages

19 avr. 2015, 00:30

Eh bien, c'est le forum le plus efficace qui soit : le simple fait de poster mon message, j'ai trouvé la solution :D (c'était bien une confusion entre indice et valeur).

Il fallait faire :

Code : Tout sélectionner

$CHAINE_PANIER = array(); for($i=0 ; $i<sizeof($_SESSION['panier']) ; $i++) { // Si la case a été cochée, on ajoute à la liste des articles de correspondant à cette adresse // et on supprime de la liste des indices non affectés if($_POST['item_'.$i] == 1) { $CHAINE_PANIER[] = $i; for($k=0 ; $k<sizeof($_SESSION['liste_indices']) ; $k++) { if($_SESSION['liste_indices'][$k] == $i) { unset($_SESSION['liste_indices'][$k]); $_SESSION['liste_indices'] = array_values($_SESSION['liste_indices']); } } } }
Bon maintenant, il va falloir que j'améliore le truc, histoire qu'on puisse modifier, éditer, supprimer, savoir ce qui se passe si des articles sont enlevés ou ajoutés au panier entre temps... Bref ça promet !