Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Operacje na tekstowej bazie danych
Forum PHP.pl > Forum > Przedszkole
Gereid
Witam, zajmuje się stworzeniem prostej galerii zdjęć dla znajomego fotografa, stworzyłem już podstawowe skrypty które odpowiadają za odczytanie danych z pliku txt i odpowiednie wyświetlenie go na stronie.

Niestety jednak aby strona była użyteczna musi istnieć możliwość edycji danych - pojawiają się więc problem, w jaki sposób dotrzeć do konkretnego wiersza w pliku i edytować jego wartości.

przykładowy plik bazy wygląda tak:
  1. scieżka opis id id kategori
  2. 1.JPG wew 1 1
  3. 2.JPG wew 2 2
  4. 3.JPG ewe 3 2
  5. 4.JPG wwe 4 1
  6. 5.JPG weq 5 1
  7. 6.JPG qwe 6 1
  8. 7.JPG qwe 7 2
  9. 8.JPG qwe 8 2
  10. 9.JPG qeq 9 1
  11. 9.JPG qeq 10 1
  12. 2.JPG wew 11 1
  13. 3.JPG ewe 12 1
  14. 4.JPG wwe 13 1
  15. 5.JPG weq 14 2


chciałbym teraz stworzyć funkcję która wyszuka wiersz o id np. 11 (mogą być pomieszane) i skasuje go (lub zastąpi takim samym z zmienionymi wartościami)

Mam nadzieje że w miarę jasno przedstawiłem swój problem, i z góry dziękuje za pomoc

Pozdrawiam, Kuba
peter13135
Właśnie po to są relacyjne bazy danych smile.gif
Jak nie masz mysqla, to użyj sqlite.
Od biedy użyj formatyu xml, json, czy cvs.

Generalnie musisz wczytać cały plik, nanieść zmiany i potem zapisać nową wartość. Pomocne mogą być funkcje preg_match_all, albo prościej explode
Gereid
idąc za radą postanowiłem zmienić bazę na mysql.

Wszystko zaczyna nabierać rąk i nóg, jednak potknąłem się na jednej rzeczy - w tabeli zdjecia jedna z kolumn powinna przybierać automatyczną wartość, timestamp. Po części się to udało, ale wartosc ta wyswietla się jako 2012-06-30 11:50:05 , a chciałbym aby była to jedna wartość liczbowa w sekundach - ułatwiło by to sortowanie obrazków po dacie
csharp
a po TIMESTAMP nie można sortować? można przecież. Masz tam pełną datę.

jak chcesz jakiś spersonalizowany układ daty to z PHP sobie załaduj (time() - określa datę w sekundach) razem z dodawaniem zdjęcia.

znalazłem ew. jak konwertować do sekund... bo sam mysql chyba nie ma takiej możliwości - ale tu nie jestem pewien - googluj smile.gif

http://stackoverflow.com/questions/2438828...time-to-seconds
gereid
wydaje mi sie ze znalazlem rozwiązanie smile.gif

  1.  
  2. $this->timestamp[] = strtotime($row->timestamp);
  3.  


zwraca date mysqlową w unixie. dzieki temu bede mogl w prosty sposob operować sekundami tak aby zdjęcie znalazło się pod/nad poprzednim smile.gif
Mephistofeles
Tak się tego nie robi. Jeśli chcesz mieć możliwość zmiany kolejności, to zrób dodatkowe pole, nie zmieniaj daty dodania ;/. Chyba, że chodzi Ci tylko o sortowanie, wtedy wystarczy ORDER BY.
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.