[PHP Débutant ] Fonction () {}

Fonction () {} [PHP Débutant ] - PHP - Programmation

Marsh Posté le 20-07-2003 à 21:03:24    

...

Reply

Marsh Posté le 20-07-2003 à 21:03:24   

Reply

Marsh Posté le 20-07-2003 à 21:03:59    

Bonsoir,
j'ai realisé à l'aide d'un bouqin un petit script pour écrire des infos à l'intérieur d'un fichier et vu que je dois l'utiliser à plusieurs reprises dans différents fichiers ,je voulais créer une fonction avec ce petit script mais ça ne fonctionne pas et je ne comprends pas vraiment pourquoi ...
 
Script sans fonction (){}:  

Citation :

<?PHP
 
 
//----- Variables -----
$path="/test/donnees.bin";
$error="Fichier impossible à ouvrir !";
$mode="w+";
 
//----- Script -----
 
 
$str="$Comment";
if ($fp=fopen($path,$mode)) {
    fwrite($fp,$str);
    fclose($fp);
   }
else
   echo "$error";  
 
echo "<p>Voilà le texte qui a été écrit dans le fichier :</p>";    
if ($size=readfile($path))
   echo "Taille du fichier lu : " ,$size,"octets";
else
   echo "$error";      
       
?>

Ce script fonctionne sans problème
 
Script avec fonction () {} :

Citation :

<?PHP
 
//----- Fonction -----
 
function write_text($path,$error,$mode)  
{
 
global $Comment;
$str="$Comment";
if ($fp=fopen($path,$mode)) {
    fwrite($fp,$str);
    fclose($fp);
   }
else
   echo "$error";  
 
echo "<p>Voilà le texte qui a été écrit dans le fichier :</p>";    
if ($size=readfile($path))
   echo "Taille du fichier lu : " ,$size,"octets";
else
   echo "$error";
}  
 
//----- Variables -----
 
$path="/test/donnees.bin";
$error="Fichier impossible à ouvrir !";
$mode="w+";
 
//----- Script -----
 
write_text($path,$error,$mode);
                 
?>

Cette version ne fonctionne pas.Je n'ai aucun message d'erreur mais rien ne s'inscrit à l'intérieur du fichier "donnees.bin" :??:


Message édité par Optitribe le 20-07-2003 à 21:36:47
Reply

Marsh Posté le 20-07-2003 à 21:13:35    

Euh... c'est quoi la variable $Comment ? :??:
Si c'est une variable globale, il faut que tu la déclares en tant que telle dans ta fonction ; cf http://www.php.net/manual/fr/langu [...] .scope.php


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 20-07-2003 à 21:19:17    

Taiche a écrit :

Euh... c'est quoi la variable $Comment ? :??:
Si c'est une variable globale, il faut que tu la déclares en tant que telle dans ta fonction ; cf http://www.php.net/manual/fr/langu [...] .scope.php


 
En fait $Comment c'est le contenu d'un formulaire.
Le but est de récupéré ce contenu pour pouvoir l'afficher dans une sorte d'edito en page d'accueil du site sans devoir passer par un accès FTP ou une base de données.
 
Je vais allez voir l'adresse que tu m'as indiqué ...

Reply

Marsh Posté le 20-07-2003 à 21:38:02    

Merci Taiche ,c'était exactement ça le problème ... :jap:
 
A+
 
Note : J'ai mis en gras la correction sur le Script ...

Reply

Marsh Posté le 20-07-2003 à 23:00:54    

optitribe a écrit :

Merci Taiche ,c'était exactement ça le problème ... :jap:
 
A+
 
Note : J'ai mis en gras la correction sur le Script ...

Personellement, j'aurais plustôt fait comme ça :

Code :
  1. function write_text($path,$error,$mode,$str)
  2. {
  3. if ($fp=fopen($path,$mode)) {
  4.     fwrite($fp,$str);
  5.     fclose($fp);
  6.    }
  7. else
  8.    echo "$error"; 
  9. echo "<p>Voilà le texte qui a été écrit dans le fichier :</p>";   
  10. if ($size=readfile($path))
  11.    echo "Taille du fichier lu : " ,$size,"octets";
  12. else
  13.    echo "$error";
  14. //----- Variables -----
  15. $path="/test/donnees.bin";
  16. $error="Fichier impossible à ouvrir !";
  17. $mode="w+";
  18. //----- Script -----
  19. write_text($path,$error,$mode,$Comment);
  20.                
  21. ?>

1) Le fait d'avoir la variable $comment dans la déclaration de la fonction et pas en variable globale permet d'être plus souple pour deux raisons :  
- tu voudras peut être l'utiliser la fonction a partir de formulaire ou de pages pour lesquelles la variabble $comment ne correspond a rien.  
- Si une autre partie du programme utilise la variable globale $comment tu risques de récupérer une valeur qui corespond pas du tout a ce qui est attendus.
 
2) T'avais écrit $str="$Comment";
La aussi, deux remarques :  
- $str=$Comment; sufit larement. Et puis, il est déconseillée de mettre les nom de vrariable directement dans une chaine de caracctère pour la raison suivante :
$str=$texte."_fin";
Est compris par le compilateur comme étant : $str recoit le contenu de la variable $texte + la chaine de caracctère "_fin" le tout sous la forme d'une chaine de caractère.
$str="$texte_fin";
Est compris par le compilateur comme étant : str recoit le contenu de la variable $texte_fin sous la forme d'une chaine de caractère.
- $Comment n'est plus utilisé alors tant qu'à passer la valeur dans les paramêtres de la fonction, j'ai carément affecté la valeur dans $str.
 
3) A éviter : l'utilisation des variables $var quandd c'est une donnée provenant de l'url de la page ou d'un formulaire. Il vaut mieux utilisé les variables $_POST et $_GET vu que les variables $var ne sont plus renseigné dans les réglages par défauts des dernières versions de PHP et que c'est une possibilité qui risque de disparaitre n'importe quand dans les nouvelles versions de PHP (auquel cas il sera impossible de les réactivés. ;) )


Message édité par omega2 le 20-07-2003 à 23:05:02
Reply

Sujets relatifs:

Leave a Replay

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