Ma variable n'est pas déclaré... et ?

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 : Ma variable n'est pas déclaré... et ?

par supercanard » 02 févr. 2008, 17:05

Cool merci pour les explications :D
Beaucoup plus clair ainsi :wink:

par Ryle » 02 févr. 2008, 16:56

Nope, ce n'est pas une "erreur" :) Il y a deux choses à distinguer, la déclaration et l'affectation.

La déclaration c'est dire qu'une variable existe, l'affectation, c'est donner une nouvelle valeur a cette variable. Par défaut, lorsque tu déclares une variable la valeur NULL lui est automatiquement affectée.
var $cpt; // déclaration de la variable
$cpt = 0; // déclaration et affectation d'une valeur

Ainsi
if (isset($_GET['test']))
Va uniquement tester s'il existe un index nommé "test" dans le tableau $_GET et c'est tout. On se moque ici de savoir si celui-ci est associé a une valeur ou pas on veut juste s'assurer de sa présence.
index.php?test=ok //=> la variable $_GET['test'] sera définie et aura pour valeur "ok"
index.php?test= //=> la variable $_GET['test'] sera définie et aura pour valeur "" (chaine vide)
index.php?test //=> la variable $_GET['test'] sera définie et aura une valeur NULL
index.php //=> la variable $_GET['test'] ne sera pas définie 

par supercanard » 02 févr. 2008, 15:17

Ok

En fait je me suis mélangé les pinceaux.

A ma décharge : Posté le: 02 Fév 2008, 03:01 :D

Par contre si je veut simplement vérifier l'éxistence d'une variable :
if (isset($_GET['test'])) {
Es ce que je peut faire tout simplement ceci dans mon lien :
index.php?test
Ca marche, mais cette fois ci je n'assigne aucune valeur à cette variable, donc je suppose que c'est une erreur ?

par Ryle » 02 févr. 2008, 15:02

On peut pas vraiment parler de déclaration dans ce cas... Pour tout couple de données variable/valeur envoyée en post, get, cookie, etc. PHP va alimenter les tableaux $_GET, $_POST, etc. en créant les index adapté et les valeurs associées :)

Les variables $_GET, $_POST, etc. existent déjà et sont déjà déclarées par défaut, php se contente donc de les alimenter avec les données qu'il reçoit. Ton test avec isSet() consiste dans ce cas à t'assurer que l'index auquel tu fais appel existe bien dans ce tableau associatif.

En revanche, il faut effectivement déclarer les variables que tu utilises avant de t'en servir. Tu ne peux par exemple comparer $var=='oui' si tu n'as pas spécifié au préalable ce qu'était $var :)

Ta confusion vient sans doute du fait qu'avec la directive "register globals" à "on", php va non seulement créer les index dans les supervariables $_GET, $_POST, etc. mais également générer (et donc déclarer) des variables portant le même nom que les index, et ayant la même valeur...

par supercanard » 02 févr. 2008, 13:02

Ah mais alors, quand je la passe dans la variable, je la déclare bien ?

Je pensais qu'il était obligatoire de la déclarer avent le script (ex : $maVar = '')

Re: Ma variable n'est pas déclaré... et ?

par AB » 02 févr. 2008, 07:17

...
Et pour afficher toc, je passe la variable disabled_affich_page par l'url, avec un contenu qui importe peu :
index.php?disabled_affich_page=oui
Mais dans l'histoire je ne déclara ma variable nul part, c'est donc une erreur ?
T'as pas encore pigé le système. Quand tu fais
index.php?disabled_affich_page=oui 
tu déclares bien une variable 'disabled_affich_page' égale à 'oui'.
C'est pour récupérer cette variable avec PHP qu'il faut faire comme dit Patriboom et tant qu'à faire pour que ce soit complet
if(isset($_GET['disabled_affich_page']) && $_GET['disabled_affich_page'] == 'oui') {//j'ai bien  ma variable $_GET['disabled_affich_page'] qui a été transmise et qui est égale à oui
}

par Patriboom » 02 févr. 2008, 05:44

Tu peux faire un simple test de définition avec isset
if (isset($_GET["maVariable"])) { echo "toc"; }

Ma variable n'est pas déclaré... et ?

par supercanard » 02 févr. 2008, 04:01

Bonjour
J'ai une toute petite question

Voilà c'est tout simple :

J'ai une condition :
if ($_GET['disabled_affich_page']) {
				echo 'toc';
			}

Et pour afficher toc, je passe la variable disabled_affich_page par l'url, avec un contenu qui importe peu :
index.php?disabled_affich_page=oui
Mais dans l'histoire je ne déclara ma variable nul part, c'est donc une erreur ?


Maintenant si je déclare ma variable, exemple :
$disabled_affich_page = 1

Puisque le contenu n'est pas important, est-il possible de faire plus court que ça pour passer la variable ? :
index.php?disabled_affich_page=$disabled_affich_page