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

Langage PHP Discussion :

[Tableaux] Suppression à l'indice 0 d'un array


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut [Tableaux] Suppression à l'indice 0 d'un array
    Salut!

    Je travaille sur un panier de marchandises en PHP et j'ai un gros souci au moment de la suppression d'un article :

    La suppression se passe bien a condition que je ne supprime pas l'élémennt 0 de la variable de session ce qui a comme facheuse conséquence de faire un problème d'offset.

    J'ai bien essayé de reconstruire l'index avec la fonction : array_values mais ça marche pas.

    Heu... merci de ne pas me sortir une bête de fonction, j'aimerai une solution simple que je ne me prenne pas la tête si possible.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Avec du code pour illustrer votre démarche il serait plus facile de répondre mais j'imagine que vous utilisez des itérations de type for alors qu'avec foreach vous ne rencontreriez pas ce problème (elle ne conviendra pas à tous les cas et demanderait une correction de votre code). La fonction array_slice sinon vous permettra de supprimer un élément (ou plusieurs) du tableau et de réindexer le tableau ensuite ou encore de passer par un tableau intermédiaire comme cela est fait dans le tutoriel Création d'un panier en PHP.

  3. #3
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    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
     
     
    if (($_POST['Supprimer']=="on") && ($i>0))
    			{
    			unset($_SESSION['QteCommande'][$i]);
    			unset($_SESSION['RefProduit'][$i]);
    			}
    		else
    			{
    			//supprimer l'élément 0
    			unset($_SESSION['QteCommande'][0]);
    			unset($_SESSION['RefProduit'][0]);
     
                            //réinitialisation des variables
    			array_values($_SESSION['QteCommande']);
    			array_values($_SESSION['RefProduit']);
                            }

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                            //réinitialisation des variables
    			array_values($_SESSION['QteCommande']);
    			array_values($_SESSION['RefProduit']);
    En même temps vos appels à array_values ne servent ici strictement à rien vu comme ils sont employés : cette fonction retourne une valeur - un tableau - que vous n'exploitez pas car elle ne modifie en aucune façon ses paramètres.

  5. #5
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Super ça marche !

    Voilà le code pour le faire fonctionner, honnêtement c'est très simple et efficace :

    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
     
    		<?php
    		$TailleArray=count($_SESSION['RefProduit']);
    		echo $_POST['Indice'];
    		$i=$_POST['Indice'];
    		if (($_POST['Supprimer']=="on") && ($i>0))
    			{
    			unset($_SESSION['QteCommande'][$i]);
    			unset($_SESSION['RefProduit'][$i]);
    			}
    		else
    			{
    			//supprimer l'élément 0
     
    			$_SESSION['QteCommande']=array_slice($_SESSION['QteCommande'],1);
    			$_SESSION['RefProduit']=array_slice($_SESSION['RefProduit'],1);
     
    			}
     
    		?>

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/06/2006, 12h11
  2. [Tableaux] suppression colonne tableau 2 Dimensions
    Par flydragon dans le forum Langage
    Réponses: 21
    Dernier message: 27/04/2006, 12h28
  3. Réponses: 2
    Dernier message: 28/03/2006, 12h45
  4. [Tableaux] Lecture d'une variable contenant plusieurs arrays
    Par MightyDucks dans le forum Langage
    Réponses: 10
    Dernier message: 27/03/2006, 13h40
  5. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 14h56

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