Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1594 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  supprimer un element de tableau en variable de session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

supprimer un element de tableau en variable de session

n°1120654
freed102
Arayashiki
Posté le 15-06-2005 à 12:29:17  profilanswer
 

voila j'ai des valeurs en tableaux enregistrées en session sous la forme :
 

Code :
  1. $_SESSION[item][1][libelle]="tomate";
  2. $_SESSION[item][1][quantite]=5;
  3. $_SESSION[item][1][prix_unitaire]=0.7;
  4. $_SESSION[item][2][libelle]="poireaux";
  5. $_SESSION[item][2][quantite]=3;
  6. $_SESSION[item][2][prix_unitaire]=0.2;
  7. $_SESSION[item][3][libelle]="concombre";
  8. $_SESSION[item][3][quantite]=4;
  9. $_SESSION[item][3][prix_unitaire]=0.5;


 
... si je veux supprimer $_SESSION[item][2]... comment je fais ?
 
j'ai testé une fonction à base de array_splice... il me renvoie "true" mais il n'a rien effacé...
 

Code :
  1. function delArrayElementByKey($array_with_elements, $key_name) {
  2.      $key_index = array_keys(array_keys($array_with_elements), $key_name);
  3.      if (count($key_index) != '') {
  4.          array_splice($array_with_elements, $key_index[0], 1);
  5.      }
  6.      return $array_with_elements;
  7.   }


 
quant à session_unset c pas bon je pense...
 
QUE FAIRE ?

mood
Publicité
Posté le 15-06-2005 à 12:29:17  profilanswer
 

n°1120658
FlorentG
Posté le 15-06-2005 à 12:32:50  profilanswer
 

La première chose à faire quand on développe dans un langage, c'est de regarder la doc, en l'occurence sur les arrays ;) Y'a  une jolie fonction http://fr.php.net/manual/en/function.unset.php
 
:D :D :D

n°1120661
freed102
Arayashiki
Posté le 15-06-2005 à 12:34:39  profilanswer
 

bah je l'ai vu cette fonction ! mais elle supprime une variable.. mais pas element de tableau visiblement ! :(
 
EDIT : j'avais pas bien lu :  
// destroy a single element of an array
unset($bar['quux']);


Message édité par freed102 le 15-06-2005 à 12:35:21
n°1120671
freed102
Arayashiki
Posté le 15-06-2005 à 12:40:08  profilanswer
 

prob :

Citation :

Parse error: parse error, unexpected T_UNSET in /u/clonecop/public_html/php/admin/valid.php on line 28


Code :
  1. foreach($item2suppr as $key)
  2. {
  3.  if(unset($_SESSION['item'][$key]))
  4.  {
  5.  $_SESSION['infos'].="L'élement $key est bien effacé<br />";
  6.  print_r($_SESSION['item']);
  7.  }
  8.  else
  9.  {
  10.  $_SESSION['infos'].="Impossible d'effacer l'élement $key<br />";
  11.  }
  12. }
  13. }

n°1120675
shikra
life is short,drink faster!!!
Posté le 15-06-2005 à 12:43:44  profilanswer
 

salut,
fait voir la ligne 28 stp

n°1120676
freed102
Arayashiki
Posté le 15-06-2005 à 12:44:09  profilanswer
 

c ça la ligne 28 : if(unset($_SESSION['item'][$key]))  

n°1120677
freed102
Arayashiki
Posté le 15-06-2005 à 12:45:01  profilanswer
 

est-ce que c'est du au fait que unset retourne toujours "true" ?? (du coup le if serait inutile :( )

n°1120678
Berceker U​nited
PSN : berceker_united
Posté le 15-06-2005 à 12:45:56  profilanswer
 

Il retourne true si il a réussi a la supprimer ou du moin qu'il n'y a pas d'erreur.

n°1120680
freed102
Arayashiki
Posté le 15-06-2005 à 12:47:55  profilanswer
 

Citation :

unset() détruit les variables var. Notez qu'en PHP 3, unset() retournait toujours TRUE (en fait, la valeur entière 1). En PHP 4 toutefois, unset() n'est plus une véritable fonction : c'est une structure du langage, ce qui fait qu'elle ne retourne pas de valeur. Lire la valeur retournée par unset() (dans une variable, par exemple), retourne une erreur d'analyse.

n°1120681
freed102
Arayashiki
Posté le 15-06-2005 à 12:48:25  profilanswer
 

c naze !! comment on teste si la fonction à bien fonctionné ???

mood
Publicité
Posté le 15-06-2005 à 12:48:25  profilanswer
 

n°1120684
shikra
life is short,drink faster!!!
Posté le 15-06-2005 à 12:49:55  profilanswer
 

Citation :

Si vous voulez détruire une variable globale, depuis une fonction, vous pouvez utiliser le tableau $globals :
unset($GLOBALS[]);

