suppression valeur d'un array marche pas

hervé_dunord
Invité n'ayant pas de compte PHPfrance

03 mai 2008, 19:20

Bonsoir,
je sèche depuis ce matin et je crack sur un bout de code qui je pense est pas trés compliquer mais qui marche pas :( merci pour votre aide :idea: .
j'ai un array du type $_SESSION['id'] et je cherche a enlever un élément de ce tableau
voici mon dernier essaye:

Code : Tout sélectionner

$array = $_SESSION['id']; $var = $_GET['id'] ; unset($array[$var]) ;
si quelqu'un pouvais me venir en aide :D

Eléphant du PHP | 209 Messages

03 mai 2008, 19:42

Bonjour,

ça marche pas ça ? :
$var = $_GET['id'] ;
unset($_SESSION['id'][$var]) ; 

Mammouth du PHP | 693 Messages

03 mai 2008, 19:50

Qu'est ce qui marche pas ?

Ca donnne quoi ? La variable reste dans le tableau $_SESSION ? la variable reste dans le tableau $array ?

Si c'est la première solution, c'est que lorsque tu écrit cette ligne : $array = $_SESSION['id']; tu crée une nouvelle variable qui inititalement à les mêmes valeurs que $_SESSION['id']. Cependant, elles sont completement distinctes et l'une peut être modifié sans que l'autre le soit.

Tu peux soit créer une référence de $_SESSION['id'] comme ceci :

$array = &$_SESSION['id'];

Comme ca, toutes les modifications sur $array se répercuteront sur $_SESSION['id'].

Cela dit, la méthode proposé par hervé_dunord est beaucoup plus simple.

ViPHP
ViPHP | 1996 Messages

03 mai 2008, 22:48

Un méthode pas belle mais qui je pense marchera
$tab_temp = array();

$k=0;
foreach ($array as $valeur)
{
  if ($valeur != $_GET['id']) 
     {
     $tab_temp[$k] = $valeur;
     $k++;
     }  
}

$array = $tab_temp;
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2008, 11:15

merci pour toute les aides, aprés test :

Code : Tout sélectionner

<?php $var = $_GET['id'] ; unset($_SESSION['id'][$var]) ; ?>
Résultat pas d'erreur mais la variable existe toujours.

ensuite j'ai essayé:

Code : Tout sélectionner

<?php $array = $_SESSION['id']; $valeur = $_GET['id'] ; $tab_temp = array(); $k=0; foreach ($array as $valeur) { if ($valeur != $_GET['id']) { $tab_temp[$k] = $valeur; $k++; } } $_SESSION['id'] = $tab_temp; ?>
je tombe sur une erreur : Warning: Invalid argument supplied for foreach() in...
et le dernier test:

Code : Tout sélectionner

<?php $array = &$_SESSION['id']; $var = $_GET['id'] ; unset($array[$var]) ; ?>
Pas d'erreur mais variable toujours là !!! :shock:

Mammouth du PHP | 693 Messages

04 mai 2008, 11:26

Juste comme ca.

Fait un print_r($_SESSION['id']) pour voir ce qu'il y a dedans

Et au passage, j'ai l'impression que tu essaye de supprimer l'élément par sa valeur et non par son index. Dans ce cas, il est logique que ca ne marche pas.

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2008, 11:43

le print_r donne: Array ( [0] => 30 [1] => 73 [2] => 55 [3] => 38 [4] => 40 )

:oops: oui je pense ne pas avoir bien compris, j'essaye de supprimer sa valeur !?! mon erreur viendrais de là ? et comment on peut retrouver la clé ?

Mammouth du PHP | 693 Messages

04 mai 2008, 15:25

Tu peux essayer quelque chose du style
foreach ($_SESSION['id'] as $key=>$value) {

  if ($value==$_GET['id']) {
    
    unset($_SESSION['id'][$key]);
    break;
 
  }

}
J'ai rajouté un break en pensant que tes id étaient uniques. Dans ce cas, une fois que tu as trouvé un élement qui vallait ce que tu cherchai, il ne sert à rien de continuer.

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2008, 20:13

après test ma variable est toujours pas éliminée :cry: :cry:

Invité
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 07:40

je viens de trouver mon erreur :D
dans la page ou je voulais supprimer ma variable y avait pas session_start(); :oops: :oops:
maintenant:

Code : Tout sélectionner

foreach ($_SESSION['id'] as $key=>$value) { if ($value==$_GET['id']) { unset($_SESSION['id'][$key]); break; } }
marche bien, merci encore pour vos aides.

ViPHP
ViPHP | 1996 Messages

05 mai 2008, 09:10

Bien... Comem tu passes pas des variables $_GET, penses à vérifier qu'il s'agit bien des varibles que tu désires...
Je m'explique si dan ton url tu as http://.../index.php?id=8, ton code effacera la ligne contenant le 8. Rien n'empêche l'utilisateur de marquait id=9, id=12, id=maman,... Comprends tu ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Invité
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 12:47

oui, en début j'ai mis:

Code : Tout sélectionner

$var = isset($_GET['id_sup']) ? $_GET['id_sup'] : " "; $var = intval($_GET['id_sup']);
est ce que c'est bon ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 mai 2008, 14:46

Non c'est pas bon... à quoi te sert la première ligne si dès la seconde tu fais appel a $_GET['id_sup'] sans te soucier de savoir s'il est défini ou pas ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

05 mai 2008, 19:49

:(
m'inquiète car j'ai mis ça sur plusieurs page ?!?!
qu'est ce que je devrais mettre ? :?: (une petite piste ?)

Mammouth du PHP | 991 Messages

05 mai 2008, 19:56

en reprenant ton code :

$var = isset($_GET['id_sup']) ? $_GET['id_sup'] : " ";
$var = intval($var); 
@+ Hawk
DevOps, Symfony4, Hoa