Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Zapis skryptu php do pliku
Forum PHP.pl > Forum > Przedszkole
xawer
Witam wszystkich.
Czy istnieje mozliwosc zapisu danych w postaci skryptu php do pliku? Nastepnie aby strona z przechywanymi danymi otwierala sie jako strona .php i wykonywala podane skrypty.

np.
Mam formularz, w ktorym jedno pole odpowiada podaniu jakiegos linku (np. http://gory.com/zdjecia/tartry.JPG ), a drugi, zeby podac jego nazwe np ( TATRY). Chcialbym, aby dane przedstawiane byly w postaci <a href="http://gory.com/zdjecia/tartry.JPG">GORY</a>

Wiem, ze link nalezy zapisac do jednej zmiennej, nazwe do drugiej i odpowiednio w php dodac te dane:

$dane = echo '"<a href=".link.">".nazwa."</a>"'
Te dane zapisac maja sie do pliku, jednak z poziomu pliku txt ich zadanie nie zostanie wykonane. Jest ktos w stanie pomoc mi w rozwiazaniu tego problemu? :/
b_chmura
nie wiem czemu ale pod górkę lecisz

tak na chłopski rozum nie lepiej będzie jeśli dane w pliku będziesz przechowywał w poniższy sposób:

Kod
nazwa1|link1
nazwa2|link2
nazwa3|link3
nazwa4|link4
...


i obsługiwał to przykładowym skryptem:

  1. <?php
  2. $filename = 'plik.txt';
  3. $file = file($filename);
  4.  
  5. foreach($file as $line)
  6. {
  7. $dana = explode('|', $line);
  8. echo '<a href="'.$dana[1].'">'.$dana[0].'</a>'
  9. }
  10. ?>


w/w skrypt wyświetli Ci wszystkie linki z ich nazwami.
xawer
Zrobilem tak jak powiedziales.

W pliku index.php znajduje sie formularz z polami o $pole1 i $pole2.
Zapisuje to do zmiennej $dane = $pole1."|".$pole2 do pliku .txt
Natomiast w drugim pliku, pliku 'podglad.php' wpisalem to co mi napisales. Zamiast jednak wyswietlania
wartosci z pliku 'plik.txt' nie wyswietla nic, pusta strone. Wiesz co moze byc nie tak?
b_chmura
masz włączone raportowanie błędów?
w 8 linijce zapomniałem o średniku na końcu.

Pamiętaj też o prawidłowej ścieżce do pliku.
xawer
tak, srednik wstawilem wczesniej. Plik znajduje sie w tym samym folderze co index.php i przegladaj.php
b_chmura
w takim razie sprawdź czy masz coś w pliku plik.txt w innym wypadku wina leży w innej części Twojego kodu
xawer
index.php wyglada w nastepujacy sposob:
  1. <?php
  2. $pole1 = trim($_POST['pole1']);
  3. $pole2 = trim($_POST['pole2']);
  4.  
  5. if (empty($pole1) and empty($pole2)) {
  6. echo '<div align=center> <form action="" method="post">
  7. Adres:<br>
  8. <input type="text" name="pole1" size=50 /><br />
  9. <br><br><br>Opis:<br>
  10. <textarea name="pole2" style="width: 500px; height:100px;">
  11. </textarea><br />
  12. <input type="submit" value="Zapisz" /></form>';
  13. }
  14.  
  15. else {
  16.  
  17. $dane = $pole1."|".$pole2."\n";
  18. $file = "baza.txt";
  19. $fp = fopen($file,"a");
  20. flock($fp, 2);
  21. fwrite($fp, $dane);
  22. flock($fp, 3);
  23. fclose($fp);
  24. echo "Link zostal zapisany!<br />";
  25.  
  26. echo "<a href=\"podglad.php\">Zobacz wpisane dane</a>";
  27. }
  28.  
  29. ?>


natomiast podglad.php
  1. <?php
  2. $filename = 'baza.txt';
  3. $file = file($filename);
  4.  
  5. foreach($file as $line)
  6. {
  7. $dana = explode('|', $line);
  8. echo '<a href="'.$dana[1].'">'.$dana[2].'</a>';
  9. }
  10. ?>


w pliku baza.txt wszystko zapisuje sie bezproblemowo. Naprawde nie wiem gdzie istnieje blad sad.gif
b_chmura
no ale kolego explode oddaje podzielony string w tablicy ponumerowaną od 0, czemu zmieniłeś przy echo na dana[1] i dana[2]?

zmień to tak jak powinno być

$dana[0] - nazwa
$dana[1] - link
xawer
No tak. Przepraszam za to. Sam nie wiem czemu to zrobilem wczesniej, ech.. wybacz.

Jeszcze jedno pytanie. W przypadku gdybym chcial dodac dodatkowe pola formularza typu: "Kto ten link podal" albo "O ktorej godzinie" .
W jaki posob moglbym zrobic wywietlanie tego w ten sposob:
'Dodano 2.12.2007 przez Uzytkownik
JAKIS TAM LINK"

Nie wiem jak to zrobic bo podajze $dana dzieli ten string na 2 czesci. Ale jak to zrobic zeby dzielilo na wiecej a zarazem podawalo je w osobnych linijkach? Bardzo prosze o pomoc
b_chmura
nie dzieli je na dwie części, dzieli je na te rozdzielone znakiem |

Kod
wartosc0|wartosc1|wartosc2|wartosc3|wartosc4|wartosc5...

każda wartość będzie w z miennej $dana[$i] gdzie $i to numer wartości
xawer
Super wielkie dzieki za pomoc!
Wszystko dziala znakomicie oprocz jednego szkopulu. Link dodany przez formularz dodaje sie do adresu strony.
Krotkomowiac po kliknieciu przycisku TATRY otwiera sie strona 'www.stronanaktorejjestskrypt.com/www.gory.com/zdjecia/tatry.JPG'
Niby z kodem wszystko ok, a jednak.
Tak przy okazji chcialbym ci bardzo podziekowac za pomoc b_chmura smile.gif jestes wielki!
b_chmura
w echo musisz dodać http:// przed $dana[0]
lub podając w formularzu link musisz podać http:// przed www.example.pl
xawer
Wszystko dziala jak nalezy. Jeszcze raz dziekuje b_chmura za pomoc smile.gif) pozdrawiam.
VonPiter
Mam baze
CODE

id||nazwa1||nazwa2||
id||nazwa1||nazwa2||


Nie mam problemu z odczytem i wyswietlaniem, ze zmiana danych w bazie oraz dopisywaniem rekordow, nie potrafie jednak usunac rekordu. Jak usunac np 5 z 10 rekordow ?
b_chmura
  1. <?php
  2. $dane = file($plik);
  3. $nr = 4; //numer linii do usunięcia (liczmy od 0)
  4.  
  5. unset($dane[$nr]);
  6.  
  7. file_put_contents($plik, $dane);
  8. ?>


EDIT
Cytat
Jak usunac np 5 z 10 rekordow ?

rozumiem że miałeś na myśli jak usunąć piąty z dziesięciu.
VonPiter
no jasne guitar.gif
chyba za dlugo siedze przy kompie , musze sie zresetowac sciana.gif

dzieki exclamation.gif!!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.