n°1120703
Berceker U​nited
PSN : berceker_united
Posté le 15-06-2005 à 13:01:30  profilanswer
 

freed102 a écrit :

c naze !! comment on teste si la fonction à bien fonctionné ???


t'as pas confiance en elle ou a ton code  :lol:

n°1120712
shikra
life is short,drink faster!!!
Posté le 15-06-2005 à 13:12:35  profilanswer
 

laisse la force agir ou tu passera tu cote obscur jeune[:anakin skywalker]
 
ta essayer avec unset($GLOBALS[]);
[:arnaud069]

n°1120718
Berceker U​nited
PSN : berceker_united
Posté le 15-06-2005 à 13:19:06  profilanswer
 

shikra a écrit :

laisse la force agir ou tu passera tu cote obscur jeune[:anakin skywalker]
 
ta essayer avec unset($GLOBALS[]);
[:arnaud069]


 :non: ts ts  
ça oui  
laisse la force agir ou tu passera du code obscur jeune[:anakin skywalker]

n°1120720
shikra
life is short,drink faster!!!
Posté le 15-06-2005 à 13:19:51  profilanswer
 

lol pas fait gaffe +1 pour toi

n°1120732
freed102
Arayashiki
Posté le 15-06-2005 à 13:32:52  profilanswer
 

Berceker United a écrit :

t'as pas confiance en elle ou a ton code  :lol:


et bien j'aime bien avoir la preuve que tout marche bien ;) (autant pour mon code.. que pour les fonctions qu'on m'offre ! :d )
 
EDIT : cela dit j'ai détourné le probleme
 

Code :
  1. unset($GLOBALS['_SESSION']['item'][$val]);
  2.  if(!isset($_SESSION['item'][$val]))
  3.  {
  4.  $_SESSION['infos'].="L'élement $val est bien effacé<br />";
  5.  }
  6.  else
  7.  {
  8.  $_SESSION['infos'].="Impossible d'effacer l'élement $val<br />";
  9.  }


Message édité par freed102 le 15-06-2005 à 13:33:51
n°1120760
Berceker U​nited
PSN : berceker_united
Posté le 15-06-2005 à 13:57:26  profilanswer
 

Je te comprend, avant j'étais comme toi jeune[:anakin skywalker] je faisais des conditions pour être sur mais j'ai commencé à prendre un peut d'expérience [:papy]. Je me suis dit : (prenons ton cas) Dans quel cas la fonction unset ne va pas supprimer l'élément de mon tableau. Je reflechis longuement[:atlantis] et je ne trouve pas. Je ne vois pas dans quel cas il ne pourra pas supprimer. Ha ! elle n'existe pas? c'est qu'il y a un problème plus haut mais c'est pas là que ça doit être réglé.
Dans ton cas c'est inutile, si tu as bien codé en avant tu en a pas besoin. T'encombre pas de chose inutile et apprend à faire confiance à php.
http://mapage.noos.fr/berceker_united/phpman2.jpg

n°1120812
freed102
Arayashiki
Posté le 15-06-2005 à 14:26:29  profilanswer
 

oui parfois je teste pas non plus.. quand je suis sur de mon coup !
mais bon là c une fonction que je connais pas... donc je teste !

n°1120935
freed102
Arayashiki
Posté le 15-06-2005 à 15:39:29  profilanswer
 

question sur les tableaux multidimensionnels...
je ch à faire un "foreach" avec  
 
$_SESSION['item']['1']['libelle']...
 
si je fais :
 
foreach ($_SESSION['item'] as $key)...
 
il me retourne une erreur car $key est dans ce cas un tableau... or moi je veux une clé ! comment je peux retrouver une clé dans un tableau comme ça ?

n°1120942
FlorentG
Posté le 15-06-2005 à 15:41:15  profilanswer
 

Pour ça, il faut lire la doc de foreach, tu y découvrira ça :

foreach($_SESSION['item'] as $key => $value)


;)


Message édité par FlorentG le 15-06-2005 à 15:41:47
n°1120949
freed102
Arayashiki
Posté le 15-06-2005 à 15:44:48  profilanswer
 

bah je connais foreach.. je l'utilise souvent...  
mais là je m'emmelais les crayons dans les tableaux

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  supprimer un element de tableau en variable de session

 

Sujets relatifs
Essai de message pour le supprimerProbleme de session
Problème de variable pour affichage de pagesProbléme de Tableau HTML [ Colspawn Rospawn]
[PHP] Supprimer mot de 3 caractères maxi dans une chaine - RESOLUPb pour figé un tableau
[JS]transmission de tableauSupprimer les espaces ?
gestion d'une session en phpsupprimer automatiquement des entrées dans un table sql
Plus de sujets relatifs à : supprimer un element de tableau en variable de session


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR