Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edytowanie newsa
Forum PHP.pl > Forum > Przedszkole
MissMoneypenny
Zaczęłam pisac prosty skrypt newsów (dopiero się uczę) i chcę spróbować dodać do niego panel administracyjny w dodawaniem newsów (to sobie poradziłam) ale gorzej jest już z edycją wpisów sad.gif .Nie wiem jak się zabrać do tego. Może ktoś mógłby mi doradzić w jaki sposób to najprościej wykonać. Nie chodzi mi o gotowca tj. żeby mi ktoś napisał bo chcę się nauczyć. Jeśli ktoś może mi podpowiedzieć to byłabym bardzo wdzięczna.
NuLL
Zakładam, że jest na MySQL-u oraz masz jakieś pole typu ID albo coś podobnego.

Klikasz na link Edytuj - w linku przekazujesz ID newsa który ma być edytowany. Pobierasz go z bazy - umieszczasz newsa w formularzu. Do formularza dodajesz pole ukryte z ID newsa który ma zostać zupdateowany, że tak brzydko powiem smile.gif Wysyłasz formularz a na stronie gdzie jest on wykonywany wykonujesz zapytanie UPDATE news SET tu pola WHERE news_id=tu id z pola ukrytego.

Mam nadzieję, że dość prosto się wyraziłem smile.gif
MissMoneypenny
No niestety całość jest na plikach zapomniałam dodać na początku withstupidsmiley.gif . I nie wiem jak zapisać dane po zmienieniu ich w formularzu
NuLL
Przydała by się jakaś struktura tychże plików bądź ew. skrypt który je dodaje.
MissMoneypenny
Przeszukałam forum i znalazłam coś co mogłabym wykorzystać w swoim sktypcie. Próbowałam dostosować to do moich danych ale coś robię żle. Nie zapisuje mi pliku a jak już zapisze to zamiast spodziewanych danych jest Array. Nie potrafię znależć błędu, może ktoś będzie wiedział co jest źle. przedstwawiam ten fragment kodu:
  1. <?php
  2. if(!($_POST['id']==&#092;"\")){
  3. $plik=&#092;"newsy.txt\";
  4. $tablica=file($plik);
  5. $ile=count($tablica);
  6. $nr=$_GET['edit_id'];
  7. unset($tablica[$nr]);
  8. for($i=0; $i<=$nr-1; $i++){
  9. $tab[]=$tablica[$i];
  10. }
  11. $tab[]=&#092;"$_POST['id']|$_POST['dodal']|$_POST['nazwa']|$_POST['tresc']n\";
  12. for($i=$nr+1; $i<=$ile-1; $i++){
  13. $tab[]=$tablica[$i];
  14. }
  15. $plik=&#092;"newsy.txt\";
  16. $fp=fopen($plik, &#092;"w\");
  17. flock($fp, 2);
  18. fwrite($fp, $tab);
  19. flock($fp, 3);
  20. fclose($fp);
  21.  
  22. }
  23. ?>

http://forum.php.pl/index.php?showtopic=6758&hl=

To jest to co znalazłam na forum snitch.gif
Z góry dzięki za wskazówki co robię nie tak
NuLL
A teraz po mojemu - wydaje mi iż ta metoda jest łatwiejsza.

Pliki newsy.dat
Kod
NuLL$$null_pl@o2.pl$$30.06.2005$$Tytul testowy nr.3$$A to jest tresc jakas tam sobie|@|MissMoneyPenny$$missy@wp.pl$$28.06.2005$$Tytul testowy nr 2$$A to jest tresc jakas tam sobie tyleze troche inna|@|NuLL$$null_pl@o2.pl$$27.06.2005$$Tytul testowy nr 1$$A to jest tresc jakas tam sobie ale jeszcze troche inna|@|


Ten plik trochę jest nieczytelny ale nie oto chodzi. Poszczególne wpisy są oddzielane dzięki takiemu dziwnemu separatorowi |@| - po aby było małe prawdopodobieśtwo powtórzenia. Kolejne pola wpisu są oddzielone dzięki $$.

I do zabawy

Odczyt newsów z pliku.
  1. <?php
  2.  
  3. $_tresc=file_get_contents('newsy.dat');//odczyt całości pliku
  4. $_newsy=explode(&#092;"|@|\",$_tresc);//->do tablicy. Element tablicy - wiersz z newsem
  5. //Usuwamy puste wiersze z tablicy :-)
  6. $_newsy = array_diff($_newsy, array(''));
  7. //zamieniamy kolejne wiersze na tablice aby bylo latwiej
  8. $_temp=array();//tymczasowa tablica
  9. foreach($_newsy as $_news){
  10.     $_temp[]=explode('$$',$_news);//separator - opisane wyżej
  11. }
  12. $_newsy=$_temp;
  13. //i tu możesz coś robić ale dla testu.
  14. echo '<pre>';
  15. print_r($_newsy)
  16. echo '</pre>';
  17.  
  18. ?>


Dodanie newsa biggrin.gif - zakładam, że dane są wypełnione
  1. <?php
  2. $_news=$_POST['kto'].'$$'.$_POST['email'].'$$'.date(&#092;"d-m-Y\",time()).'$$'.$_POST['tytul'].'$$'.$_POST['tresc'];//mamy nowy news sklejony
  3. $_news.=&#092;"|@|\";//dopisujemy separator - wspomniany wyzej
  4. //a teraz sam zapis
  5. $_tresc=file_get_contents('newsy.dat');//odczyt całości pliku
  6. //doklejamy na poczatku tekstu w pliku
  7. $_tresc=$_news.$_tresc;//news doklejony
  8. file_put_content('newsy.dat',$_tresc);//zapisujemy
  9. ?>


Nie prawda, że proste :?:

Teraz usuwanie - zakładam ze newsy maja numery tak jak sa w pliku zapisane
  1. <?php
  2.  
  3. $id=2;//chcemy usunac drugi wpis
  4. //tablica jest indeksowana od 0 a nie od 1 tak wiec trzeba odjac
  5. $id=$id-1;
  6. $_tresc=file_get_contents('newsy.dat');//wiadomo
  7. $_newsy=explode('|@|',$_tresc);//zamieniamy w tablice
  8. $_tresc='';//czyscimy , bedzie zmienna wykorzystana drugi raz
  9. $_newsy[$id]='';//pusta linia w miejsce danego newsa
  10. //Usuwamy puste wiersze z tablicy :-)
  11. $_newsy = array_diff($_newsy, array(''));
  12. //zamiana tablicy z newsami na powrot w lancuch
  13. $_tresc=implode('|@|',$_newsy);
  14. //zapis do pliku
  15. file_put_contents('newsy.dat',$_tresc);
  16.  
  17. ?>


I teraz o co prosiłaś - czyli edycja - zakładam, żę edytujesz news o numerze dwa.
Beda dwa przyklady: jak dostać się do newsa o numerze i jak nadpisać news numer dwa.

Najpierw odczyt - dzieki niemu odtrzymasz zmienne ktore bedziesz mogla wstawic do formularza
  1. <?php
  2.  
  3. //Patrzy wyzej
  4. $id=2;
  5. $id=$id-1;
  6. $_tresc=file_get_contents('newsy.dat');
  7. $_newsy=explode('|@|',$_tresc);
  8. $_news_do_edycji=$_newsy[$id];
  9. list($autor,$email,$data,$tytul,$tresc)=explode('$$',$_news_do_edycji);
  10.  
  11. ?>

No dobra trzeba zapisać :roll2: tak więc co następuje
Zakładam, że przekazałaś sobie w polu ukrytym numer newsa do edycji
  1. <?php
  2.  
  3. $id=$_POST['id'];//no to mamy numer newsa do nadpisania
  4. $id=$id-1;//tak czy tak tu też trzeb odjąć
  5. $_news=$_POST['kto'].'$$'.$_POST['email'].'$$'.date(&#092;"d-m-Y\",time()).'$$'.$_POST['tytul'].'$$'.$_POST['tresc'];//przy wedrowalo z formularza
  6. $_tresc=file_get_contents('newsy.dat');//czytamy
  7. $_newsy=explode('|@|',$_tresc);// do tablicy z tym...
  8. $tresc='';
  9. //podmieniamy na zedytowany
  10. $_newsy[$id]=$_news;
  11. //zamiana w lanuch
  12. $_tresc=implode('|@|',$_newsy);
  13. file_put_contents('newsy.dat',$_tresc);
  14.  
  15. ?>


Tak wygląda cały system newsów od strony php - mam nadzieję, że zostanę doceniony tongue.gif winksmiley.jpg
MissMoneypenny
Dzięki wielkie! Zaraz sobie to wszystko przeanalizuje. Nareszcie ktoś mi to że tak powiem łopatologicznie wytłumaczył tongue.gif . Jeszcze raz wielkie dzięki za twoją pracę winksmiley.jpg
NuLL
Próbowałem najprościej jak umiem smile.gif Jakbyś czegoś nie rozumiała napisz. Opisy funkcji w manualu ale za dużo ich tu nie użyłem i za trudne nie są smile.gif

AHa - pisane z palca więc mogą być literówki.
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.