Takai |
Le 05/01/2006 à 09:34 |
|
|
salut a tous ,
merci de vos réponses pour le dernier sujet que j'ai envoyé.
Je l'ai mis entre parentheses pour le moment et suis revenu a un autre
que je n'ai pas tout a fait fini.
L'erreur ne doit pas etre bien méchante cette fois-ci. j'ai créé un prog pour afficher un titre de page.html qui marche bien. je place ce titre dans un text
que je name ecrancrt ,ca marche impec,je le modifie . Ensuite je veux remplacer mon ancien titre par le nouveau. voicin ma fonction:
<?php
$file="C:\\Program files\\EasyPHP\\www\\Nouveau dossier\\ecran_crt.html";
if (is_writable($file))
{echo "yes";}
else
{echo"no";}
$fichier = fopen ("$file","r+");//lecture fichier
if (!$fichier)
{ echo "il n'y a pas de fichier";}
else {
while (!feof($fichier))//parcours des lignes
{
$page .= fgets($fichier,4096);//lit le contenu
}
$titre2 = eregi_replace ("<title>(.*)</title>","<title>$ecrancrt</title>",$page);//remplace le titre par la variable ecrancrt
fputs ($fichier,$titre2); //ecrit dans le fichier
echo " titre modifié avec succés";
fclose($fichier);
}
?>
Le hic c'est que ce prog me renvoie 2 pages.html .Il garde l'ancienne page avec le vieux titre et me réecrit toute cette page à la suite de la première avec mon titre modifié.
je ne pige pas pourquoi, fputs comme fwrite sont censés écrire dans
un fichier pas réecrire tout le fichier a la suite l'autre.
j'ai tenté un unlink() mais win ne le prend pas en charge(o.s pouilloux);..
Si vous avez une idée, merci de me la communiquer.
a+ |
Anthony |
Le 05/01/2006 à 19:42 |
|
 Admin |
Salut,
mets un w+ à la place du r+ ça fera ça de moins à te soucier. Ensuite tu peux remplacer
$titre2 = eregi_replace ("<title>(.*)</title>","<title>$ecrancrt</title>",$page);//remplace le titre par la variable ecrancrt fputs ($fichier,$titre2); //ecrit dans le fichier
par $page = eregi_replace ("<title>(.*)</title>","<title>$ecrancrt</title>",$page);//remplace le titre par la variable ecrancrt fputs ($fichier,$page); //ecrit dans le fichier
a + -- 
|
Takai |
Le 06/01/2006 à 09:45 |
|
|
salut ,
j'ai testé ce que tu m'as conseillé mais sans grand résultat.
Toujours pareil, avec w+ il m'efface tout le fichier,avec r+ j'ai le meme prob qu'avant : est-ce qu'il n y aurait pas un probleme de rafraichissement de la page ou peut-etre que c'est tout simplement pô
possible de le faire directement comme ca ?
<?php
$file="C:\\Program files\\EasyPHP\\www\\Nouveau dossier\\ecran_crt.html";
if (is_writable($file))
{echo "yes";}
else
{echo"no";}
$fichier = fopen ("$file","r+");//lecture fichier a la racine du serveur
if (!$fichier)
{ echo "il n'y a pas de fichier";}
if (!$fichier)
{ echo "il n'y a pas de fichier";}
else {
while (!feof($fichier))//parcours des lignes
{
$page .= fgets($fichier,4096);//lit le contenu
}
$page = eregi_replace ("<title>(.*)</title>","<title>$ecrancrt</title>",$page);//remplace le titre par la variable
fputs ($fichier,$page); //ecrit dans le fichier
echo "titre modifié avec succés";
}
fclose($fichier);
?>
|
Fhx |
Le 07/01/2006 à 22:55 |
|
|
C'est un problème avec fopen.
Donc, tu va faire un tour à la doc de php en ligne sur la fonction fopen().
Et ... oh miracle ! Que vois-je ?
'r' Open for reading only; place the file pointer at the beginning of the file.
'r+' Open for reading and writing; place the file pointer at the beginning of the file.
w' Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
(et je passe x et x+)
Et à ton avis... qu'elle est le bon mode ?
Moi perso... un petit a+ l'aurais bien fait non ? |
Anthony |
Le 07/01/2006 à 22:58 |
|
 Admin |
Si j'ai bien lu son post il veut remplacer un fichier par un nouveau non ? -- 
|
Takai |
Le 10/01/2006 à 14:13 |
|
|
salut fhx,
en recherchant bien tu aurais trouvé la meme en francais ,c'est plus sympa pour comprendre.Sinon tu penses bien que j'ai testé a+
mais le probleme n'est pas l'ouvetrure du fichier, le probleme est que j'obtiens 2 pages htlml alors que j'en ai une seule dont je dois modifier le tirtre. La premiere page est celle avant modification; et juste en dessous
j'obtiens une nouvelle page html avec mon titre modifié qui comporte les mêmes codes html que la premiere sauf le titre qui lui est modifié.
ma question est pourquoi???? |
Anthony |
Le 10/01/2006 à 19:59 |
|
 Admin |
Parce que tu n'ouvres pas le fichier avec le bon mode, ou alors tu le concatènes (tu l'ouvres tu récupères le contenu dans une variable et tu concatènes le tout que tu fous dans un fichier, et donc ça fait la merde qu'il y a actuellement). -- 
|
Takai |
Le 11/01/2006 à 12:05 |
|
|
salut
je pige pas pourquoi quand meme si tu sais ce qui cloche dans mon prog
ou si t'as 1 idée, ce serait sympa, mon stage se termine vendredi et je pars sur autre chose après.
En tout cas merci d'avoir répondu a mes messages, je referais du developpement web d'ici un mois ou deux pour mon site sur l'aviation et l'espace que je vais préparer.
términé ce prog title
unlink $file
refopen par la suite en ecriture
fwrite(newfile,file) et ca marche nickel....
4 semaines pour ca, c'est dur la prog....
a bientôt et merci pour tout.! |