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

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme avec empty

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme avec empty

n°940490
freed102
Arayashiki
Posté le 07-01-2005 à 17:20:20  profilanswer
 

voila j'ai créé une fonction, et j'ai un probleme avec empty()
 
voici le code
 

Code :
  1. if(empty($x))
  2. {
  3.  if($pos=="center" || "centre" )
  4.  {
  5.  $x_img['pos_x']=($pagewidth-$x_img['width'])/2;
  6.  }
  7.  if($pos=="droite" )
  8.  {
  9.  $x_img['pos_x']=($pagewidth-$x_img['width'])-$marginright;
  10.  }
  11.  if($pos=="gauche" )
  12.  {
  13.  $x_img['pos_x']=$marginleft;
  14.  }
  15. }
  16. elseif($x==0 || !empty($x))
  17. {
  18. $x_img['pos_x']=$x;
  19. }


 
... le probleme c que quand ma variable $x n'est pas vide... il execute quand même la premiere instruction
 
.. quoi faire ???  :??:


Message édité par freed102 le 07-01-2005 à 17:20:53
mood
Publicité
Posté le 07-01-2005 à 17:20:20  profilanswer
 

n°940497
freed102
Arayashiki
Posté le 07-01-2005 à 17:23:47  profilanswer
 

en fait quand je mets "0" ou vide.. pour lui c pareil ! hors moi je veux que "0" ça me retourne un "0" et que si c vide qu'il calcule la position indiquée

n°940540
sielfried
Posté le 07-01-2005 à 18:10:04  profilanswer
 
n°940541
freed102
Arayashiki
Posté le 07-01-2005 à 18:11:52  profilanswer
 


merci j'ai deja lu tout ça !
j'essai par tous les moyens que quand je tape un "0" dans mon champ il ne soit pas interpreté comme null... j'ai tenté avec un  
 
if($_POST['X_logo']==chr(48))
{
...
}
 
