Se connecter avec
S'enregistrer | Connectez-vous

μForum problème fopen()

Dernière réponse : dans Programmation

Bonjours, j'ai un problème avec ce fameux forum (génial !: une page, tu la lance puis c'est bon) .

Bref, à chaque nouveau sujet du forum j'ai ce message d'erreur qui s'affiche:


"Warning: fopen() [function.fopen]: Filename cannot be empty in /home/arbilus/public_html/forums/1.php on line 22"


Cependant, le sujet est bien posté, mais l'erreur est toujours là. Alors j'ai regardé à la ligne 22 et j'ai ça:

  1. class SaveObj
  2. {
  3. function saveObj() {
  4. if($fp=fopen($this->name,"w")) { // Ici c'est la ligne 22
  5. fputs($fp, serialize($this));
  6. fclose($fp);
  7. }
  8. }
  9. }



Je comprend pas l'erreur, ils me disent que "le nom du fichier ne peut être vide" .. Quel fichier ?
Il y a le fichier de connexion, de membres et des messages puis l'index du forum. Alors je comprend pas ce que veux faire cette fonction.

J'ai pensé qu'elle n'était pas nécessaire pour le forum, je l'ai donc supprimé, mais là, grand message d'erreur: "fatal error" . Donc je sais pas que modifier pour enlever le message en amont. J'y comprend rien.

Pourriez-vous m'expliquer (à quoi sert ce code, comment enlever le message d'erreur, bref, c'est le brouillard) .

Par contre, pour le reste du code.. Il est TRES long, donc je sais pas si je dois le poster. Car c'est vraiment très lourd.

Autres pages sur : forum probleme fopen

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

arbilus a dit :
Ben alors, pourquoi ça me met "warning" si "name" est renseigné . Je comprend pas . A moins que ça ne soit pas "var $name="membres/members.dat"; ..

Ça dépend où est la ligne de code, où est l'appel à ta fonction, bref de tas de choses que l'on ne peut pas voir si l'on est pas devant le code...

C'est à toi de vérifier ça... :/ 
Expert Programmation

Ou alors elle n'est pas renseignée...

De toute évidence, il ne trouve rien dans "$this->name" et ne peut donc pas ouvrir le fichier... :spamafote: 

EDIT: ta fonction semble sauvegarder le contenu de l'objet courant dans un fichier.

EDIT2: Si ta fonction est appelée (et elle l'est sûrement) quelque part dans ton code, ce n'est pas étonnant que te fasse insulter quand tu essaies de la supprimer... :D 
Expert Programmation

Salut,

Si tu viens ici avec ton code, attends-toi à ce qu'on le critique (objectivement).
Et on ne te lâchera pas tant que tu coderas comme un porc (sans chercher à vexer Storos :D  ). Si, si. Et même que tu feras des progrès, grâce à toutes ses bonnes volontés.

D'ailleurs, ne vexe pas ces bonnes volontés en voulant faire du code crade qui marche.

;) 
Expert Programmation

zeb a dit :
Salut,

Si tu viens ici avec ton code, attends-toi à ce qu'on le critique (objectivement).
Et on ne te lâchera pas tant que tu coderas comme un porc (sans chercher à vexer Storos :D  ). Si, si. Et même que tu feras des progrès, grâce à toutes ses bonnes volontés.

D'ailleurs, ne vexe pas ces bonnes volontés en voulant faire du code crade qui marche.

;) 

Gruik! [:storos:6]

Ok . Je veux bien trouver la solution. Donc "name" c'est le nom du fichier à éditer ou alors un "element" du code ? (ou alors autre chose ..)

edit: ^^

Sinon, j'ai pigé pourquoi il faut pas le faire: ça efface aussi les messages d'erreur plus important. Mais de toute façon j'ai un fichier texte qui m'affiche dans le dossier du script tous les messages d'erreur . Donc je peux très bien les masquer, et en cas de gros problème je consulte .

Ou alors.. Il est possible de faire le meme code, mais que pour les warning..
Expert Programmation

"name" est un attribut (une variable quoi...) de l'objet en cours lors de l'appel à la fonction SaveObj.

Cherche dans ton code où cette "variable" est initialisée (et/ou reçoit une valeur). Si elle ne l'est pas... et bien c'est là qu'est ton problème... :p 

Cherche également dans ton code à quoi va servir ce fichier. Cette fonction n'est vraisemblablement pas là pour faire joli... :/ 

Oui, elle ne l'ai pas ..

Autrement, mon autre solution (celle de masquer) dans le cas où j'ai un fichier qui enumère toutes les erreurs des script du dossier au quel il appartient. ça peut le faire non ? (même si c'est un travail pas très propre) .

Mes fichiers texte sont des fichiers "error_log" . Ils présentent les erreurs comme ça:

[26-Jun-2010 06:09:49] PHP Parse error: syntax error, unexpected '<' in /home/xxxxx/public_html/load.php on line 162

[26-Jun-2010 06:09:50] PHP Parse error: syntax error, unexpected '<' in /home/xxxxx/public_html/load.php on line 162
Expert Programmation

Sauf que ce n'est pas une solution... :spamafote: 

Ce fameux fichier qu'il n'arrive pas à créer sert sûrement à quelque chose... :/ 

Cacher le warning revient à refuser d'aller dans sa cave au cas où on y verrait une fuite d'eau. Ce n'est pas parce que la porte est fermée que la fuite a disparue...

J'ai "var $name="membres/members.dat"; " .

C'est peut être ça ?

Edit: au fait, imaginons ce cas là: je vais vérifier si le forum fonctionne bien tout le temps, si c'est le cas, je vois pas pourquoi je pourrais ne pas "cacher l'erreur", car le forum je le changerais plus par le suite. Il restera le même. Donc pourquoi m'embeter à apprendre cette partie "complexe" du php (car j'ai appris que c'était complexe :D  : les variables ou un truc du genre) alors que je peux trouver une "façon" de faire fonctionner mon forum sans problème et facilement .
Et dans le cas où je change quelque chose et qu'il y ai un problème, je consulte le fichier, je regarde d'où vient le problème et j'essai de le résoudre. Rien de plus simple.
Expert Programmation

Ça y ressemble étonnamment... :D 

réponse à l'EDIT: [:storos:3]

Le fichier en question semble être lié aux utilisateurs de ton forum... Il pourrait sans doute être utile de savoir à quoi il sert et de le faire fonctionner correctement... :sarcastic: 
Lassé par la pub ? Créez un compte