Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Podmiana znaku w otwieranym pliku, pomoc w modyfikacji potrzebna
lee2
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


Cześć,

mam jak mniemam prosty problem: Mam plik tekstowy o zawartości <p>sample</p>

obok istnieje formularz w którym mam przycisk i pole textowe po kliku zmienna info jest przesyłana do pliku php o takim kodzie:

  1. <?php
  2. if (isset($_POST['info']))
  3. {
  4. $file = fopen("test.txt", 'w') or die("Nie można otworzyć pliku");
  5. fwrite($file, $_POST['info']);
  6. fclose($file);
  7. echo "Dane zapisano do pliku";
  8. }
  9. ?>


chciałbym aby słowo sample było zamienione tym co zostało wpisane do pola textowego i zapisane do pliku
dało by się coś z tego zrobić?

Ten post edytował lee2 16.12.2010, 14:57:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
_olo_1984
post
Post #2





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

Ostrzeżenie: (0%)
-----


rozumiem, że chodzi o to, żeby to zapisywało się w pliku pomiędzy <p> a </p> ?
  1. //...
  2. fwrite($file, '<p>'.$_POST['info'].'</p>');
  3. //...

lub w inny sposób
  1. file_put_contents( 'test.txt', '<p>'.$_POST['info'].'</p>' );
Go to the top of the page
+Quote Post
lee2
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


chodzi o to zapisywał zamiast konkretnego ciągu znaków - w tym przypadku "sample"

otwiera plik txt > wyszukuje słowo sample > zamienia je tym co kryje się pod zmienną wysyłana z formularza

Go to the top of the page
+Quote Post
_olo_1984
post
Post #4





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

Ostrzeżenie: (0%)
-----


aha, no to
  1. if (isset($_POST['info']))
  2. {
  3. // pobieram dane z pliku
  4. $dane = file_get_contents( 'test.txt' );
  5. // zamieniam, przy bardziej skomplikowanym ciągu użyłbym preg_replace
  6. $dane = str_replace( 'sample', $_POST['info'], $dane );
  7. // zapisuje
  8. file_put_contents( 'test.txt', $dane );
  9. }
Go to the top of the page
+Quote Post
lee2
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


bardzo dziękuję wszystko działa!

pojawiła sie natomiast opcja rozbudowy....mam kod w postaci
  1. <a href="t.php"><img border="0" src="images/btn_1.png" alt="" width="90" height="65" /></a>
  2. <a href="t.php"><img border="0" src="images/btn_2.png" alt="" width="90" height="65" /></a>
  3. <a href="t.php"><img border="0" src="images/btn_3.png" alt="" width="90" height="65" /></a>
  4.  
  5. <form name="myForm" action="" method="post">
  6. <input type="text" name="info" /><br />
  7. <input type="submit" value="Zapisz" /> <br /><textarea name="ttt" cols="72" rows="12">
  8. <?php
  9. if (isset($_POST['info']))
  10. {
  11. // pobieram dane z pliku
  12. $dane = file_get_contents('test1.txt');
  13. $dane = str_replace('sample', $_POST['info'], $dane );
  14. // wyświetlam
  15. echo $dane;
  16. }
  17. ?>
  18. </textarea>
  19. </form>


jak widać są 3 przyciski linki i teraz chciałabym uzyskać efekt

1. po kliknięciu w obrazek wczytuje się plik test1.txt, test2.txt lub test4.txt w zależności od klikniętego obrazka obrazka
2. we wczytanym tekście odszukuje ciąg znaków "sample"
3. zamienia po kliknięciu w przycisk "zapisz" wyświetla wczytany fragment z podmienionym łańcuchem


to juz chyba koniec mojej drogi przez mękę z php...
Go to the top of the page
+Quote Post
_olo_1984
post
Post #6





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

Ostrzeżenie: (0%)
-----


zapewne można to zrobić przy uzyciu js, jeżeli używamy tylko php to przykładowo rozbudowany kod, który cały będzie w pliku index.php
  1. <?php
  2. if(isset($_GET['plik']))
  3. {
  4. switch($_GET['plik']) // pobieram dane z pliku
  5. {
  6. case 'text1':
  7. $_SESSION['dane'] = file_get_contents('test1.txt');
  8. break;
  9.  
  10. case 'text2':
  11. $_SESSION['dane'] = file_get_contents('test2.txt');
  12. break;
  13.  
  14. case 'text3':
  15. $_SESSION['dane'] = file_get_contents('test3.txt');
  16. break;
  17.  
  18. default:
  19. $_SESSION['dane'] = false;
  20. }
  21. }
  22. else
  23. {
  24. $_SESSION['dane'] = false;
  25. }
  26. ?>
  27. <a href="index.php?plik=text1"><img border="0" src="images/btn_1.png" alt="" width="90" height="65" /></a>
  28. <a href="index.php?plik=text2"><img border="0" src="images/btn_2.png" alt="" width="90" height="65" /></a>
  29. <a href="index.php?plik=text3"><img border="0" src="images/btn_3.png" alt="" width="90" height="65" /></a>
  30.  
  31. <form name="myForm" action="index.php" method="post">
  32. <input type="text" name="info" /><br />
  33. <input type="submit" value="Zapisz" /> <br /><textarea name="ttt" cols="72" rows="12">
  34. <?php
  35. if (isset($_POST['info']))
  36. {
  37. $dane = ( $_SESSION['dane'] === false ) ? 'Klik najpierw na obrazek !' : str_replace('sample', $_POST['info'], $_SESSION['dane'] );
  38. // wyświetlam
  39. echo $dane;
  40. }
  41. ?>
  42. </textarea>
  43. </form>


skorzystałem tutaj z tablic $_GET oraz sesji. Kod jest w miarę prosty, oczywiście o zabezpieczenia musisz zadbać sam.
Najpierw trzeba kliknąć na któryś z obrazków, do $_SESSION['dane'] wczyta Ci tekst z pliku, w zależności od klikniętego obrazka (a właściwie linku) - pętla switch. Jeżeli nie klikniesz to zmienna sesyjna ma wartosc false, a po kliknięciu "Zapisz" pojawia się stosowny komunikat. Mam nadzieję że pomogłem, a przynajmniej rozjaśniłem trochę. Pozdr.
Go to the top of the page
+Quote Post
lee2
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


bardzo dziękuję za pomoc, przykład jest jak najbardziej dydaktyczny.

jedynie zastanawia mnie fakt:
  1. <form name="myForm" action="index.php" method="post">
- nie działa (nie wczytuje plików)

  1. <form name="myForm" action="" method="post">
- działa



pozdrawiam i dzięki!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 23:52