ça marche pas non plus ! :(

n°940548
sielfried
Posté le 07-01-2005 à 18:23:41  profilanswer
 

Déjà qu'est-ce que $x ?
 
Une valeur qui vient d'un formulaire ? Dans ce cas il n'y a aucune raison que le "0" que tu tapes dans le champ correspondant ne soit pas transmis en tant que tel.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°940551
freed102
Arayashiki
Posté le 07-01-2005 à 18:26:04  profilanswer
 

Sielfried a écrit :

Déjà qu'est-ce que $x ?
 
Une valeur qui vient d'un formulaire ? Dans ce cas il n'y a aucune raison que le "0" que tu tapes dans le champ correspondant ne soit pas transmis en tant que tel.


 
voici la facon avec laquelle je recupere ma variable :

Code :
  1. if(!$_POST['X_logo']){$X_logo="";}elseif($_POST['X_logo']==chr(48)){$X_logo="0";}else{$X_logo=$_POST['X_logo'];}


 
et voici ma fonction entiere :
 

Code :
  1. function AlignImg($img,$pagewidth,$x,$y,$maxwidth,$maxheight,$marginright,$marginleft,$pos)
  2. {
  3. $size=getimagesize($img);
  4. global $x_img;
  5. $x_img=array();
  6. if ($size[1]>$maxheight && $size[0]>=$maxwidth)
  7. {
  8. $x_img['height']=$maxheight;
  9. $x_img['rapport']=$x_img['height']*100/$size[1];
  10. $x_img['width']=$size[0]*$x_img['rapport']/100;
  11. }
  12. if ($size[1]>$maxheight && $size[0]<=$maxwidth)
  13. {
  14. $x_img['height']=$maxheight;
  15. $x_img['rapport']=$x_img['height']*100/$size[1];
  16. $x_img['width']=$size[0]*$x_img['rapport']/100;
  17. }
  18. elseif($size[0]>=$maxwidth)
  19. {
  20. $x_img['width']=$maxwidth;
  21. $x_img['rapport']=$x_img['width']*100/$size[0];
  22. $x_img['height']=$size[1]*$x_img['rapport']/100;
  23. }
  24. elseif($size[0]<=$maxwidth && $size[1]<=$maxheight)
  25. {
  26. $x_img['width']=$size[0];
  27. $x_img['height']=$size[1];
  28. $x_img['rapport']=100;
  29. }
  30. elseif($x==chr(48) || !empty($x))
  31. {
  32. $x_img['pos_x']=$x;
  33. }
  34. else
  35. {
  36.  if($pos=="center" || "centre" )
  37.  {
  38.  $x_img['pos_x']=($pagewidth-$x_img['width'])/2;
  39.  }
  40.  if($pos=="droite" )
  41.  {
  42.  $x_img['pos_x']=($pagewidth-$x_img['width'])-$marginright;
  43.  }
  44.  if($pos=="gauche" )
  45.  {
  46.  $x_img['pos_x']=$marginleft;
  47.  }
  48. }
  49. if(!empty($y) || $y==0)
  50. {
  51. $x_img['pos_y']=$y;
  52. }
  53. else
  54. {
  55. $x_img['pos_y']=35;
  56. }
  57. return $x_img;
  58. }


 
voila comme ça tu vois tout

n°940558
freed102
Arayashiki
Posté le 07-01-2005 à 18:31:32  profilanswer
 

et j'appelle ma fonction comme cela : (sachant que la variable passe en get vers une autre page :

Code :
  1. AlignImg("temp/$logo.jpg",85,$_GET['X_logo'],$_GET['Y_logo'],$_GET['L_logo'],15,5,5,$_GET['pos_logo']);

n°940559
SomeBugsIn​Me
life suxx
Posté le 07-01-2005 à 18:31:47  profilanswer
 

Code :
  1. if(!$_POST['X_logo']){$X_logo="";}elseif($_POST['X_logo']==chr(48)){$X_logo="0";}else{$X_logo=$_POST['X_logo'];}


 
 
essaie ça :
 

Code :
  1. if ( ! isset($_POST['X_logo']) ) $X_logo = '';
  2. else $X_logo = $_POST['X_logo'];


Message édité par SomeBugsInMe le 07-01-2005 à 18:32:51
n°940560
freed102
Arayashiki
Posté le 07-01-2005 à 18:36:03  profilanswer
 

bah j'en reviens à peu pres au même.... il fait pas la difference dans ma fonction entre  
 

Code :
  1. if(empty($x))
  2. {
  3. ...
  4. }
  5. ou
  6. if(!empty($x) || $x==0)
  7. {
  8. ...
  9. }


Message édité par freed102 le 07-01-2005 à 18:36:21
n°940563
freed102
Arayashiki
Posté le 07-01-2005 à 18:42:51  profilanswer
 

je viens d'essayer avec ça :  
 

Code :
  1. elseif(isset($x))
  2. {
  3. $x_img['pos_x']=$x;
  4. }
  5. else
  6. {
  7.  if($pos=="center" || "centre" )
  8.  {
  9.  $x_img['pos_x']=($pagewidth-$x_img['width'])/2;
  10.  }
  11.  if($pos=="droite" )
  12.  {
  13.  $x_img['pos_x']=($pagewidth-$x_img['width'])-$marginright;
  14.  }
  15.  if($pos=="gauche" )
  16.  {
  17.  $x_img['pos_x']=$marginleft;
  18.  }
  19. }


 
toujours pareil !

mood
Publicité
Posté le 07-01-2005 à 18:42:51  profilanswer
 

n°940568
freed102
Arayashiki
Posté le 07-01-2005 à 18:47:56  profilanswer
 

et ça :
 

Code :
  1. switch ($x)
  2. {
  3. case "0" : $x_img['pos_x']=$x; break;
  4. case "":
  5.    if($pos=="center" || "centre" )
  6.    {
  7.    $x_img['pos_x']=($pagewidth-$x_img['width'])/2;
  8.    }
  9.    if($pos=="droite" )
  10.    {
  11.    $x_img['pos_x']=($pagewidth-$x_img['width'])-$marginright;
  12.    }
  13.    if($pos=="gauche" )
  14.    {
  15.    $x_img['pos_x']=$marginleft;
  16.    }
  17.    break;
  18. default: $x_img['pos_x']=$x; break;
  19. }


 
... toujours pareil...

n°940645
sielfried
Posté le 07-01-2005 à 19:50:08  profilanswer
 

Concrètement et en termes français (edit : pas parce que tu t'exprimes mal ; je veux dire en termes "non code" ), quelles sont les conditions que tu souhaites sur $_POST['X_logo'] ?  
 
(en admettant que tu n'ais pas utilisé la ligne
 

Code :
  1. if(!$_POST['X_logo']){$X_logo="";}elseif($_POST['X_logo']==chr(48)){$X_logo="0";}else{$X_logo=$_POST['X_logo'];}


 
)


Message édité par sielfried le 07-01-2005 à 19:59:23

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°940726
freed102
Arayashiki
Posté le 07-01-2005 à 21:49:08  profilanswer
 

Sielfried a écrit :

Concrètement et en termes français (edit : pas parce que tu t'exprimes mal ; je veux dire en termes "non code" ), quelles sont les conditions que tu souhaites sur $_POST['X_logo'] ?  
 
(en admettant que tu n'ais pas utilisé la ligne
 

Code :
  1. if(!$_POST['X_logo']){$X_logo="";}elseif($_POST['X_logo']==chr(48)){$X_logo="0";}else{$X_logo=$_POST['X_logo'];}


 
)


 
en Francais je veux que "si le POST de 'X_logo' n'existe pas, mettre une valeur vide à la variable $X_logo, si par ailleur le POST de 'X_logo' a le caractere "48" (autrement dit le zero) => donne la valeur "0" au la variable $X_logo, ou si autrechose la valeur de $X_logo prend la valeur de POST['X_logo']"
 
En résumé... si le formulaire n'est pas envoyé : par defaut tu mets une valeur vide (pour donner la main une autre variable "center, left ou right" car on peut pas vraiment spécifier un alignement avec une position en ordonnées "x" )
 
et si le formulaire est envoyé et que c un zero : la valeur prends "0"
ou alors si c un autre chiffre : la valeur prends le chiffre indiqué
 
au depart j'ai pas fait de test sur le zéro, mais j'avais remarqué que dans ma fonction si je met un zero ou un champs vide le resultat est "false" (enfin à priori !)
 
j'en ai déduit ça parceque si je spécifie une valeur dans mon champ "x" supérieure à 1, il m'aligne mon logo à la position indiquée... si je mets "0", il aligne à la position "centre, left ou right" de mon autre variable... alors que je voudrais que "0" soit la position "0" !! (dans mon cas le zero n'est pas une valeur nulle !)
 
voila
bcp de blabla... ceux qui auront eu le courage de lire jusqu'au bout auront peut etre compris quelquechose... ou rien du tout! lol

n°940738
sielfried
Posté le 07-01-2005 à 22:00:32  profilanswer
 

J'avoue avoir lu très en diagonale (en fait plutôt carrément en verticale) à partir du troisième paragraphe, mais a priori une fonction comme empty() n'est pas utile ici (je ne la conseille pas en général), ni chr() d'ailleurs.  
 
Il y a deux cas simples :
- soit il n'y a pas eu de formulaire posté, dans ce cas $_POST['X_logo'] n'est pas défini, ce qu'il faut vérifier par un if (!isset($_POST['X_logo'])) {...}
- soit le formulaire a été posté, dans ce cas $_POST['X_logo'] est défini et il peut valoir 0 ou n'importe quelle autre valeur.
 
Donc :
- si le formulaire n'est pas posté, isset($_POST['X_logo']) retourne false ;
- si le formulaire est posté et que l'utilisateur a inscrit une valeur, alors le isset() retourne true et $_POST['X_logo'] vaut la valeur qu'il a inscrite, même si c'était 0 ;
- si le formulaire est posté et que l'utilisteur n'a saisi aucune valeur, alors le isset() retourne aussi true mais $_POST['X_logo'] vaut la chaîne vide, soit "".
 
Ces trois infos devraient te suffire amplement pour traiter les différents cas possibles.


Message édité par sielfried le 07-01-2005 à 22:01:22

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°940750
freed102
Arayashiki
Posté le 07-01-2005 à 22:23:48  profilanswer
 

non mais le probleme n'est pas au niveau du POST, c dans la fonction! car il ne fait pas la difference entre une valeur vide ou un zero !
 
quand je teste avec  
 
if(!empty($x) || $x==0)
{
instruction 1
}
else
{
instruction 2
}
 
que $x="" ou $x=0 il reste sur la premiere instruction ! (enfin ça depend de l'ordre dans laquelle je mets mes instructions ! car si je fais l'inverse :
 
if(empty($x))
{
instruction 2
}
elseif(!empty($x) || $x==0)
{
instruction 1
}
... là il execute l'instruction 2... en somme il prend le premier resultat qui lui parait "true" ! c'est à dire $x=0 ou $x="";

n°940754
sielfried
Posté le 07-01-2005 à 22:35:18  profilanswer
 

Forcément, 0 n'est pas "0".
 
Lorsque $x = 0, ($x == 0) renvoie true, et lorsque $x = "", ($x == 0) renvoie true aussi, car PHP considère qu'une chaîne vaut la valeur numérique 0.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°940806
freed102
Arayashiki
Posté le 07-01-2005 à 23:43:06  profilanswer
 

Sielfried a écrit :

Forcément, 0 n'est pas "0".
 
Lorsque $x = 0, ($x == 0) renvoie true, et lorsque $x = "", ($x == 0) renvoie true aussi, car PHP considère qu'une chaîne vaut la valeur numérique 0.


 
bon je crois avoir resolu le probleme...
plutot que de faire des if.... elseif... else ... j'ai fait des if... if.. if... et ça marche mieux..
maintenant j'ai un nouveau probleme... completement hallucinant !
 

Code :
  1. $img=AlignImg("temp/$logo.jpg",85,$_GET['X_logo'],$_GET['Y_logo'],$_GET['L_logo'],15,5,5,$_GET['pos_logo']);
  2. $pos_x=Convert2points($img['pos_x']);
  3. echo $pos_x; // il me retourne une valeur tout a fait coherente
  4. $pdf->addJpegFromFile("temp/$logo.jpg",$pos_x,Convert2points(InserseOrdonneesImg(55,$img['pos_y'],$img['height'])),Convert2points($img['width']),Convert2points($img['height']),100); // là il me place mon objet au milieu... quoi qu'il en soit !


La valeur de mon $pos_x est coherente... il me retourne un decimal tout a fait normal... mais dans ma fonction il me place l'objet au milieu alors que j'ai pas demandé ! lol!
par contre si je mets une valeur numerique à la place de $pos_x dans ma fonction... il place mon objet au bon endroit... là je ne comprends pas... c pas tres logique !

n°949902
freed102
Arayashiki
Posté le 10-01-2005 à 12:36:15  profilanswer
 

tjrs pas une idée pour resoudre mon prob de variable ?

n°950048
spaceunive​rse
Posté le 10-01-2005 à 14:45:40  profilanswer
 

en fait j'avais le meme problème que toi(avec ta première solution) il me reconnaissait le 0 comme du vide. La seule solution que j'ai trouvé pour palier à sa c'est en mettant 2 zéros. Quand ta variable x=0 tu la met à 00 et hop c'est plus reconnu comme du vide magique non ? :)
Après il te reste justa a prendre juste le 1er zéro quand tu relis ta chaine tu prend que le premier zéro

n°950052
freed102
Arayashiki
Posté le 10-01-2005 à 14:51:32  profilanswer
 

oui mais pour le zero c bon j'ai trouvé la solution...
mais ce que je comprends pas c mon prob pour la variable $pos_x qui est incohérente... je vais reposter mon message sur un autre topic... car c plus le même probleme.. :)

n°950075
spaceunive​rse
Posté le 10-01-2005 à 15:11:50  profilanswer
 

justement je me disais que en faisait l'ancienne méthose avec les if elseif else + ma solution peut etre etre que tu n'aira plus ce pb de x a la mauvaise valeur. Enfin je sais pas trop tu peux toujours essayer.

n°950076
freed102
Arayashiki
Posté le 10-01-2005 à 15:13:11  profilanswer
 

bah je peux essayer !mais je suis certain pourtant que la valeur de mon "x" est correcte ! mais elle n'est pas interpretée dans ma fonction "addjepgfromfile"

mood
Publicité
Posté le   profilanswer
 


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

  Probleme avec empty

 

Sujets relatifs
Problème de menu dynamiqueProbleme Windows icone -> URL
[Port Série] Problème de réception à 1200 baudsProbleme sauvegarde avec Oracle 9i
petit probleme de gestion graphiqueProbleme avec session_start()
probleme de gestion de la souris en C[HTML] Problème de tableaux avec mon site sous Firefox
Probleme ente 2 types: Graphics / Component [Debutant][PHP] Problème de REG_EMPTY
Plus de sujets relatifs à : Probleme avec empty


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