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 :

isset() me renvoie False


Sujet :

Langage PHP

  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut isset() me renvoie False
    Bonjour,

    dans un formulaire HTML, j'envoie en POST mes champs à un fichier de traitement en php.

    Avant de récupérer mes valeurs, je fais le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(isset($_POST))
    {
        foreach($_POST as $key=>$val)
        {
    	    echo $key.'=>'.$val.'<p>';
        }
    }
    else
    {
        echo 'le formulaire n\'a pas été envoyé';
    }
    Ce test me renvoie ce que je veux, et notamment la valeur $_POST['ident'] qui m'intéresse..

    Mais lorsque je veux récupérer cette valeur, isset($_POST['ident']) me renvoie False...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['ident']))      $identifiant=$_POST['ident'];
    else      $identifiant="";
    Le if n'est pas traité, c'est le else qui l'est.

    Cela peut-il venir du fait que dans mon formulaire, mon champ 'ident' est un input type'hidden' ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Non les input type hidden sont envoyés de la meme manière que les autres champs.

    Cela peut venir d'une erreur de syntaxe dans le nom ou du fait que ton champ se trouve hors du formulaire.

    Peux tu nous envoyer le code de ce dernier ?

  3. #3
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    On peut voir le code du formulaire ?

    Edit : grilled

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Citation Envoyé par ziggotos
    Bonjour,

    dans un formulaire HTML, j'envoie en POST mes champs à un fichier de traitement en php.

    Avant de récupérer mes valeurs, je fais le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(isset($_POST))
    {
        foreach($_POST as $key=>$val)
        {
    	    echo $key.'=>'.$val.'<p>';
        }
    }
    else
    {
        echo 'le formulaire n\'a pas été envoyé';
    }
    Ce test me renvoie ce que je veux, et notamment la valeur $_POST['ident'] qui m'intéresse..
    je te conseil, pour faire plus simple, un "var_dump()" pour les testes,

    à vérfifié, mais $_POST renvoie toujours "true", c'est un variable global.

    Citation Envoyé par ziggotos
    Mais lorsque je veux récupérer cette valeur, isset($_POST['ident']) me renvoie False...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['ident']))      $identifiant=$_POST['ident'];
    else      $identifiant="";
    je te conseil de faire comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $identifiant = ((!empty($_POST['ident'])) ? $_POST['ident'] : '');
    Citation Envoyé par ziggotos
    Le if n'est pas traité, c'est le else qui l'est.
    si, dans le champs de formulaire, il existe bien un champ nommé "ident", alors après l'envoi, isset($_POST['ident']) renverra obligatoirement "true".

    Citation Envoyé par ziggotos
    Cela peut-il venir du fait que dans mon formulaire, mon champ 'ident' est un input type'hidden' ?
    voici une forme pour l'exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="ident" value="<? echo $identifiant ?>" />
    je pense que ton problème viens tout simplement du fait que tu es oublié la propriété "value", (alors "isset" renvoyé bien true, mais mettait dans la variable "$identifiant" une valeur nulle)

    Personnellement, pour ce qui est d'identifiants, je te conseil les SESSIONS PHP, ou alors les COOKIES.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Voilà le début du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<?php echo "<form method='POST' name='dtvalid_form' action='DT_rec2.php'>"; ?>
    		<div id="identifix" style="font-size:12pt;text-align:center;font-weight:bold;color:blue">
    			<?php	echo "<input name='ident' id='ident' type='hidden' size='101' maxlength='101' value='".$identifiant."'></input>";
    					echo $identifiant;
    			?>
    		</div>
    En fait j'écrivais la balise form en php pour un besoin obsolète, depuis que je l'écris direct en html, ça marche normalement.. je trouve ça bizarre quand même.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Un petit détail une balise input se ferme directement à la fin <input ..... />
    Sinon le code me paraissait bon étrange en effet.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Citation Envoyé par juJuv51
    à vérfifié, mais $_POST renvoie toujours "true", c'est un variable global.
    Oui mais $_POST['ident'] renvoyait bien qquechose, alors que isset($_POST['ident']) non...

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Citation Envoyé par ziggotos
    Oui mais $_POST['ident'] renvoyait bien qquechose, alors que isset($_POST['ident']) non...
    il renverra quelque chose si il est appelé par le formulaire,
    pour qu'il soit "true", il faut envoyé à la page un champs "POSTDATA" qui est crée automatiquement grâce aux champs de formulaires.

    Ta variable "$identifiant" contient bien une valeur non nulle lorsqu'elle est généré dans le formulaire (dans le champs ident)?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Citation Envoyé par juJuv51
    Ta variable "$identifiant" contient bien une valeur non nulle lorsqu'elle est généré dans le formulaire (dans le champs ident)?
    Oui, je l'écris même sur ma page en-dessous le <input>.

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Citation Envoyé par ziggotos
    Oui, je l'écris même sur ma page en-dessous le <input>.
    Alors, si elle te renvoyé bien la valeur de "$identifiant", il est possible que se soit ton champs de formulaire qui soit mal formaté et donc n'envoie pas correctement les valeurs à la page.

    Pourrais tu nous donner la version du formulaire qui fonctionne?
    j'avais remarqué que dans l'autre, la balise <form> n'été pas fermé (je ne pense pas que ce soit cela qui pose problème).

    Ta valeur contenu dans la variable "$identifiant" est une valeur qui contient des caractère spéciaux? comme " ou '? il est possible alors que tu es besoin de "l'escaper" avec quelque chose comme: addslashes($identifiant) ou encore htmlentities($identifiant, ENT_QUOTES)

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Voilà la totalité de mon form :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <form method='POST' name='dtvalid_form' action='DT_rec2.php'>
    <div id="identifix" style="font-size:12pt;text-align:center;font-weight:bold;color:blue">
    	<?php	echo "<input name='ident' id='ident' type='hidden' size='101' maxlength='101' value='".$identifiant."'></input>";
    			echo $identifiant;
    	?>
    </div>
    <table width="90%" border="2" bordercolor="#FFC300" rules="none" align="center" cellspacing="0" cellpadding="8">
    	<tr style="text-align:center;font-weight:bold;font-size:18pt"><td colspan="4">Atelier</td></tr>
    	<tr><td width="25%"><b>Date de prise en charge : </b></td>
    		<td width="25%"><input name="date3" id="date3" value="jj-mm-aaaa" type="text" size="10" maxlength="10"></td>
    		<td width="50%" colspan="2"></td>
    	</tr>
    	<tr>
    		<td width="25%"><b>Exécutant : </b></td>
    		<td width="25%">
    			<select name="exec" id="exec" type="text" size="1">
    				<option value="-1" selected>-- Selectionnez --</option>
    				<?php
    					$query = 'SELECT DISTINCT `pseudo` FROM mecanos';
    					$result = mysql_query($query, $cfg['linkid']) or die($query . " - " . mysql_error());
    					while($tab = mysql_fetch_array($result))
    					{
    						echo "<option value='";
    						echo $tab['pseudo'];
    						echo "'>";
    						echo $tab['pseudo'];
    						echo "</option>";
    					}
    				?>
    			</select>
    		</td>
    		<td width="20%"><b>Kilométrage : </b></td>
    		<td width="30%"><input type="text" name="km" id="km" size="7" maxlength="7"></input><b>km</b></td>
    	</tr>
    	<tr><td colspan="4"><b>Pièces remplacées : </b></td></tr>
    	<tr><td colspan="4"><textarea name="piec" cols='90' rows='6' style="width:'100%'"></textarea></td></tr>
    	<tr>
    		<td colspan="2" width="50%"><b>Durée estimée : </b><input type="text" name="durestim" size="20" maxlength="20"></input></td>
    		<td colspan="2" width="50%"><b>Durée réelle : </b><input type="text" name="durreel" size="20" maxlength="20"></td>
    	</tr>
    	<tr><td colspan="4"><b>Observations et problèmes rencontrés lors de la repose et/ou la repose : </b></td></tr>
    	<tr><td colspan="4"><textarea name="pbobs" cols='90' rows='6' style="width:'100%'"></textarea></td></tr>
    	<tr>
    		<td colspan="2" width="50%" align="center"><input type="submit" value=" Valider "></input></td>
    		<td colspan="2" width="50%" align="center"><input type="reset" value=" Effacer "></input></td>
    	</tr>
    </table>
    </form>
    sinon $identifiant est une chaîne de caractère, sans caractères spéciaux si ce n'est '-' mais à priori le tiret ne pose pas de problème..

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Citation Envoyé par ziggotos
    sinon $identifiant est une chaîne de caractère, sans caractères spéciaux si ce n'est '-' mais à priori le tiret ne pose pas de problème..
    non, effectivement, les - ne pose aucun problème.

    le formulaire est la version qui fonctionne?

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    ouais ça marche. je crois vraiment que la balise <form> dans du code php posait problème.. c'est la seule chose que j'ai changée entre temps.
    merci en tout cas!

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    de rien, je ne pensé pas que la non fermeture des champs form aurai pu posé problème...

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

Discussions similaires

  1. [MySQL] mysql_query() renvoie false
    Par Invité dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/10/2008, 19h48
  2. Réponses: 3
    Dernier message: 02/09/2008, 10h22
  3. Réponses: 2
    Dernier message: 21/02/2008, 15h13
  4. Réponses: 1
    Dernier message: 26/07/2007, 16h30
  5. Automation Word : CreateDispatch renvoie FALSE
    Par Cram_N7 dans le forum C++
    Réponses: 1
    Dernier message: 12/03/2007, 17h27

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