Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z edycja z tablic na plikach
Forum PHP.pl > Forum > PHP
Volume
Pisze skrypt niusow, na razie napisalem zapis do pliku, ktory jest w postaci:
Cytat
|| temat`tresc`data
- gdzie jak widac " || " separuje dla tablic nowe niusy a " ` " separuje poszczegolne dane niusa. Ta czesc dziala ok, ale stanalem w miejscu w cześci edycji. Po prostu nie wiem jak sie zabrac za ta edycje, nie wiem jak mozna by wydobyc i zedytowac konkretna tablice.

Zalozmy, ze mam juz zapis w pliku plik.txt:
Cytat
|| temat1`tresc1`data|| tema2`tres3`data|| temat3`tresc3`data

Wiec chcac wyedytowac najpierw wyodrebniam dane:
  1. $wszystkie_dane = file_get_contents('plik.txt');
  2. $dane = explode("||", $wszystkie_dane);
  3. $daneszczegolowe = explode("`", $dane[$i]);;
no i teraz nie wiem jak po otwarciu pliku przez fopen() zapisac przez fwrite() tylko te dane szczegolowe...

Calosc wyglada tak:
  1. <?php
  2. if(!empty($submit))
  3. {
  4. // zapisuje dane do pliku txt
  5. if(!empty($submit) && !empty($tresc) && !empty($tytul))
  6. {
  7. $tresc=$_POST["tresc"];
  8. $tytul=$_POST["tytul"];
  9. $plik="plik.txt";
  10.  
  11. $tresc=stripslashes($tresc);
  12. $tresc=str_replace("\n","<br />",$tresc);
  13.  
  14. $czas=date("Y-m-d H:i:s");
  15.  
  16. $fp=fopen($plik, "r+");
  17. $czas=$czas.@fread($fp, filesize($plik));
  18.  
  19. rewind($fp);
  20. flock($fp, 2);
  21. fwrite($fp, '||'.$tytul.'`'.$tresc.'`'.$czas);
  22. flock($fp, 3);
  23. fclose($fp);
  24. header ('location: index.php?news=wyslany');
  25. }
  26. else
  27. {
  28. echo '<p>Wypelnij wszystkie pola</p><p><a href="java script:history.back();">Cofaj</a></p>';
  29. }
  30. }
  31. else if($news=='wyslany')
  32. {
  33. echo '<p>News wyslany</p><p><a href="index.php">Dodaj kolejnt news</a></p>';
  34. }
  35. else if($news=='edit')
  36. {
  37. // wyswietla tematy poszczegolne z edycja w formularzach
  38. $wszystkie_dane = file_get_contents('plik.txt');
  39. $dane = explode("||", $wszystkie_dane);
  40. $all = count($dane);
  41.  
  42.  
  43.  
  44. for ($i = 0; $i<$all; $i++)
  45. {
  46. $daneszczegolowe = explode("`", $dane[$i]);
  47. if(!$n)
  48. {
  49. if(!empty($dane[$i])) echo '<p><a href="index.php?news=edit&n='.$i.'">tytul: '.$daneszczegolowe[0].'</a></p>';
  50. }
  51. else if($_GET['n']==$i)
  52. {
  53. if(!empty($dane[$i]))
  54. {
  55. echo '<p>edytuj News</p><form action="?news=editone" method="post"><fieldset><legend>Formularz do edycji newsa</legend><label for="tytul">Tytul newsa:</label><br /><input name="tytul" value="'.$daneszczegolowe[0].'" /><br /><label for="tresc">Tresc newsa: </label><br /><textarea name="tresc" rows="10" cols="40">'.$daneszczegolowe[1].'</textarea><br /><input name="submit" type="submit" value=" Wyslij " /></fieldset></form>';
  56. }
  57. }
  58. }
  59. }
  60. else if($news=='editone')
  61. {
  62. $wszystkie_dane = file_get_contents('plik.txt');
  63. $dane = explode("||", $wszystkie_dane);
  64. $daneszczegolowe = explode("`", $dane[$i]);;
  65.  
  66. // no i tu mam problem :/
  67.  
  68. }
  69. else if($news=='wyedytowane')
  70. {
  71. echo '<p>News wyedytowany</p><p><a href="index.php?news=edit">Edytuj dalej...</a></p>';
  72. }
  73. else
  74. {
  75. echo '
  76. <p>Dodaj News</p>
  77. <form method="post">
  78. <fieldset>
  79. <legend>Formularz do wyslania newsa</legend>
  80. <label for="tytul">Tytul newsa:</label><br /><input name="tytul" /><br />
  81. <label for="tresc">Tresc newsa: </label><br /><textarea name="tresc" rows="10" cols="40"></textarea>
  82. <br /><input name="submit" type="submit" value=" Wyslij " />
  83. </fieldset>
  84. </form>
  85. <p>Edycje...</p>
  86. ';
  87. echo '<p><a href="?news=edit">Edycja newsa</a></p>';
  88. echo '<p><a href="news.php">Zobacz Newsy</a></p>';
  89. }
  90.  
  91. ?>
maly_swd
Najlepiej daj w tablicy tez ID niusa , to ulatwi edycje, zapis podmiane:)
Volume
masz na mysli to:
  1. $wszystkie_dane = file_get_contents('plik.txt');
  2. $dane = explode("||", $wszystkie_dane);
  3. $daneszczegolowe = explode("`", $dane[$i]);;
?
Wlasnie nie wiem jak wykonac ta podmiane...
maly_swd
chodzi mi o to czy mozesz zmodyfikowac plik z danymi
z
|| temat1`tresc1`data|| tema2`tres3`data|| temat3`tresc3`data
na
||id`temat1`tresc1`data|| id`tema2`tres3`data||id` temat3`tresc3`data
Volume
moge, ale nie wiem jak by to ID niusa mialoby pomoc mi w wyciaganiu tych danych? Moze jakis przyklad albo jeszcze podpowiedz jak to wykorzystac?
piotr94
dajesz explode po || do tabeli $newsy
  1. $newsy=explode('||',$tresc_z_pliku_txt);
  2. $nic=array_shift($newsy);

wtedy:
  1. foreach($newsy as $val){
  2. $tmp=explode('`',$val);
  3. $newsy_po_id[$tmp[0]]['tresc']=$tmp[2];
  4. $newsy_po_id[$tmp[0]]['tytul']=$tmp[1];
  5. $newsy_po_id[$tmp[0]]['data']=$tmp[3];
  6. }

i masz już newsy w tablicy pogrupowane po id, potem jak coś edytujesz to pobierasz z formularza edycji id newsa i edytujesz (np. edycja treści)
  1. $newsy_po_id[$_POST['id']]['tresc']=$_POST['tresc_z_formularza'];

i zapisujesz:
  1. foreach($newsy_po_id as $key=>$val){
  2. fputs($plik,'||'.$key.'`'.$val['tytul'].'`'.$val['tresc'].'`'.$val['data']);
  3. }
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.