avec mes variables (PHP) probleme (incomprehensible ?) - Programmation
Marsh Posté le 16-05-2001 à 16:19:42
Ton pb, c'est que les variable (comme $typ_gar) n'éxistent pas si l'utilisateur ne les a pas renseignées dans le formulaire (c'est ce qu'il te dit : Undefined variable).
Comme tu ne peux pas utiliser une fonction comme strlen() sur une variable qui n'éxiste pas, PHP en fourni une pour çà, c'est isset()!
Voir : http://php.net/manual/fr/function.isset.php
Marsh Posté le 16-05-2001 à 16:31:16
ah ok, c'est vrai que ca parait logique
le prob, c'est que je me suis base pour certain point sur un script ASP et apparament, ce genre de syntaxe passe sous ASP ...
merci, je vais essayer ca
++
Marsh Posté le 16-05-2001 à 16:38:58
C'est sûr que çà marche, c'est LA méthode à utiliser en PHP.
En asp, Request.Form("NIMPORTEQUOI" ) n'est pas une variable. NIMPORTEQUOI est le nom d'un élément de la collection Form de l'objet Request (Ouf).
C'est pour çà que j'aime pas l'ASP, c'est trop bavard !
Marsh Posté le 16-05-2001 à 17:09:37
re
bah ca marchait pas avec isset() (sisi) : il passait a l'etape suivante (j'comprends pas non plus mais bon )
par contre, avec empty(), ca passe nickel
tant que je te tiens , tu sais comment faire memoriser les valeur deja rentrees pour les remettre dans les champs lorsque le formulaire est charge a nouveau (quand l'utilisateur a oublie de renseigner un ou plusieurs champs) ?
Marsh Posté le 16-05-2001 à 17:14:59
J'te préviens, tu va te trouver con là ;-)
Tes variables, $typ_gar, $typ_reg... y'a quoi dedans à ton avis si elles éxistent!
Donc t'as juste à mettre un value=$ta_variable mais faut qu'elle éxiste !
Marsh Posté le 16-05-2001 à 17:38:01
bah oui, j'sais bien
mais j'ai essaye ca : value="<?php '$dn_jour' ?>" et ca ne marche pas ...
[edit]--Message édité par Batman-Fr--[/edit]
Marsh Posté le 16-05-2001 à 17:41:55
Et çà fait quoi ? Rien, message d'erreur...
Moi, je ferai :
value="<?php if(isset($dn_jour) echo($dn_jour); ?>"
De toute façon, <?php '$dn_jour' ?> je vois pas ce que çà peut donner, quelle que soit la valeur de $dn_jour ! ! !
[edit]--Message édité par Mara's dad--[/edit]
Marsh Posté le 16-05-2001 à 17:49:03
oui, ca fait rien
exact pour le echo, j'ai la mauvaise habitude de l'oublier lorsque j'insere des variables php dans le code html
mea culpa, je teste ta manip mais ca devrait marcher
on ta deja dit que t'etais rapide toaaa ??
et que t'etais gentil toaaa ??
nan, serieusement, merci du coup de main
Marsh Posté le 16-05-2001 à 17:57:57
raaaaaa, j'galere encore
il me met une erreur sur la ligne ou j'ajoute le value :
... value="<?php if(isset($dn_jour) echo "$dn_jour" ?>">
j'ai pense que c'etait l'histoire des " du echo, je les ai donc remplacees par des ' mais j'ai toujours l'erreur d'interpretation du code php ....
Marsh Posté le 16-05-2001 à 23:01:22
value="<?php if(isset($dn_jour) echo "$dn_jour" ?>">
une parenthèse en trop dans ta condition ;-)
mets plutôt value="<?if(isset($dn_jour)) echo "$dn_jour" ?>"
@+
Marsh Posté le 16-05-2001 à 23:10:59
prq une parenthese de trop ?
1 pour le if et l'autre pour le isset non ? j'ai peur de moi la d'un coup
j'essaie ta manip demain matin
merci
[edit]--Message édité par Batman-Fr--[/edit]
Marsh Posté le 16-05-2001 à 23:11:17
Oui, bon là c'est moi qu'ai fait la bourde, mais j'ai pas testé le code, j'ai juste pissé çà comme çà ;-)
Y faut bien qu'il apprenne un peu à corriger des bug, nan ?
T'as cherché un peu au moins avant de demander ?
17:49 -> 17:57 ...
Mouais, pas trop tout de même
Allez, courage, çà va renter tout seul
Marsh Posté le 16-05-2001 à 23:17:22
A bon ,t'es encore là !
SI tu veut :
Code :
|
Bon, t'enlève les {} parce que y'a que le echo qu'est conditionné par le if()
Code :
|
Et tu met tout sur une ligne :
Code :
|
Au lieu de fermer la parenthèse du if() avant l'echo(), moi je l'avais oublié, et toi tu l'avais mis après l'echo() !
Bon, cette fois, si c'est pas KAPICHE, t'es collé SAMEDI !
Marsh Posté le 16-05-2001 à 23:35:14
Mara's dad a écrit a écrit : Oui, bon là c'est moi qu'ai fait la bourde, mais j'ai pas testé le code, j'ai juste pissé çà comme çà ;-) Y faut bien qu'il apprenne un peu à corriger des bug, nan ? T'as cherché un peu au moins avant de demander ? 17:49 -> 17:57 ... Mouais, pas trop tout de même ![]() Allez, courage, çà va renter tout seul ![]() |
bah oui j'ai cherche, mais dans la mauvaise direction
ok pour la parenthese !
heu .... samedi, j'suis pas libre m'ssieur, j'dois em'ner ma p'tite soeur a la piscine alors j'peux pas v'nir copier mille fois la syntaxe du if en php
vraaaaiiiiiment desole
merci encore !
++
Marsh Posté le 17-05-2001 à 07:09:18
pour tester si une variable est vide, je fais juste
if ($var == "" )
ça marche nickel et c'est tout simple
Marsh Posté le 17-05-2001 à 09:00:53
youdontcare a écrit a écrit : pour tester si une variable est vide, je fais juste if ($var == "" ) ça marche nickel et c'est tout simple ![]() |
A condition que $var EXISTE !
Faut vous le dire comment ?
Marsh Posté le 17-05-2001 à 09:33:44
Mara's Dad : merci, ca marche nickel chrome
Udontcare : c'est ce que je faisais aussi mais ca passait pas alors j'ai essaye d'autres truc mais Mara's Dad a raison
voila, encore merci
++
Marsh Posté le 17-05-2001 à 12:55:38
Mara's dad a écrit a écrit : A condition que $var EXISTE ! Faut vous le dire comment ? |
qu'est ce que tu racontes ? une variable utilisée en php 'existe' toujours. elle prend une valeur si tu la passe en paramètre dans le script, est nulle sinon.
if ($var == "" ), je l'ai utilisé sur mon apache local+php4, sur un serveur php3, un autre php4, et dans le même contexte : tester si une variable venant d'un formulaire est vide ou non. viens pas me dire que ça marche pas, j'ai les preuves
batman, tu utilises quelle version de php ?
Marsh Posté le 17-05-2001 à 13:17:02
J'ai fait un test avec ce code :
Code :
|
Avec PHP3 et PHP4.
C'est vrai que çà fonctionne, j'ai "OK" si $toto n'éxiste pas, mais j'ai aussi çà :
En PHP3:
Warning: Uninitialized variable or array index or property (toto) in your script...
En PHP4:
Warning: Undefined variable: toto in ...
Si çà le fait pas chez toi, c'est que les warnings ont été désactivé. Essaye avec: error_reporting(E_ALL);
En fait je me sert de isset() pour savoir si la variable éxiste (pour un submit par exemple), ce qui est différent que de savoir si elle contient quelque chose.
Celà dit, tout dépend de ce qu'on veut faire !
Le code de Batman-fr avec les strlen() peut très bien fonctionner, mais faut désactiver les warnings, ce qui n'est pas très propre... enfin je trouve.
Marsh Posté le 17-05-2001 à 13:31:30
Mara's dad a écrit a écrit : J'ai fait un test avec ce code :
|
on est d'accord ! effectivement, les warnings étaient disablés chez moi. comme une variable nulle est convertie en une string vide, ça marche.
j'ai donc codé en php sans les warnings ... ça ne m'a pas posé de problèmes. au contraire même, codant surtout en c++, j'apprécie énormément toutes ces conversions automatiques.
Marsh Posté le 17-05-2001 à 13:38:23
C'est çà qu'est bien avec PHP, c'est reposant.
Haaaaaaaaaa.........
Marsh Posté le 17-05-2001 à 13:43:42
Mara's dad a écrit a écrit : C'est çà qu'est bien avec PHP, c'est reposant. Haaaaaaaaaa......... |
c'est clair ... surtout avec les warnings disablés
Marsh Posté le 17-05-2001 à 13:58:23
tant qu'on y est :
isset() c'est cool et puis y a la petite soeur qui va avec :
unset() pour vider (désaffecter la variable)
Marsh Posté le 17-05-2001 à 14:07:41
lamatrice a écrit a écrit : tant qu'on y est : isset() c'est cool et puis y a la petite soeur qui va avec : unset() pour vider (désaffecter la variable) |
tant qu'on parle de ça, y'a un script d'exemple très sympa sur php.net :
Code :
|
ça affichera:
Code :
|
[edit]--Message édité par youdontcare--[/edit]
Marsh Posté le 17-05-2001 à 14:18:46
Mara's dad a écrit a écrit : J'ai fait un test avec ce code :
|
c'est exactement l'erreur que j'obtenais !
et au debut, j'avais exactement cette syntaxe mais vu que ca ne passait pas, j'ai essaye avec d'autre fonctions (d'ou le sterlen )
voila
au moins, mon poste n'etait pas si debile que ca alors
merci encore
Marsh Posté le 16-05-2001 à 16:13:20
bon, j'espere que je ne vais pas poser une question a la con, sinon, soyez sympa
voila, je suis sur un script PHP avec formulaire et je teste mes variables pour savoir si elles sont vides (afin de verifier que l'utilisateur rentre une valeur pour chacune). Si c'est le cas, le script affiche le formulaire. Sinon, il traite les donnees.
Voila le debut du script :
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#E1F5FF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="">
<table width="57%" border="0" cellspacing="2">
<tr>
<td><img src="../images/sections/adhesion.gif" width="228" height="37"></td>
</tr>
</table>
<table width="60%" border="0" cellspacing="2">
<tr>
<td width="8%"> </td>
<td width="92%" valign="top" align="left">
<?php
if ( (strlen($typ_gar)==0) || (strlen($typ_reg)==0) || (strlen($dn_jour)==0) || (strlen($dn_mois)==0) || (strlen($dn_annee)==0) || (strlen($dn_jour_c)==0) || (strlen($dn_mois_c)==0) || (strlen($dn_annee_c)==0) || (strlen($dn_jour_e1)==0) || (strlen($dn_mois_e1)==0) || (strlen($dn_annee_e1)==0) || (strlen($dn_jour_e2)==0) || (strlen($dn_mois_e2)==0) || (strlen($dn_annee_e2)==0) || (strlen($dn_jour_e3)==0) || (strlen($dn_mois_e3)==0) || (strlen($dn_annee_e3)==0) || (strlen($dn_jour_e4)==0) || (strlen($dn_mois_e4)==0) || (strlen($dn_annee_e4)==0) || (strlen($dn_jour_e5)==0) || (strlen($dn_mois_e5)==0) || (strlen($dn_annee_e5)==0) || (strlen($dn_jour_e6)==0) || (strlen($dn_mois_e6)==0) || (strlen($dn_annee_e6)==0) )
{
?>
<form method="post" action="adhesion_dx.php" name="form_adh">
<?php
if ($etat != "I" )
echo"Vous n'avez pas rempli tous les champs";
?>
<p><font face="Times New Roman, Times, serif" size="4"><b><font color="#000066">Garantie
souhaitée</font></b></font><font face="Times New Roman, Times, serif" size="3">
<select name="typ_gar" value="<?php $typ_reg ?>">
<option value="gnull" selected>Garantie ...</option>
<option value="geco">Éco</option>
<option value="g100">100</option>
<option value="g130">130</option>
<option value="g160">160</option>
<option value="g250">250</option>
</select>
</font></p>
...
et voila l'erreur que mon navigateur m'affiche au chargement de la page :
Warning: Undefined variable: typ_gar in D:\serveurs-web\mgel\_mvs2\adhesion\adhesion_dx.php on line 20 (ligne qui correspond au "if" )
j'espere que vous trouverez mon erreur, perso, j'suis perdu
merci d'avance
++
[edit]--Message édité par Batman-Fr--[/edit]
---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391