Page 1 sur 2
suppression valeur d'un array marche pas
Posté : 03 mai 2008, 19:20
par hervé_dunord
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

.
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

Posté : 03 mai 2008, 19:42
par SpintroniK
Bonjour,
ça marche pas ça ? :
$var = $_GET['id'] ;
unset($_SESSION['id'][$var]) ;
Re: suppression valeur d'un array marche pas
Posté : 03 mai 2008, 19:50
par orgerix
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.
Posté : 03 mai 2008, 22:48
par Aureusms
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;
Posté : 04 mai 2008, 11:15
par Invité
merci pour toute les aides, aprés test :
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à !!!

Posté : 04 mai 2008, 11:26
par orgerix
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.
Posté : 04 mai 2008, 11:43
par Invité
le print_r donne: Array ( [0] => 30 [1] => 73 [2] => 55 [3] => 38 [4] => 40 )

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é ?
Posté : 04 mai 2008, 15:25
par orgerix
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.
Posté : 04 mai 2008, 20:13
par Invité
après test ma variable est toujours pas éliminée

Posté : 05 mai 2008, 07:40
par Invité
je viens de trouver mon erreur
dans la page ou je voulais supprimer ma variable y avait pas session_start();
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.
Posté : 05 mai 2008, 09:10
par Aureusms
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 ?
Posté : 05 mai 2008, 12:47
par Invité
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 ?
Posté : 05 mai 2008, 14:46
par Ryle
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 ?

Posté : 05 mai 2008, 19:49
par Invité
m'inquiète car j'ai mis ça sur plusieurs page ?!?!
qu'est ce que je devrais mettre ?

(une petite piste ?)
Posté : 05 mai 2008, 19:56
par thehawk
en reprenant ton code :
$var = isset($_GET['id_sup']) ? $_GET['id_sup'] : " ";
$var = intval($var);
@+ Hawk