IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec unset()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut Problème avec unset()
    Bonjour,

    J'ai un petit problème avec la fonction unset(). Je m'explique :
    J'ai une liste déroulante et lorsqu'on choisit un des éléments, le formulaire est envoyé et voici la partie qui traite mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (isset($_POST['colonne']))
    {
    	$tab[]=$_POST['colonne'];
    	if (isset($_GET['col0']) && $_GET['col0'] == $_POST['colonne'])
    		unset ($_GET['col' . $i]);
    }
    La variable est bien détruite, sauf que dans mon url j'ai toujours "col0=valeur", et je suis obligé d'actualiser la page ou d'aller sur une autre pour que ça n'apparaisse plus dans l'url.
    J'aurais donc besoin que ça ne s'affiche plus, pour pouvoir utilisé mon URL par la suite

    Merci d'avance pour votre aide

    Cordialement,
    pikmin

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 351
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par pikmin Voir le message
    La variable est bien détruite, sauf que dans mon url j'ai toujours "col0=valeur", et je suis obligé d'actualiser la page ou d'aller sur une autre pour que ça n'apparaisse plus dans l'url.
    C'est normal puisque unset( ) n'agit que sur $_GET et les modifs effectuées sur $_GET ne sont pas répercutées sur l'URL qui est statique.

    Quelle est la finalité de l'opération ? Tout ceci ne m'a pas l'air très catholique

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    désolé pour la réponse tardive, connexion horrible, et je viens juste de rentrer chez moi

    à la base j'ai un tableau (en html) et je souhaite pouvoir supprimer l'affichage des colonnes en cliquant sur un lien. Quand je clique sur ce lien, il rappelle la même page avec une variable du type colN=nom_de_la_colonne, où N est un chiffre. Je fais ensuite ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //on crée le select de notre requête
    $select = 'redacteur,dateDemande,demandeur';
    //on "explose" notre string en un tableau contenant un mot par case
    $tab = explode (",", $select);
    for ($i=0 ; $i<13 ; $i++)
    {
    	//si la colonne coln (où n est un nombre) a été selectionnée, on l'enlève du tableau
    	if (isset($_GET['col' . $i]))
    	{
    		$position = array_search($_GET['col' . $i], $tab);
    		unset ($tab[$position]);
    	}
    }
    Ca marche, très bien, sauf que je veux aussi pouvoir permettre le ré-affichage d'une colonne précédemment enlevée. J'ai donc fait une liste déroulante avec le nom des colonnes "cachées". Lorsqu'on en sélectionne une, ça valide le formulaire (avec un onchange sur le select) et j'envoie une variable en POST du type : colonne=nom_de_la_colonne
    Et je fais ceci après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    if (isset($_POST['colonne']))
    {
    	//on la rajoute au tableau
    	$tab[]=$_POST['colonne'];
    	for ($i=0 ; $i<13 ; $i++)
    	{
    		//si la colonne coln (où n est un nombre) existe et qu'elle a la même valeur que la colonne rajoutée, on supprime la variable GET
    		if (isset($_GET['col' . $i]) && $_GET['col' . $i] == $_POST['colonne'])
    		{
    			unset ($_GET['col' . $i]);
     
    		}
    	}
    }
    Mon problème : admettons que j'ai supprimer deux colonnes, dans mon url j'ai "col0=redacteur&col1=dateDemande". Si je souhaite ré-afficher la colonne rédacteur, pas de soucis.
    En revanche lorsque que je veux ensuite ré-afficher la suivante, la colonne rédacteur est à nouveau "effacée" étant donnée que "col0=redacteur" est encore dans l'URL et passe par le "if (isset($_GET['col' . $i]))"

    J'espère avoir été assez clair, si vous avez d'autres questions, j'essaierai d'être plus précis.
    Par contre je ne suis pas sûr de pouvoir répondre avant demain matin.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    bon finalement, j'ai utilisé une autre façon et dans le genre, pas catholique, je pense que je suis assez fort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    if (isset($_POST['colonne']))
    {
    	//on la rajoute au tableau
    	$tab[]=$_POST['colonne'];
    	for ($i=0 ; $i<13 ; $i++)
    	{
    		if (isset($_GET['col' . $i]) && $_GET['col' . $i] == $_POST['colonne'])
    		{
    			//on crée toto qui vaut colN=nomColonne
    			$toto = 'col' . $i . '=' . $_GET['col' . $i];
    		}
    	}
    	//on explose notre query_string
    	$tabUrl = explode ("&", $_SERVER['QUERY_STRING']);
    	$cle = array_search($toto, $tabUrl);
    	//on supprimer la colonne qu'on vient d'afficher
    	unset ($tabUrl[$cle]);
    	//on recrée notre query_string
    	$url = implode ("&", $tabUrl);
    }
     
    //on transforme notre nouveau tableau (avec les valeurs en moins s'il y en a)  en string, qui constituera notre select dans notre requête
    $select = implode(",", $tab);
    //on fait un header(location) vers l'on souhaite, l'index pour moi, et on rajoute la query string telle qu'elle était avant, avec le colN=nomColonne en moins
    if (isset($_POST['colonne'])) header("location:index.php?" . $url);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'espace avec unset et array_search
    Par Gunner4902 dans le forum Langage
    Réponses: 2
    Dernier message: 22/07/2008, 09h30
  2. [Tableaux] Problème avec unset
    Par bernard-jacot dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2006, 12h59
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo