Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Tabele, Jak to ugryźć
hekate20
post 21.01.2012, 22:36:48
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.01.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witajcie.

Kolejny krok do przodu i kolejny problem.. :/

Otóż chcę zrobić tabelę, w której znajduje się 31 ras psów.

Na stronie znajduje się formularz, ktróy ma ułatwić zadanie wyboru odpowiedniej rasy psa. Oczywiście jest po kilka opcji w okienku.


http://www.voila.pl/041/uvpj9/index.php?get=1&f=1

Teraz pytanie jakim sposobem moge to zrobić?

Próbowałam tym:


Kod
$dane = array(
        'rasy' => array('Akita', 'Alaskan malamut', 'American stafford terier', 'Basset hound', 'Beagle', 'Bernardyn', 'Bereński pies pasterski', 'Bokser', 'Cane corso', 'Chart afgański', 'Chichuahua', 'Chow chow', 'Dalmatyńczyk', 'Doberman', 'Dog niemiecki', 'Fila brasileiro', 'Golden retriver', 'Grzywacz chiński', 'Jamnik', 'Labrador retriver', 'Mastif neapolitański', 'Maltańczyk', 'Nowofunland', 'Owczarek niemiecki', 'Owczarek kaukasi', 'Pekińczyk', 'Ratlerek', 'Rottweiler', 'Seter irlandzki', 'Shit-tzu', 'Sznaucer miniaturowy', 'Tosa inu', 'Wilczarz irlandzki', 'York'),
        'olbrzymi' => array('Bernardyn', 'Chart afgański', 'Dog niemiecki', 'Fila brasileiro', 'Mastif neapolitański', 'Nowofunland', 'Owczarek kaukaski', 'Wilczarz irlandzki'),
        'duży' => array('Alaskan malamut', 'Bereński pies pasterski', 'Cane corso', 'Dalmatyńczyk', 'Doberman', 'Golden retriver', 'Labrador retriver', 'Owczarek niemiecki', 'Rottweiler', 'Seter irlandzki', 'Tosa inu'),
        'średni' => array('Akita', 'American stafford terier', 'Bokser', 'Chow chow'),
        'mały' => array('Basset hound', 'Beagle', 'Grzywacz chiński', 'Jamnik', 'Maltańczyk', 'Pekińczyk', 'Shit-tzu', 'Sznaucer miniaturowy'),
        'miniaturowy' => array('Chichuahua', 'Ratlerek', 'York'),
idt...

Ale stwierdziłam, że to strasznie dużo pisania. Czy można to jakoś zoptymalizować, lub inaczej to zrobić? Podkreślę, że nie chodzi mi o bazę danych, tylko normalnie znalezienie i wyszukanie odpowiedniej rasy po odchaczeniu formularza i odnalezienie jej w tablicy oraz wyświetlenie.

Mam nadzieję, że da się to jakoś prosto i zwięźle napisać... smile.gif



--------------------
Żeby nie było, jestem kobietą. :)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
untorched
post 21.01.2012, 22:47:32
Post #2





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Dlaczego nie chcesz wykorzystać w tym wypadku bazy danych? Będzie to na pewno prostsze w napisaniu i zarządzaniu, zwłaszcza, że chcesz przechowywać jak się domyślam sporo tych ras.
Go to the top of the page
+Quote Post
hekate20
post 21.01.2012, 22:51:59
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.01.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ja wiem, że to będzie prostsze, ale mam to na localu to po pierwsze, a po drugie to jest projekt na zaliczenie...( bazy danych będziemy mieli dopiero w 4 semestrze) Niestety nie mam się kogo zapytać o pomoc, bo moj wykładowaca mnie totalnie olewa a na wszelkie pytania szybko zbywa... sad.gif


--------------------
Żeby nie było, jestem kobietą. :)
Go to the top of the page
+Quote Post
untorched
post 21.01.2012, 23:07:21
Post #4





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Napisz klasę, która będzie twoją bazą danych. Będzie ona przechowywać wszystkie "parametry" psa, funkcję dodającą psy(którą będziesz wykonywać w __construct, aby łatwo dodawało się nowe rasy) oraz funkcję poszukującą psów z danymi wymaganiami. Wydaję mi się, że będzie to najlepsze rozwiązanie w tym wypadku.
Go to the top of the page
+Quote Post
hekate20
post 21.01.2012, 23:09:15
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.01.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dziękuję za podpowiedź, ale czy mógłbyś bardziej rozwinąc ten temat?

Wiem, ze jestem upierdliwa... sorki :/ ale zależy mi aby się tego nauczyć...


--------------------
Żeby nie było, jestem kobietą. :)
Go to the top of the page
+Quote Post
tiraeth
post 21.01.2012, 23:17:58
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Stwórz sobie arkusz w Excelu, pierwsza kolumna to RASY, druga to WIELKOŚĆ. Wyeksportuj arkusz do pliku CSV (jest taka opcja w Excelu, jest też taka w OpenOffice).

Potem w PHP masz fgetcsv - przykład z manuala w zupełności wystarczy.

Możesz też użyć jakiejś prostej klasy/funkcji, która przerobi csv na tablicę w taki sposób, że otrzymasz:

  1. <?php
  2.  
  3. $data = array(
  4. 'Akita' => 'średni',
  5. 'Ratlerek' => 'miniaturowy',
  6. // ...
  7. );


A z tym to już sobie zrobisz, co tam będziesz chciała. W każdym razie, jeśli chodzi o wyszukiwanie, to masz na takiej tablicy kilka opcji.

1) Sortowanie wg wielkości:

  1. <?php
  2.  
  3. $data = array();
  4.  
  5. // zaladowanie danych ...
  6.  
  7. function filtruj_wielkosc($tablica, $wielkosc) {
  8. foreach ($tablica as $key => $value)
  9. if ($value === $wielkosc) unset($tablica[$key];
  10. return $tablica;
  11. }
  12.  
  13. $data_miniaturki = filtruj_wielkosc($data, 'miniaturka');


2) Znajdowanie wielkości dla rasy - ot wybranie wartości dla odpowiedniego klucza.
Powód edycji: [tiraeth]: [tiraeth]:
Go to the top of the page
+Quote Post
hekate20
post 21.01.2012, 23:19:06
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.01.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzięki. Mam nadzieję, ze się uda. smile.gif


--------------------
Żeby nie było, jestem kobietą. :)
Go to the top of the page
+Quote Post
untorched
post 21.01.2012, 23:25:43
Post #8





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Z nudów napisałem prostą klasę, która mogłaby zostać użyta jako prosta baza. Może się komuś przyda ; )

  1. class Dog {
  2.  
  3. private $_rasa = array();
  4. private $_atrybuty = array();
  5.  
  6. public function dodaj_psa($rasa, $rozmiar, $spacery, $dzieci, $aktywnosc, $typ, $tresura, $charakter, $dom, $koszty)
  7. {
  8. $this->_rasa[] = $rasa;
  9.  
  10. $this->_atrybuty[] = array(
  11. 'rozmiar' => $rozmiar,
  12. 'spacery' => $spacery,
  13. 'dzieci' => $dzieci,
  14. 'aktywnosc' => $aktywnosc,
  15. 'typ' => $typ,
  16. 'tresura' => $tresura,
  17. 'charakter' => $charakter,
  18. 'dom' => $dom,
  19. 'koszty' => $koszty
  20. );
  21. }
  22.  
  23. public function __construct()
  24. {
  25. $this->dodaj_psa('Rasa1', '1', '1', '1', '1', '1', '1', '1', '1', '1');
  26. $this->dodaj_psa('Rasa2', '2', '2', '2', '2', '2', '2', '2', '2', '2');
  27. }
  28.  
  29. public function szukaj_psa($rozmiar, $spacery, $dzieci, $aktywnosc, $typ, $tresura, $charakter, $dom, $koszty)
  30. {
  31. $poszukiwany = array(
  32. 'rozmiar' => $rozmiar,
  33. 'spacery' => $spacery,
  34. 'dzieci' => $dzieci,
  35. 'aktywnosc' => $aktywnosc,
  36. 'typ' => $typ,
  37. 'tresura' => $tresura,
  38. 'charakter' => $charakter,
  39. 'dom' => $dom,
  40. 'koszty' => $koszty
  41. );
  42.  
  43. $zwrot = array();
  44.  
  45. for($i = 0; $i < count($this->_atrybuty); $i++)
  46. {
  47. if($poszukiwany == $this->_atrybuty[$i])
  48. {
  49. $zwrot[] = $this->_rasa[$i];
  50. }
  51. }
  52.  
  53. return $zwrot;
  54. }
  55.  
  56. };
  57.  
  58. $pies = new Dog();
  59. echo '<pre>';
  60. print_r($pies->szukaj_psa('1','1','1','1','1','1','1','1','1','1'));
  61. echo '</pre>';


Ten post edytował untorched 21.01.2012, 23:27:33
Go to the top of the page
+Quote Post
pmir13
post 21.01.2012, 23:32:23
Post #9





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


Dołączam się do pytania untorched z początku wątku - dlaczego nie chcesz korzystać z bazy danych?
Pomysł jaki masz na ten projekt nadaje się idealnie do nauki jednocześnie php i mysql. Aż się prosi o skorzystanie z możliwości jakie to połączenie daje.
Robienie tego na tablicach to tak jakbyś chciała trzymać psa w akwarium. W sumie się da, jeżeli będzie dostatecznie duże i nie wlejemy do niego wody, ale po co?
Obiektowo już lepiej, wciąż jednak pozostaje jakiś niedosyt.
Jeżeli faktycznie chcesz się czegoś nauczyć a nie chodzi tylko o odbębnienie projektu na zaliczenie to nie odkładaj nauki baz danych na ktoryś tam semestr usprawiedliwiając się że to będzie potem. Dodatkowo pewnie masz wampa, xamppa albo innego krasnala, w których baza danych mysql jest domyślnie instalowana, odpada więc tłumaczenie że to na localu.
Jeśli jednak baza danych absolutnie nie wchodzi w grę to to może inny pomysł na projekt? Taki, który by bardziej pasował do samego php?
Go to the top of the page
+Quote Post
hekate20
post 22.01.2012, 00:01:26
Post #10





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.01.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedzi. Już się biorę za ćwiczenia. smile.gif

Pmir13, wiem, że do tego najlepsza będzie baza i z pewnością ją wykorzystam, bo nie chciałabym, aby ta stronka legła zakurzona w czeluściach mego komputera, tylko zwiedziła wielki i nieograniczony internet. wink.gif
Niestety termin sesji jest coraz nliżej (3 tygodnie) a ja mam jeszcze sporo do zrobienia na tej stronce. Ze względu na to, że mój wykładowca mnie dyskryminuje, zbywa każde pytanie i prośbę o pomoc, musze sobie radzić jak mogę... :/ Cała stronka jest bardzo rozudowana, a sam layout w ps zajął mi dużo czasu, a co dopiero mówić o wypełnieniu wszystkich podstron tongue.gif
Posiadam wampa i któregoś dnia chciałam stworzyć bazę do tego projektu, niestety za każdym razem wyrzucało mi jakiś koszmarny błąd :/, ale o tym inny razem, dopiero po sesji jak się za bazę wezmę i nauka c++ mnie nie przygniecie biggrin.gif

1 rok najgorszy, zwłaszcza dla grafika komputerowego i do tego humanisty. biggrin.gif



--------------------
Żeby nie było, jestem kobietą. :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 21:51