Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Lista z mozliwoscia edycji, Jak sie do tego zabrac?
Macieqqq
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.04.2007

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


Prosze o pomoc, tzn. o wytlumaczenie co po kolei robic, aby powstalo cos takiego (nie prosze o gotowy kod):

1. W formularzu wpisujemy dane dotyczace wpisu: dana_1, dana_2, itd. Zapisujemy go do pliku.
2. Wyswietlamy tylko wybrane dane z tego pliku (np. w tabelce):

Kod
wpis_1_dana_1          wpis_1_dana_3          wpis_1_dana_7
wpis_2_dana_1          wpis_2_dana_3          wpis_2_dana_7
wpis_3_dana_1          wpis_3_dana_3          wpis_3_dana_7
wpis_4_dana_1          wpis_4_dana_3          wpis_4_dana_7


3. Po kliknieciu na dany wpis, nastepuje przejscie do strony, gdzie wyswietla sie wszystkie dane o wpisie.
4. Mozliwosc edycji i usuwania wpisow, np.:

Kod
wpis_1_dana_1          wpis_1_dana_3          wpis_1_dana_7          edytuj     usun



Zalezy mi, aby zrobic to w PHP.

Teoretycznie wiam jak zrobic punkt 1 i 2, ale chcialbym sprawdzic czy dobrze mysle.



Z gory dziekuje
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
puz219
post
Post #2





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 1.07.2007

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


No to spróbuj tak:

w pliku dodaj.php na końcu daj przecinek, a nie przejście do nowej linii
  1. <?php
  2. $dane = $dana1.",".$dana2.",".$dana3.",";
  3. ?>


Teraz w pliku lista.php, przy pobieraniu wartości z pliku, odpowiednio modyfikujesz $exp, tak, żeby po 3 wartościach dawało linie <hr>, a w przeciwnym wypadku dajesz "-", np. tak:

  1. <?php
  2. $exp = explode(",",$value);
  3. $licz = count($exp);
  4. for($i = 0; $i<$licz; $i++) {
  5. echo $exp[$i];
  6. if($i % 3 == 0) { echo "<hr />"; }
  7. else { echo "-"; }
  8. }
  9. ?>


Musisz tylko trochę pokombinować z modulo, bo rekordy w tablicy są liczone od 0 i jak zostawisz tak, jak napisałem, to zaraz po pierwszym rekordzie wyświetli ci linię, bo 0/3 nie daje żadnej reszty, więc warunek jest prawdziwy i wyświetli ci linię.

A jeśli chcesz, żeby mieć szczegóły danego rekordu po kliknięciu na link, to możesz stworzyć pliki o takiej nazwie jak $dana1, $dana2, itd. i potem w pliku lista.php w pętli for dajesz tak:

  1. <?php
  2. echo "<a href=\"pokaz_szczegoly.php?nazwa=".$exp[$i]."\">".$exp[$i]."</a>";
  3. ?>


Teraz tworzysz plik pokaz_szczegoly.php i dajesz na początek np. coś takiego:
  1. <?php
  2. $plik = $_GET["nazwa"].".txt";
  3. ?>
, a w dalszej części kodu, to wczytasz plik, za pomocą explode wczytasz dane do tablicy i potem wyświetlisz w żądany przez ciebie sposób.

Co do edycji i usuwania rekordów, to zauważ, że jeśli plik wpisy.txt podzielisz względem przecinków, to każde dodane przez ciebie dane mają klucze, np. 0-2 - pierwsza linijka, 3-5 - druga linijka, 6-8 - trzecia linijka, itd.

Więc teraz możesz do każdej linijki stworzyć link edytuj i usuń, do którego dodasz parametr z początkowym i końcowym kluczem, np. coś takiego
  1. <?php
  2. echo "<a href=\"edit.php?p=0&k=2\">edytuj</a>";
  3. ?>

tylko, że zamiast 0 i 2 zrobisz, tak, żeby automatycznie liczyło ci początek i koniec, a w pliku edit.php, robisz formularz, taki jak w pliku dodaj.php, tylko, że możesz jeszcze do niego dodać wartości pobrane z pliku wpisy.txt, dla odpowiednich kluczy
  1. <?php
  2. $wartosc_1= $_GET["p"];
  3. $wartosc_2= $wartosc_1+1;
  4. $wartosc_3= $_GET["k"];
  5.  
  6. $file = file("wpisy.txt"); 
  7. foreach($file as $value) {
  8. $exp = explode(",",$value);
  9. $edit1=$exp[$wartosc_1];
  10. $edit2=$exp[$wartosc_2];
  11. $edit3=$exp[$wartosc_3];
  12. }
  13.  
  14. echo '<form action="przetworz_edytuj.php" method="post"> 
  15. <input type="text" name="dana1" value="'.$edit1.'" /><br /> 
  16. <input type="text" name="dana2" value="'.$edit2.'" /><br /> 
  17. <input type="text" name="dana3" value="'.$edit3.'" /><br /> 
  18. <input type="hidden" name="begin" value="'.$wartosc_1.'" />
  19. <input type="submit" value="Edytuj" /> 
  20. </form>';
  21. ?>


Teraz po kliknięciu w edytuj, dane są wysyłane do pliku przetworz_edytuj.php, w którym najpierw wczytasz do zmiennej wartości z pliku wpisy.txt do miejsca, w którym zaczyna sie edycja, np. w taki sposób:
  1. <?php
  2. $poczatek = $_POST["begin"];
  3. $koniec = $poczatek+3;
  4.  
  5. $_dana1 = $_POST["dana1"];
  6. $_dana2 = $_POST["dana2"];
  7. $_dana3 = $_POST["dana3"];
  8.  
  9. $file = file("wpisy.txt"); 
  10. foreach($file as $value) {
  11. $exp = explode(",",$value);
  12. $licz = count($exp);
  13.  
  14.  
  15. for($y=0; $y<$poczatek; $y++) {
  16.  $zapisz .= $exp[$y];
  17.  $zapisz .= ",";
  18. }
  19. $zapisz .= $_dana1.",".$_dana2.",".$_dana3.",";
  20.  
  21. for($i=$koniec; $i<$licz; $i++) {
  22.  $zapisz .= $exp[$i];
  23.  $zapisz .= ",";
  24. }
  25.  
  26. }
  27.  
  28. $edytowane_wartosci = $zapisz;
  29. ?>


Teraz to juz tylko zapisujesz do pliku wpisy.txt zmienną $edytowane_wartosci, tylko nie dodając na końcu pliku, tylko zamieniając zawartość pliku na zawartośc zmiennej $edytowane_wartosci.

Usuwanie robisz w podobny sposób, tylko, że usuwasz tą linię np. 0-2, resztę zapisujesz do zmiennej np. $usuniete_wartosci i znów podmieniasz zawartość pliku wpisy.txt na zawartość zmiennej $usuniete_wartosci.

I to by było na tyle.

Mam nadzieję, że pomogłem.

Pozdrawiam.

Ten post edytował puz219 30.01.2008, 11:46:40
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 11:31