cedricpc Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 enfaite voila... J'ai dans l'idée de faire un système de news tres simple, sans fonction d'edition, ou suppression... Ce que je veux faire, c'est ecrire la news en haut du fichier... Pour ca je fait fopen("news.php",'r+'), jusqu'a la pas de probleme... Mais la ca se corse ! Quand je fait appel a fwrite(fopen("news.php",'r+'),$msgnew) (je suppose que vous avez compris que $msgnew est la new a mettre dans le fichier), ca ecrit bien la news en haut du fichier, mais elle ecrase les precedentes ! Par exemple si la premiere new c'est : "voici la premiere new du site" et que par la suite j'en rajoute une qui est : "c'est la 2eme new" ca me mets dans le fichier news.php : "c'est la 2eme new new du site" alors que moi je voudrais que ca me mette : "c'est la 2eme new voici la premiere new du site" Vous comprennez ? Merci par avance... Lien vers le commentaire Partager sur d’autres sites More sharing options...
warzi Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 la methode la plus simple est l'utilisation des temps. tu crées un fichier (ou tu vide son contenu) tu copies ton fichier dans ce nouveau fichier tu vides le premier fichier tu ecris ta dernière news tu recopies ton temps dans ton premier fichier une methode plus propre serais de faire un fichier compteur.txt avec la valeur 0 dedans pour ajouter une news : tu vas lire la valeur de compteur.txt ($valeur) tu vas l'incrementer et la noter dans compteur.txt en l'ecrasant tu vas créer un fichier $valeur.txt tu mes dedans ton texte et tu fermes pour lire, tu regardes la valeur de compteur.txt ($valeur) tu fais un include des fichiers de $valeur.php à 1.php et c'est dans le sac. En plus, tu pourras plus facilement ajouter les options d'editions plus tard si tu le souhaites Lien vers le commentaire Partager sur d’autres sites More sharing options...
cedricpc Posté(e) le 24 août 2004 Auteur Partager Posté(e) le 24 août 2004 hum la premiere methode c'est ce que j'avais penser mais j'ai penser que si le fichier devient gros, ca va prendre plus de temps ! par contre ta deuxieme methode j'ai rien piger ! :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 la methode la plus simple est l'utilisation des temps.(...) T'as pas plus compliqué ? J'ai pas la doc php sous la main mais je suis persuadé que t'as moyen d'ouvrir ton fichier en écriture et d'y inserer le texte a partir de la position zéro. Je check ca tout a l'heure mais à mon avis c'est quasiment certain. Ensuite tu travaille ca comme un bete fichier ini sauf que tu mets un repere qui te dit que tu changes de news, plutot que de jouer avec des numéros que tu devras checker et updater a chaque fois. nws="ta news" nws="ta news2" ainsi tu te casse pas le q a faire des checks sur les numéros et les positions, tu sais que nws=" te donne une nouvelle news et tant que t'as pas le " final tu es dans ta news. Lien vers le commentaire Partager sur d’autres sites More sharing options...
warzi Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 T'as pas plus compliqué ? oui si tu veux... mais direct ça sort du cahier des charges donné au premier post si tu trouves une fonction qui ecrit au debut du fichier sans l'ecraser, renseigne toi sur sa methode de fonctionnement sinon tu crées un fichier a access sequentiel mais je ne sais pas comment php gere ce genre de choses Lien vers le commentaire Partager sur d’autres sites More sharing options...
cedricpc Posté(e) le 24 août 2004 Auteur Partager Posté(e) le 24 août 2004 hum moi aussi il me semble que c'est faisable sans utiliser des temps ! Par contre en ce qui concerne d'y mettre dans un ini... j'utilise un format qui marche tres bien ! => $msgnew = "<div class=\"newsp\">.:: www.********.***.****.*** ::. ".$datenew."</div> <div class=\"newshead\">".$titrenew."</div> <div class=\"news\"> ".$messagenew." </div>"; où : $datenew = le jour + la date au format 31/12/2004 $titrenew = le titre de la new $messagenew = le contenu de la new et donc j'obtient un format de fichier près a etre utiliser par un include ! Seul trucs c'est qu'il faut que je présente avec les <p>....</p> le contenu mais je pense mettre des raccourcies pas la suite (ps : le format que j'ai dit marche tres bien actuellement et j'ai juste envie de pouvoir mettre des news en ligne directement par internet... je ferai ca en sql quand j'aurais un peu mieux compris sont fonctionnement...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Country Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 J'ai moi aussi eut besoin de rajouter un texte au début d'un fichier. Malheureusement je n'ai pas trouvé de syteme pour inserer le texte a partir de la position zéro. J'ai procédé comme suit : Lecture du contenu du fichier Placer le contenu du fichier dans une variable Ajouter le nouveau texte à la variable ( $var=$text."\n".$var; ) Ecrire la variable dans le fichier en effaçant le reste. Ci-dessous le code de ma fonction : function Ecriture_Au_Debut($fichier, $texte){ if (file_exists("$fichier")){ if($id = fopen("$fichier", "r+")){ $contenu_original = fread ($id, filesize($fichier)); $nouveau_contenu = $texte."\n".$contenu_original; fseek($id,0,SEEK_SET); fputs ($id, $nouveau_contenu); fclose($id); return TRUE; }else{ return FALSE; } }else{ return FALSE; } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 Bon voilà, pour réécrire en début de fichier c'est tout con Tu fais ton $f = fopen ('\test.txt'); ensuite un fseek ($f,0); et zou le problème est réglé ce que t'écriras via fwrite et ton pointer $f se placeras en début de fichier. Country t'étais pas loin mais là y avait plus simple. Me semblait bien que fallait pas chercher midi a 14h. Lien vers le commentaire Partager sur d’autres sites More sharing options...
cedricpc Posté(e) le 24 août 2004 Auteur Partager Posté(e) le 24 août 2004 hum pour le fseek, faut a nouveau l'enregistrer dans $f ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Country Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 Heu, je veut bien mais j'ai pas réussi à faire marché ton truc : Tu fais ton $f = fopen ('\test.txt'); Il manque le 2ème argument. J'ai essayé avec w,w+,a,a+ mais avec aucun d'eux je n'ai réussi à écrire devant le contenu du fichier. Pourrai tu poster un exemple de ta fonction, stp ? hum pour le fseek, faut a nouveau l'enregistrer dans $f ? J'ai essayé et le script il est pas daccord Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 24 août 2004 Partager Posté(e) le 24 août 2004 Je vous poste ca demain, la j'ai mon lit qui m'appelle Lien vers le commentaire Partager sur d’autres sites More sharing options...
caku Posté(e) le 25 août 2004 Partager Posté(e) le 25 août 2004 Salut pareil sygen <? $fp = fopen("test.txt","r+"); fseek($fp,0); fputs($fp,'blabla'); fclose($fp); ?> et ça doit marcher a+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
cedricpc Posté(e) le 25 août 2004 Auteur Partager Posté(e) le 25 août 2004 ok merci je vais essayer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Country Posté(e) le 25 août 2004 Partager Posté(e) le 25 août 2004 De cette façon ça écrit bien au début du fichier mais en écrasant ce qu'il y avait déjà. Exemple : Contenu de test.txt : voici le texte de départ Contenu de test.txt après avoir lancé le script : blablale texte de départ Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 25 août 2004 Partager Posté(e) le 25 août 2004 J'avoue je fais mon mea-culpa la dessus. Le r+ va écraser ce qui est existant, le a meme en changeant l'offset écrira en fin de fichier. Bref au plus simple faire un : file_get_contents pour récuperer le contenu du fichier existant (plus rapide que fopen, fread, fclose) ensuite soit si t'as php 5 tu restockes avec un file_put_contents et en 2 lignes c'est réglé, soit t'as un >4 et la tu fais un fopen(file,w+) et fwrite etc. Désolé sur ce coup, j'y croyais Lien vers le commentaire Partager sur d’autres sites More sharing options...
caku Posté(e) le 25 août 2004 Partager Posté(e) le 25 août 2004 ben zut, j'aurais pourtant parié que ça marchait !!!! désolé j'aurais du tester. Donc je vois pas ..... a part prendre le pb a l'envers et de se servire d'un compteur que tu decremenes a la lecture a+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 25 août 2004 Partager Posté(e) le 25 août 2004 Le plus simple c'est quand meme soit la soluce que j'ai donné 1 post plus haut, soit tu fais des append et quand tu lis le fichier tu stockes les thread dans une array que tu lis de bas en haut... Par contre si ton fichier est assez conséquent, alors passe par un base de données c'est quand meme bien plus logique et + rapide! Lien vers le commentaire Partager sur d’autres sites More sharing options...
cedricpc Posté(e) le 25 août 2004 Auteur Partager Posté(e) le 25 août 2004 hum bon ok merci de votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.