Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1740 connectés 

  FORUM HardWare.fr
  Programmation

  (PHP) probleme (incomprehensible ?) avec mes variables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(PHP) probleme (incomprehensible ?) avec mes variables

n°32273
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 16:13:20  profilanswer
 

:hello:
 
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 :sweat:
 
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
mood
Publicité
Posté le 16-05-2001 à 16:13:20  profilanswer
 

n°32278
Mara's dad
Yes I can !
Posté le 16-05-2001 à 16:19:42  profilanswer
 

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


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32284
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 16:31:16  profilanswer
 

:hello:
 
 
ah ok, c'est vrai que ca parait logique :D
 
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 :)
 
++


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32286
Mara's dad
Yes I can !
Posté le 16-05-2001 à 16:38:58  profilanswer
 

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 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32307
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 17:09:37  profilanswer
 

re :)
 
bah ca marchait pas avec isset() (sisi) : il passait a l'etape suivante (j'comprends pas non plus mais bon :lol: )
 
par contre, avec empty(), ca passe nickel :)
 
tant que je te tiens :D, 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)  ?


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32313
Mara's dad
Yes I can !
Posté le 16-05-2001 à 17:14:59  profilanswer
 

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 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32320
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 17:38:01  profilanswer
 

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]


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32321
Mara's dad
Yes I can !
Posté le 16-05-2001 à 17:41:55  profilanswer
 

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]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32326
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 17:49:03  profilanswer
 

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 ?? :D
et que t'etais gentil toaaa ?? :lol:
 
nan, serieusement, merci du coup de main :)


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32331
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 17:57:57  profilanswer
 

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 ....


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
mood
Publicité
Posté le 16-05-2001 à 17:57:57  profilanswer
 

n°32386
Sh@rdar
Ex-PhPéteur
Posté le 16-05-2001 à 23:01:22  profilanswer
 

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" ?>"
 
@+


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°32389
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 23:10:59  profilanswer
 

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 :sarcastic:
 
j'essaie ta manip demain matin :)
 
merci :hello:

 

[edit]--Message édité par Batman-Fr--[/edit]


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32390
Mara's dad
Yes I can !
Posté le 16-05-2001 à 23:11:17  profilanswer
 

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 :D
 
Allez, courage, çà va renter tout seul :lol:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32394
Mara's dad
Yes I can !
Posté le 16-05-2001 à 23:17:22  profilanswer
 

A bon ,t'es encore là !
SI tu veut :  

Code :
  1. <?php
  2. if( isset( $dn_jour ) )
  3. {
  4.    echo "$dn_jour";
  5. }
  6. ?>


 
Bon, t'enlève les {} parce que y'a que le echo qu'est conditionné par le if()
 

Code :
  1. <?php
  2. if( isset( $dn_jour ) )
  3.    echo "$dn_jour";
  4. ?>


 
Et tu met tout sur une ligne :

Code :
  1. <?php if( isset( $dn_jour ) ) echo "$dn_jour"; ?>


 
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 !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32395
Batman-Fr
powered by caféine
Posté le 16-05-2001 à 23:35:14  profilanswer
 

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 :D
 
Allez, courage, çà va renter tout seul :lol:




 
:hello:
 
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 :D
 
merci encore ! :)
 
++


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32408
youdontcar​e
Posté le 17-05-2001 à 07:09:18  profilanswer
 

pour tester si une variable est vide, je fais juste
 
if ($var == "" )
 
ça marche nickel et c'est tout simple :)

n°32421
Mara's dad
Yes I can !
Posté le 17-05-2001 à 09:00:53  profilanswer
 

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 ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32431
Batman-Fr
powered by caféine
Posté le 17-05-2001 à 09:33:44  profilanswer
 

Mara's Dad : :jap: merci, ca marche nickel chrome :sol:
 
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 :hello:
 
++


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
n°32566
youdontcar​e
Posté le 17-05-2001 à 12:55:38  profilanswer
 

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 :D
 
batman, tu utilises quelle version de php ?

