Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]edycja postów
Forum PHP.pl > Forum > Przedszkole
bllade
jak ja zacznę opisywać mój problem to nikt nie będzie wiedział o co chodzi ^^
a więc najlepiej będzie jak sami zobaczycie co tam się dzieje

problem jest z edycją postów w księdze gości
zamiast się edytować, usuwają się
http://83.14.28.235/~spec3i15/Praca/index.php
login: admin
hasło : admin

a to pliki źródłowe do edycji postów

plik edytuj.php
  1. <?
  2. $i=0;
  3. $licznik=1;
  4. $tablica = file("goscie.txt");
  5. echo "<form action='edytuj_1.php' method='POST'>";
  6. foreach ($tablica as $userek)
  7. {
  8. echo "<table>";
  9. $tuser = explode('|',$userek);
  10. echo "<tr>";
  11. $tab[$i]=$i;
  12. echo "<input type='checkbox' name='$tab[$i]''/>";
  13. echo "<td>$licznik</td>";
  14. echo "<td><b>Imie:</b> $tuser[0]</td>";
  15. echo "</tr><tr><td></td>";
  16. if(!($tuser[1]==''))
  17. {
  18. echo "<td><b>E-mail:</b><a href='mailto:$tuser[1]' >$tuser[1]</a></td>";
  19. echo "</tr><tr><td></td>";
  20. }
  21. if(!($tuser[2]==''))
  22. {
  23. echo "<td><b>Strona:</b><a href='http://$tuser[2]' target='blank'>$tuser[2]</a></td>";
  24. echo "</tr><tr><td></td>";
  25. }
  26. $tuser[3]=str_replace("szkola","***",$tuser[3]);
  27. $tuser[3]=str_replace("zse","***",$tuser[3]);
  28. $tuser[3]=str_replace("sala","***",$tuser[3]);
  29. echo "<td><b>Wpis:</b> $tuser[3]</td>";
  30. echo "</tr><tr><td></td>";
  31. echo "</table>";
  32. $licznik++;
  33. $i++;
  34. echo "<hr size='1' color='black' width='random'>";
  35. }
  36. echo "<input type='hidden' name='i' value='$i'/>";
  37. echo "<input type='submit' value='Edytuj'/>";
  38. echo "</form>";
  39. echo "<form action='admin.php' method='POST'> <input type='submit' value='Wróć'/> </form>";
  40.  
  41. ?>


plik edytuj_1.php
  1. <?
  2. $dane=file("goscie.txt");
  3. $plik=fopen("goscie.txt", "w+");
  4. echo "<form action='zamien.php' method='POST'>";
  5. echo "<table>";
  6. for($j=0;$j<count($dane);$j++)
  7. {
  8. $tuser = explode('|',$dane[$j]);
  9. echo "<tr>";
  10. echo "<td>Imie</td>";
  11. echo "<td><input type='text' value='$tuser[0]' name='pole[]'/></td>";
  12. echo "</tr><tr>";
  13. echo "<td>Mail</td>";
  14. echo "<td><input type='text' value='$tuser[1]' name='pole[]'/></td>";
  15. echo "</tr><tr>";
  16. echo "<td>Strona</td>";
  17. echo "<td><input type='text' value='$tuser[2]' name='pole[]'/></td>";
  18. echo "</tr><tr>";
  19. echo "<td>Wpis</td>";
  20. echo "<td><textarea name='pole[]' cols='30' rows='5'>$tuser[3]</textarea></td>";
  21. echo "</tr>";
  22. }
  23. echo "<tr><td>";
  24. echo "<input type='submit' value='Zamien'/>";
  25. echo "</td></tr>";
  26. echo "</table>";
  27. echo "</form>";
  28. fclose($plik);
  29. echo "<a href='admin.php'>Wpisani goscie</a>";
  30. ?>


plik zamien.php
  1. <?
  2. $plik=fopen("goscie.txt", "w");
  3. for($j=0;$j<count($pole);$j++)
  4. {
  5. if($j%4==0 && $j!=0)
  6. fwrite($plik,"\n");
  7. fwrite($plik,"$pole[$j]|");
  8. }
  9. fwrite($plik,"\n");
  10. fclose($plik);
  11. echo "<a href='admin.php'>Wpisani goscie</a>";
  12. ?>
d3f3nd3r
plik edytuj_1.php

odczytujesz plik goscie.txt a jego zawartość umieszczasz w $dane następnie kasujesz wszystko w goscie.txt http://php.net/manual/pl/function.fopen.php

plik zamien.php otwiera już "wyczyszczony" plik goscie.txt robi pętle z niczego i zapisuje nic.

Skoro przesyłasz coś metodą POST to dane odczytujesz $_POST['nazwa_zmiennej']

a tu tego nie ma - coś bezmyślnie przerobione całkowicie bez sensu.

bllade
no nie tak całkiem bez sensu bo na localu działało haha.gif
czyli atrybut fopen() powinien być ustawiony na "a+"?

a z tym przesyłaniem zmiennej $_POST['nazwa zniennej'] to próbowałem i nie wiem gdzie to ma być ^^
d3f3nd3r
Masz rację na krasnalu działało (register_globals=on) ale jak dałeś Edytuj a potem nic nie zrobiłeś np. zamknąłeś przeglądarkę to efekt był taki sam.

Pozatym zaznaczasz co chcesz edytować a skrypt i tak edytuje wszystko.

Aby to działało to w pliku edytuj_1.php usuń linię 

  1. $plik=fopen("goscie.txt", "w+");


poczytaj o odczycie zmiennych z tablicy POST, potem pozmieniaj co trzeba.

Acha i ja dałbym if-a (związanego zcheckbox) i pomyślał o atrybucie "hidden" w inpucie, aby edycja odbywała się na wybranyh wpisach a nie na wszystkich.

bllade
coś pozmieniałem i teraz działa trochę inaczej
można edytować tylko jeden post, ale niezależnie od tego który zaznaczę zawsze wysyła się ten ostatni haha.gif
i tylko ten ostatni, jak zaznaczę kilka do edycji to pokazuje się tylko jeden

no i do edycji przesyłane są tylko dwa pola ; o
imie i wpis

oczywiście nic się nie edytuje ^^

i z tym czyszczeniem plików już zrobiłem, zmieniłem atrybuty ^^
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.