Vider une variable

Invité
Invité n'ayant pas de compte PHPfrance

10 avr. 2007, 21:40

Bonjour à tous

Comment puis je vider une variable s'il vous plait.

Eléphant du PHP | 80 Messages

10 avr. 2007, 21:59

Vous pouvez utiliser pour cela la fonction unset($nom_variable).

Invité
Invité n'ayant pas de compte PHPfrance

10 avr. 2007, 22:00

Rooooo

Merci c'est tout a fait cela que je ne trouvais pas :)

Invité
Invité n'ayant pas de compte PHPfrance

10 avr. 2007, 22:02

Ps si un modo pouvait mettre résolut car je ne trouve pas ou c'est :'( pas encore gagné mon histoire moi ^^
Encore merci

ViPHP
ViPHP | 2144 Messages

10 avr. 2007, 22:07

Tu ne peux pas passer un sujet à résolu, si tu n'as pas posté le premier message en tant que membre inscrit. (Une excellement raison de t'inscrire :D)

Eléphant du PHP | 54 Messages

10 avr. 2007, 23:25

mais pourquoi si je vide une variable $_POST['toto'] avec la fonction unset et que apres je recharge la page ca ne marche pas il me redemende si il doit encore un fois traiter le donnees ou non...

merci d'avance..

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

10 avr. 2007, 23:29

Résolu ajouté (ceci dit, tu peux suivre les conseils d'iclo et t'inscrire pour pouvoir faire le prochain toi même ;))

Et une petite précision quand à la fontion unset(), celle-ci ne se contente pas de "vider" une variable, elle la détruit. Le comportement du code peut être différent :
$var = "abc";
isSet($var); // renvoi vrai : la variable est définie
empty($var); // renvoi faux : la chaine n'est pas vide
strlen($var); // renvoi la taille de la chaine : 3

$var = ""; // si on vide la variable en l'écrasant avec une chaine vide
isSet($var); // renvoi vrai : la variable est toujours définie
empty($var); // renvoi vrai : la chaine est vide
strlen($var); // renvoi la taille de la chaine : 0

unset($var); // si on détruit la variable
isSet($var); // renvoi faux : la variable n'est plus définie
empty($var); // renvoi vrai : la variable est null, donc considéré comme chaine vide (ne génère pas d'erreur)
strlen($var); // génère une alerte : undefined variable
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

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

10 avr. 2007, 23:35

mais pourquoi si je vide une variable $_POST['toto'] avec la fonction unset et que apres je recharge la page ca ne marche pas il me redemende si il doit encore un fois traiter le donnees ou non...

merci d'avance..
Quand tu recharges une page à laquelle des données ont été passées en post, ton navigateur te demandera toujours si tu veux soumettre à nouveau les données. Si tu cliques sur ok, alors elles sont renvoyées et le traitement à nouveau exécuté (les précédentes valeurs de $_POST sont remplacées par les nouvelles, même si en l'occurence il s'agit des mêmes). Si tu annules, tu as droit à une page blanche "la page ne peut être affichée sans le renvoi des données, etc." ce qui incite en général les gens à accépter et ce qui t'oblige à gérer ce cas :)

Pour éviter cela, il ne faut pas vider les variables, mais rediriger l'utilisateur après le traitement vers une nouvelle page à l'aide de la fonction header(). En effet, si l'utilisateur actualise, c'est cette nouvelle page qui est rechargé, sans reposte des données, sans re-éxécution du traitement, et sans doublon.. comme pour ce forum :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 80 Messages

10 avr. 2007, 23:38

mais pourquoi si je vide une variable $_POST['toto'] avec la fonction unset et que apres je recharge la page ca ne marche pas il me redemende si il doit encore un fois traiter le donnees ou non...
Histoire de navigateur. Les variables $_POST sont ceux dont les valeurs parviennent du client (via la soumission d'une <form> par exemple), donc lorsque vous réactualisez la page, votre navigateur veut renvoyer l'information qu'il a envoyé auparavant, sans savoir si de votre coté vous l'avez supprimé ou modifié.

Regardez la documentation PHP - "Predefined Variables" pour plus d'informations.

Eléphant du PHP | 54 Messages

10 avr. 2007, 23:38

merci a toi ryle et un header qui renverrait sur la page courante marcherais ou je suis toujurs oblige de le faire en deux pages
en d'autres mots je suis oblige de creer une nouvelle page ou bien je peux mettre un header sur la meme page sauf que au passage le variable en POST elles sautent ???

whislow
Invité n'ayant pas de compte PHPfrance

28 août 2019, 11:19

Pour effacer le contenu d'une variable, la solution la plus simple reste celle-ci:

Code : Tout sélectionner

$var = 'Contenu de ma variable'; $var = ''; // On obtiendra
Pour vider plusieurs variables on peut utiliser cette méthode:

Code : Tout sélectionner

$varA = 'contenu A'; $varB = 'contenu B'; $varC = 'contenu C'; $varA = $varB = $varC = ''; // <<< Ceci permet de vider à la chaîne plusieurs variables en une seule ligne. // On peut mettre à la suite autant de variables que nécessaire.
Enjoy ! :wink:

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

28 août 2019, 11:48

J'espère que la solution apportée il y a 12 ans aura résolu son problème sans qu'il ait eu besoin d'attendre autant ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...