Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/03/2007, 11h46   #1
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
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 :
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 :
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' ?
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h52   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
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 ?
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h53   #3
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
On peut voir le code du formulaire ?

Edit : grilled
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h59   #4
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
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 :
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 :
1
2
if(isset($_POST['ident']))      $identifiant=$_POST['ident'];
else      $identifiant="";
je te conseil de faire comme cela:
Code :
$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 :
<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.
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h00   #5
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Voilà le début du formulaire:
Code :
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.
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h03   #6
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Un petit détail une balise input se ferme directement à la fin <input ..... />
Sinon le code me paraissait bon étrange en effet.
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h04   #7
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
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...
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h07   #8
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
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)?
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h13   #9
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
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>.
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h18   #10
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
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)
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h22   #11
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
Voilà la totalité de mon form :
Code :
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..
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h27   #12
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
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?
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h35   #13
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
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!
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 12h38   #14
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
de rien, je ne pensé pas que la non fermeture des champs form aurai pu posé problème...
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h57.


 
 
 
 
Partenaires

Hébergement Web