supprimer un element de tableau en variable de session

supprimer un element de tableau en variable de session - PHP - Programmation

Marsh Posté le 15-06-2005 à 12:29:17    

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 ?

Reply

Marsh Posté le 15-06-2005 à 12:29:17   

Reply

Marsh Posté le 15-06-2005 à 12:32:50    

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

Reply

Marsh Posté le 15-06-2005 à 12:34:39    

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
Reply

Marsh Posté le 15-06-2005 à 12:40:08    

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. }

Reply

Marsh Posté le 15-06-2005 à 12:43:44    

salut,
fait voir la ligne 28 stp

Reply

Marsh Posté le 15-06-2005 à 12:44:09    

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

Reply

Marsh Posté le 15-06-2005 à 12:45:01    

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

Reply

Marsh Posté le 15-06-2005 à 12:45:56    

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

Reply

Marsh Posté le 15-06-2005 à 12:47:55    

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.

Reply

Marsh Posté le 15-06-2005 à 12:48:25    

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

Reply

Marsh Posté le 15-06-2005 à 12:48:25   

Reply

Marsh Posté le 15-06-2005 à 12:49:55    

Citation :

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

Reply

Marsh Posté le 15-06-2005 à 13:01:30    

freed102 a écrit :

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


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

Reply

Marsh Posté le 15-06-2005 à 13:12:35    

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

Reply

Marsh Posté le 15-06-2005 à 13:19:06    

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]

Reply

Marsh Posté le 15-06-2005 à 13:19:51    

lol pas fait gaffe +1 pour toi

Reply

Marsh Posté le 15-06-2005 à 13:32:52    

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
Reply

Marsh Posté le 15-06-2005 à 13:57:26    

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

Reply

Marsh Posté le 15-06-2005 à 14:26:29    

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 !

Reply

Marsh Posté le 15-06-2005 à 15:39:29    

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 ?

Reply

Marsh Posté le 15-06-2005 à 15:41:15    

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
Reply

Marsh Posté le 15-06-2005 à 15:44:48    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed