Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]dane z pliku txt na stronie www za pomocą php
amatorph
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 29.11.2014

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


Witam,
Mam takie pytanie: w zaki sposób można umieścić dane na stronie www z pliku txt. Chodzi mi o meta tagi, title i jakieś drobne informacje.
kod strony to:
  1. <?php
  2. // zmienna potrzebna do prawidlowego wczytania includowanych plikow
  3. $add_site = true;
  4. ?>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  7. <meta http-equiv="Reply-to" content="kess@snug.pl" />
  8. <meta name="Author" content="Krzysztof Szypulski" />
  9. <title>Szablon strony WWW z wykorzystaniem PHP</title>
  10.  
  11.  
  12. </head>
  13.  
  14. </body>
  15. </html>


Jesto szablon pobrany ze strony http://www.kess.snug.pl/?pid=23&sid=10

i teraz chciałbym aby metatagi były wczytywane z pliku meta.txt:
  1. id|description|keywords|title|tekst1|tekst2|tekst3
  2. 1|description1|keywords1|title1|1tekst1|1tekst2|1tekst3
  3. 2|description2|keywords2|title2|2tekst1|2tekst2|2tekst3

Jak narazie utknąłem na tym że trzeba taki plik otworzyć w następujący sposób
  1. <?php
  2. $fp = fopen("meta.txt", "r");
  3. ?>

i siedzę nad tym już 2 dni.
Proszę o pomoc i z góry dziękuję

Ten post edytował amatorph 29.11.2014, 17:36:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
amatorph
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 29.11.2014

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


Jednak PHP_EOL też nie działa prawidłowo. Chodzi o to, że ta funkcja też dodaje dodatkową linię. Poprzednio napisałem, że jest ok bo tak mi się wyświetlały strony. Było to chyba spowodowane zapisywaniem wersji strony w pamięci podręcznej lub może wczytałem stronę zanim zmiany dotarły na serwer.

Chciałbym przeedytować następujący plik meta.csv zmieniając w nim dane w drugiej linii:
  1. dane1|dane2|dane3|dane4|dane5|dane6|dane7|1
  2. dane1|dane2|dane3|dane4|dane5|dane6|dane7|2
  3. dane1|dane2|dane3|dane4|dane5|dane6|dane7|3
  4. dane1|dane2|dane3|dane4|dane5|dane6|dane7|4


Do tego celu mam formularz index.php:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <?php
  3. $go = $_GET['go'];
  4. $fp = fopen('meta.csv', 'r');
  5. flock($fp, 1);
  6. $i = 0;
  7. while(!feof($fp) && $i < $go) {
  8. $linia = fgets($fp, 200);
  9. $i++;
  10. }
  11. flock($fp, 3);
  12. fclose($fp);
  13. $conf=explode ('|', $linia);
  14.  
  15. echo "<form action='edit.php' method='POST'>
  16. <tr>
  17. <td>dane1<br><textarea name='dane1' cols='25' rows='7'>$conf[0]</textarea></td>
  18. <td>dane2<br><textarea name='dane2' cols='25' rows='7'>$conf[1]</textarea></td>
  19. <td>dane3<br><textarea name='dane3' cols='25' rows='7'>$conf[2]</textarea></td>
  20. <td>dane4<br><textarea name='dane4' cols='25' rows='7'>$conf[3]</textarea></td>
  21. <td>dane5<br><textarea name='dane5' cols='25' rows='7'>$conf[4]</textarea></td>
  22. <td>dane6<br><textarea name='dane6' cols='25' rows='7'>$conf[5]</textarea></td>
  23. <td>dane7<br><textarea name='dane7' cols='25' rows='7'>$conf[6]</textarea></td>
  24. <td>nr<br><textarea name='nr' cols='25' rows='7'>$conf[7]</textarea></td>
  25. <input type='submit' name='submit' value='zapisz' />"
  26. ?>
  27. </head>
  28.  
  29. <div class="nav">
  30. <a href="index.html" >Strona główna</a>
  31. <a href="strona1.html">strona1</a>
  32. <a href="strona2.html">strona1</a>
  33. <a href="strona3.html">strona1</a>
  34. </div>
  35. </body>
  36. </html>
  37.  


i dalej skrypt edit.php który zmienia dane:

  1. <?php
  2. $new=
  3. $_POST['dane1']. '|' .
  4. $_POST['dane2']. '|' .
  5. $_POST['dane3']. '|' .
  6. $_POST['dane4']. '|' .
  7. $_POST['dane5']. '|' .
  8. $_POST['dane6']. '|' .
  9. $_POST['dane7']. '|' .
  10. $_POST['nr'];
  11.  
  12. $new=stripslashes($new).PHP_EOL;
  13.  
  14.  
  15. function edycja_linii ($filename, $index, $line) {
  16. $file = file ($filename);
  17. $file[$index] = $line;
  18. $fp = fopen ($filename, "w");
  19. flock($fp, LOCK_EX);
  20. for( $w = 0; $w < count($file); $w++ )
  21. {
  22. fwrite ($fp, $file[$w]);
  23. }
  24. flock($fp, LOCK_UN);
  25. fclose($fp);
  26. }
  27. //określenie która linia ma być zmieniona
  28. $nr = $_POST['nr'];
  29. $nrl=$nr-1;
  30. //uruchomienie funkcji zmiany danych w linii:
  31. edycja_linii ('meta.csv', $nrl , $new);
  32. ?>
  33.  


Niestety efekt jest taki, że za każdym razem gdy próbuję edytować dane to przy każdym kolejnym razie skrypt dodaje linię jak poniżej:
1. plik oryginalny

  1. dane1|dane2|dane3|dane4|dane5|dane6|dane7|1[CR][LF]
  2. dane1|dane2|dane3|dane4|dane5|dane6|dane7|2[CR][LF]
  3. dane1|dane2|dane3|dane4|dane5|dane6|dane7|3[CR][LF]
  4. dane1|dane2|dane3|dane4|dane5|dane6|dane7|4[CR][LF]


2. Po zmianie danych w drugiej linii skrypt dodaje nową linię
  1. dane1|dane2|dane3|dane4|dane5|dane6|dane7|1[CR][LF]
  2. zmiana1|dane2|dane3|dane4|dane5|dane6|dane7|2[CR][LF]
  3. [LF]
  4. dane1|dane2|dane3|dane4|dane5|dane6|dane7|3[CR][LF]
  5. dane1|dane2|dane3|dane4|dane5|dane6|dane7|4[CR][LF]


3. Po każdej kolejnej zmianie danych jest tak samo.

  1. dane1|dane2|dane3|dane4|dane5|dane6|dane7|1[CR][LF]
  2. zmiana1|zmiana2|dane3|dane4|dane5|dane6|dane7|2[CR][LF]
  3. [LF]
  4. [LF]
  5. dane1|dane2|dane3|dane4|dane5|dane6|dane7|3[CR][LF]
  6. dane1|dane2|dane3|dane4|dane5|dane6|dane7|4[CR][LF]


W sumie to już próbowałem PHP_EOL w różnych kombinacjach, dodawałem też "\r\n" i same "\r" lub "\n". To nic nie daje.
W jaki sposób sobie z tym poradzić?

Ten post edytował amatorph 10.07.2016, 00:04:06
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 01:25