n°32575
Mara's dad
Yes I can !
Posté le 17-05-2001 à 13:17:02  profilanswer
 

J'ai fait un test avec ce code :

Code :
  1. <?php if( $toto=="" ) echo("OK" ); else echo($toto); ?>


 
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.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32581
youdontcar​e
Posté le 17-05-2001 à 13:31:30  profilanswer
 

Mara's dad a écrit a écrit :

J'ai fait un test avec ce code :

Code :
  1. <?php if( $toto=="" ) echo("OK" ); else echo($toto); ?>


 
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.



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.

n°32583
Mara's dad
Yes I can !
Posté le 17-05-2001 à 13:38:23  profilanswer
 

C'est çà qu'est bien avec PHP, c'est reposant.
Haaaaaaaaaa.........


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°32590
youdontcar​e
Posté le 17-05-2001 à 13:43:42  profilanswer
 

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 :D :D

n°32596
lamatrice
Posté le 17-05-2001 à 13:58:23  profilanswer
 

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)

n°32602
youdontcar​e
Posté le 17-05-2001 à 14:07:41  profilanswer
 

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 :
  1. <?
  2. echo "<pre>";
  3. function VarStat (&$Var)
  4. {
  5. if (isset($Var)) echo "\tisset"; else echo "\t";
  6. if (empty($Var)) echo "\tempty"; else echo "\t";
  7. if ($Var) echo "\tself"; else echo "\t";
  8. echo "\t".gettype($Var);
  9. }
  10. echo "\n1 "; VarStat($Hello);
  11. echo "\n2 \"\" "; $Hello=""; VarStat($Hello);
  12. echo "\n3 0 "; $Hello= 0; VarStat($Hello);
  13. echo "\n4 FALSE"; $Hello=FALSE; VarStat($Hello);
  14. echo "\n5 UNSET"; unset($Hello); VarStat($Hello);
  15. echo "\n6 XYZ "; $Hello="XYZ"; VarStat($Hello);
  16. echo "\n6 123 "; $Hello=123; VarStat($Hello);
  17. echo "\n6 0.1 "; $Hello=0.1; VarStat($Hello);
  18. echo "\n7 TRUE "; $Hello=TRUE; VarStat($Hello);
  19. echo "</pre>";
  20. ?>

 
ça affichera:

Code :
  1. 1   empty  NULL
  2. 2 ""  isset empty  string
  3. 3 0  isset empty  integer
  4. 4 FALSE isset empty  boolean
  5. 5 UNSET  empty  NULL
  6. 6 XYZ  isset  self string
  7. 6 123  isset  self integer
  8. 6 0.1  isset  self double
  9. 7 TRUE  isset  self boolean
 

[edit]--Message édité par youdontcare--[/edit]

n°32610
Batman-Fr
powered by caféine
Posté le 17-05-2001 à 14:18:46  profilanswer
 

Mara's dad a écrit a écrit :

J'ai fait un test avec ce code :

Code :
  1. <?php if( $toto=="" ) echo("OK" ); else echo($toto); ?>


 
Avec PHP3 et PHP4.  
 
En PHP4:
Warning: Undefined variable: toto in ...
 
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.




 
:jap:
 
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 :hello:
 
au moins, mon poste n'etait pas si debile que ca alors :)
 
merci encore


---------------
Tout ou rien mais rien que tout ! feed-back : http://forum.hardware.fr/forum2.ph [...] ost=121391
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  (PHP) probleme (incomprehensible ?) avec mes variables

 

Sujets relatifs
definition de variables globales pour un site web[Delphi 5] passage de variables d'une fiche à une autre
[Java, Linux, IE5] raffraichissement problème.[PHP] fonction tableau
[PHP] créer des news comme celle de hfr[PHP] - include
[PHP] Poster des news à distance[PHP] - Comment on fait un retour à la ligne
[PHP] Tableau multidimensionnelAffichage de variables en ASP
Plus de sujets relatifs à : (PHP) probleme (incomprehensible ?) avec mes variables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR