"function" ne fonctionnant qu'une fois...

"function" ne fonctionnant qu'une fois... - PHP - Programmation

Marsh Posté le 02-01-2005 à 14:56:13    

Salut !
 
Voilà, j'ai crée une fonction php que voici:
 

Code :
  1. function CreeInput($nmr,$photo)
  2. {
  3.  echo "<label>Photo $nmr:</label>";
  4.  $fichier = test_photo("photos_membres/vignettes/",$photo);
  5.  if ($fichier)
  6.  {
  7.   echo "<img src='photos_membres/vignettes/".$fichier."><br><br>";
  8.   $texte = "Modifier: ";
  9.  }
  10.  else
  11.  {
  12.   $texte = "Ajouter: ";
  13.  }
  14.  echo "<label>&nbsp;</label>";
  15.  echo $texte.'<input name="photo'.$nmr.'" type="file" size="35"><br><br>';
  16. }


 
(test_photo etant une autre fonction, mais n'affichant rien...)
 
Cette fonction est appellée tout simplement comme ça:
 

Code :
  1. CreeInput ("1",$login);


 
ça fonctionne bien lorsque je n'appelle qu'une fois la fonction, mais si je fais par exemple:
 

Code :
  1. creeInput ("1",$login);
  2. creeInput ("2",$login2);


 
Le deuxième "CreeInput" ne s'affiche pas..
 
Vous savez pourquoi ?
 
Merci !

Reply

Marsh Posté le 02-01-2005 à 14:56:13   

Reply

Marsh Posté le 02-01-2005 à 15:12:40    

Permierement on met pas d'espace entre le nom de la fonction et la parenthèse
Deuxiemement, une fonction declarée comme CreeInput() ne repondra pas si on l'appelle creeInput()
En suite, une fonction doit retourner qqch (return TRUE,return FALSE,...), et si ca marche toujours pas, regarde dans ta fonction test_photo si qqch ne peut pas clocher


Message édité par esox_ch le 02-01-2005 à 15:13:47
Reply

Marsh Posté le 02-01-2005 à 15:35:45    

Les identificateurs sont sensibles à la casse en PHP donc creeInput <> CreeInput. creeInput devrait te sortir une erreur t'indiquant que la fonction n'existe pas.
 
esox_ch : on peut mettre un espace entre le nom de fonction et la parenthèse, et une fonction n'est pas forcée de retourner une valeur.


Message édité par sielfried le 02-01-2005 à 15:36:16

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 02-01-2005 à 15:41:39    

Sielfried a écrit :

Les identificateurs sont sensibles à la casse en PHP donc creeInput <> CreeInput. creeInput devrait te sortir une erreur t'indiquant que la fonction n'existe pas.
 
esox_ch : on peut mettre un espace entre le nom de fonction et la parenthèse, et une fonction n'est pas forcée de retourner une valeur.


 
tu me rassures avec toutes ces réponses, je croyais que j'étais retombé à l'age de pierre de la prog :p
 
Je vais regarder la fonction test_photo...


Message édité par huggy le 02-01-2005 à 15:43:46
Reply

Marsh Posté le 02-01-2005 à 15:44:10    

Le deuxième appel ne provoque aucune sortie ? Même pas le premier echo ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 02-01-2005 à 16:18:03    

c'est bon, j'ai trouvé..
 
il s'agissait bien d'une erreur dans la fonction "test_photo", ou une condition n'était pas appliquée ;)
 
Merci pour votre aide !

Reply

Marsh Posté le 02-01-2005 à 16:20:37    

Sielfried a écrit :

Les identificateurs sont sensibles à la casse en PHP donc creeInput <> CreeInput. creeInput devrait te sortir une erreur t'indiquant que la fonction n'existe pas.
 
esox_ch : on peut mettre un espace entre le nom de fonction et la parenthèse, et une fonction n'est pas forcée de retourner une valeur.


 
Si on s'en tiens aux règles d'écriture PEAR si, c'est clair que ca marche quand meme mais c'est pas pour autant intelligent.  
 

huggy a écrit :

tu me rassures avec toutes ces réponses, je croyais que j'étais retombé à l'age de pierre de la prog :p
 
Je vais regarder la fonction test_photo...


 
 
En clair un langage qui permet de faire tout et n'importe quoi parcequ'il y a peu de règles et que peu de gens les appliquent (=> html) est plus avancé qu'un langage fortement typé et structuré (=> java) ... On est pas obligés d'avoir tous le meme point de vu ... maintenant ...

Citation :


c'est bon, j'ai trouvé..
 
il s'agissait bien d'une erreur dans la fonction "test_photo", ou une condition n'était pas appliquée ;)
 
Merci pour votre aide !


 
de rien


Message édité par esox_ch le 02-01-2005 à 16:22:25
Reply

Marsh Posté le 02-01-2005 à 17:03:23    

esox_ch a écrit :

Si on s'en tiens aux règles d'écriture PEAR si, c'est clair que ca marche quand meme mais c'est pas pour autant intelligent.  


 
Les fonctions qui ne retournent rien (void), je vois pas ce que ça a de "non intelligent" ? Idem pour l'espace entre le nom de fonction et la parenthèse : dans la plupart des langages que je connais, il peut y avoir n'importe quel espace ou même retour à la ligne entre deux tokens. Un truc du genre :
 

Code :
  1. CreeInput
  2. (
  3. $nmr       ,          $photo
  4. )
  5. ;


 
est parfaitement correct. Dans ce cas précis c'est affreux et illisible, mais beaucoup de programmeurs mettent un espace entre le nom de fonction et la parenthèse (pas qu'en PHP), c'est une écriture courante.  
 

