suppression valeur d'un array marche pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : suppression valeur d'un array marche pas

par AB » 06 mai 2008, 01:31

D'ailleurs tu pourrais le faire en une seule ligne.
$var = isset($_GET['id_sup'])? intval($_GET['id_sup']) : " ";
Au moins tu es sûr que $var sera un entier numérique ou égal à " " si $_GET['id_sup'] n'est pas définie.

Cela n'empêche pas pour autant les visiteurs de t'envoyer un entier quelconque dans l'url.

Mais bon, tant que le visiteur qui envoie n'importe quoi dans l'url risque simplement un mauvais fonctionnement de ton script, après tout c'est son pb.

Par contre faudrait faire des vérifications supplémentaires si cela pouvait avoir des répercussions sur le fonctionnement général de ton site.

par Invité » 05 mai 2008, 21:22

:D merci je comprend mieux et c'est vrai que c'est plus logique aussi !!!

par thehawk » 05 mai 2008, 19:56

en reprenant ton code :

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

par Invité » 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 ?)

par Ryle » 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 ? ;)

par Invité » 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 ?

par Aureusms » 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 ?

par Invité » 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.

par Invité » 04 mai 2008, 20:13

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

par orgerix » 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.

par Invité » 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é ?

par orgerix » 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.

par Invité » 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:

par Aureusms » 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;

Re: suppression valeur d'un array marche pas

par orgerix » 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.