Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sposoby zapisywania/odczytywania danych
Forum PHP.pl > Forum > PHP
MP1
Potrzebne do skryptu F3Kartki.
Zastanawiam się, który sposób byłby lepszy. Może ktoś doradzić?

Sposób 1.
Kod
dane_kat|||nazwa|costam|cos||nazwa2|costam|cos

Tutaj potrzebna jest funkcja, która to odczyta do zmiennych. Zrobiłbym tutaj też drugą, która odczyta dane konkretnej kartki.

Sposób 2.
  1. <?php
  2.  
  3. $kartka[0]=Array(&#092;"...\"); $kartka[1]=Array(\"...\");
  4.  
  5. ?>


Wiadomo, w panelu admina lepiej zapisywać jest ten pierwszy sposób - mniej pisania kodu... i może być mniej problemów. Z drugiej strony może lepszy byłby jednak ten drugi sposób, bo nie trzeba kombinować z funkcjami, załadujesz plik, masz już wszystkie dane bez problemu i też mniej kodu (szybsze ładowanie). Pierwszy sposób w przypadku dużej ilości kartek w kategorii może być trochę wolniejszy... (czego bym nie chciał).

Który wg. was sposób jest lepszy? Macie jakieś argumenty, zalety do proponowanego sposobu?
mike
Najlepszym sposobem do przechowywania danych jest baza danych. Jeżeli nie chcesz lub nie możesz skożystać z bazy to :
Cytat(MP1 @ 2004-12-04 12:26:53)
Potrzebne do skryptu F3Kartki.
Sposób 1.
Kod
dane_kat|||nazwa|costam|cos||nazwa2|costam|cos

Tutaj potrzebna jest funkcja, która to odczyta do zmiennych. Zrobiłbym tutaj też drugą, która odczyta dane konkretnej kartki.

Funkcje, których potrzebujesz to explode() i implode(). Użycie ich jest bardzo proste. Co sprowadza pierwszy sposób do drugiego.

Wniosek 1. Jaki z tego wniosek. Twoje sposoby są niemalże takie same i nie bedzie wiekszej różnicy.
Wniosek 2. Skożystaj z bazy danych.
DeyV
również popieram sposób pierwszy, choć może nieco inaczej to umotywuję.

Podstawowa zaleta takiego rozwiązania, to to, że nie masz ryzyka,że skrypt Ci wysypie błędy, z uwagi na to, że w którymś miejscu pojawił się błąd, i jest fatal error php.
Wiesz również, że nawet jeśli ktoś miałby dostęp do tego pliku, to nie spowoduje Ci żadnych szkód w systemie.

Oczywiście, przy dużej ilości danych jest to metoda wolniejsza.
Jednak w takiej systuacji jest już niemal konieczne użycie baz danych, dlatego rozwiązanie znane z przykładu nr. 2 stosowane jest raczej żadko.
Vengeance
ja moze dodam ze mozes trzymac w pliku txt
tablice z danymi w postaci zserializowanej [ serialize() ] i poprzez unserialize() ja odczytywac, "wkladac" do zmiennej i potem dalej operowac.
MP1
Z tego wniosek, że będę musiał prawdopodobnie zrobić wybór pomiędzy jednym a drugim sposobem - użytkownicy sami sobie wybiorą. :-) Zanim jeszcze zdecyduję, mam kilka pytań.
1. O ile wolniejszy może być pierwszy sposób od drugiego? Przykładowo: jedna osoba ma w kategorii kartek 30, druga 100, trzecia 300.
2. Czy tym co mają ograniczony transfer to np. przy 100 kartkach może generowanie zmiennych zjadać dużo?
Odpowiedź może być trudna, ale może ktoś ma już w tym doświadczenie...

Prawpopodobnie jednak przejdę do pierwszego sposobu - łatwiej będzie zapisywać, mniejsze prawdopodobieństwo błędów (zasugerował DeyV).
Skrypt ma taki podział kategorii:
--nadkategoria--
----podkategoria--
------kartka1
------kartka2, itp...
Plik danych kartek to plik podkategorii.
Jak ktoś będzie chciał prowadzić jakiś duży serwis kartkowy, ma przestrzeń i nie musi pakować do kategorii 100, 200 lub więcej kartek.
Zrobię raczej podobnie z plikami konfiguracyjnymi.


Pomimo tego, że drugi sposób jest trudniejszy w zapisywaniu/edytowaniu/usuwaniu danych z pliku, jednak jest prostszy w wykorzystaniu. Np. jak nie będzie żadnej kartki w nadkategorii, wyświetli się pusta. Jest na to rozwiązanie (sprawdzić, czy pierwsza z nich nie jest 0), lecz może być więcej niespodzianek. W zmiennych znane mi są 2 niespodzianki, które raczej nie wystąpią: złe znaki (zapobieganie: str_replace(...)) i brak danych (jak nie będzie błędów w administracji, to to nie powinno wystąpić, chyba że użytkownik ręcznie coś namiesza).

Czy ktoś wie, jakie niespodzianki mogą wystąpić przy używaniu pierwszego sposobu? Bo jeszcze jutro mogę wrócić do zmiennych.


Następna mi znana niespodzianka! Gdy jakieś pole pomiędzy | a | będzie puste (czyli będzie ||), brane to będzie prawdopodobnie za następną kartkę, a następne się nie będą wyświetlały. Tu będę musiał zrobić sprawdzanie, czy wszystkie pola są wpisane.

Czy są jakieś znaki, które pomiędzy | a | nie mogą wystąpić?
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.