Citation :

En clair un langage qui permet de faire tout et n'importe quoi parcequ'il y a peu de règles et que peu de gens les appliquent (=> html) est plus avancé qu'un langage fortement typé et structuré (=> java) ... On est pas obligés d'avoir tous le meme point de vu ... maintenant ...


 
Le PHP est certes extrêmement/trop flexible mais pour le coup je vois pas le rapport. Java accepte tout aussi bien les fonctions void les espaces entre appel et parenthèse.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 02-01-2005 à 17:04:45    

Citation :

Si on s'en tiens aux règles d'écriture PEAR si, c'est clair que ca marche quand meme mais c'est pas pour autant intelligent


 
Je tiens simplement à signaler que cette "erreur" n'etait dûe qu'a une erreur de retranscription du code (je n'ai pas utilisé de copié/collé), mis sinon dans mon code, la casse etait respectée ;)

Reply

Marsh Posté le 02-01-2005 à 17:07:34    

Pour l'espace je sais que Java le permet, et je reste de l'avi des concepteurs de PEAR pour la simple raison qu'il y a deja beaucoup de raisons pour lesquelles un script peut etre illisible, alors vaut mieux pas en rajouter (=> ton exemple). Parcontre pour le return, en java il faut declarer la declaration de la methode qu'elle sera de type void, dans ce cas pas de surprise. Donc ce n'est pas le fait de ne rien retourner qui est pas intelligent, mais le fait de ne pas le declarer au debut pour que "un programmeur qui relit le code"/"le compilateur" soit obliger de chercher le return jusqu'en bas du script pour se rendre compte qu'il ne sera pas envoyé


Message édité par esox_ch le 02-01-2005 à 17:10:07
Reply

Marsh Posté le 02-01-2005 à 17:07:34   

Reply

Marsh Posté le 03-01-2005 à 15:38:36    

esox_ch a écrit :

Permierement on met pas d'espace entre le nom de la fonction et la parenthèse
Deuxiemement, une fonction declarée comme CreeInput() ne repondra pas si on l'appelle creeInput()
En suite, une fonction doit retourner qqch (return TRUE,return FALSE,...), et si ca marche toujours pas, regarde dans ta fonction test_photo si qqch ne peut pas clocher

En PHP les fonctions ne sont pas sensibles à la casse (ce qui n'empêche pas, bien entendu, de faire attention et d'appeler les fonctions "correctement" ).

Reply

Marsh Posté le 03-01-2005 à 18:32:05    

ratibus a écrit :

En PHP les fonctions ne sont pas sensibles à la casse


 
Ah ben oui mince, en effet. :o


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed