Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Funkcja sortująca
Forum PHP.pl > Forum > Przedszkole
PHPapprentice
Witam.

Mam problem z wynalezieniem funkcji sortującej. Mam bazę danych z regionami oraz sub-regionami gdzie , regionem jest na przykład Szkocja a subregionem Aberdeenshire itd.

Mam dwie tabele :

Jedna przechowuje regiony i ma pola takie jak : ID, oraz nazwa regionu.
Druga tabela przechowuje subregiony i ma takie pola jak : ID subregionu, ID main regionu do którego należy ten sub region oraz nazwa sub regionu.

Chciałbym wydobyć dane z tabeli sub regionów i posortować nazwy sub regionów alfabetycznie tak żeby ID sub regionu było nadal na tej samej pozycji tablicy co nazwa sub regionu.

Problem jest wtedy kiedy wpisuje do jednej tablicy nazwy subregionów a do drugiej wartości ID tych sub regionów. Wtedy kiedy posortuje tablicę z nazwami nie mogę już przyporządkować w pętli wartości jednej tablicy do drugiej. A chciałbym zrobić tak żebym mógł w jakiś sposób posortować obie tablice tak żeby te wartości nadal się zgadzały, a tablica z nazwami subregionów była posortowana alfabetycznie.

Miałby ktoś jakiś pomysł.

Pozdrawiam
trueblue
Cytat(PHPapprentice @ 15.11.2014, 17:17:50 ) *
Problem jest wtedy kiedy wpisuje do jednej tablicy nazwy subregionów a do drugiej wartości ID tych sub regionów. Wtedy kiedy posortuje tablicę z nazwami nie mogę już przyporządkować w pętli wartości jednej tablicy do drugiej.

Masz na myśli dwie odrębne tablice w PHP? Dlaczego nie przechowujesz tego w jednej?
johny_s
Posortuj dane w bazie przy pobieraniu, a nie u siebie.
PHPapprentice
Cytat
Masz na myśli dwie odrębne tablice w PHP? Dlaczego nie przechowujesz tego w jednej?


Trueblue : przechowuje te dane w dwóch tablicach dlatego że w funkcji tworze element <select> gdzie atrybutem value elementu <option> jest właśnie ID a opisem tego elementu <option> jest nazwa subregionu.

Czy da się w jakiś sposób wypisywać w value klucze tablicy zakładając że przechowywał bym te dane w jednej tablicy w postaci np :

  1. $array[id] = nazwa_subregionu;


Bo wartości tablicy to wiem jak wypisać ale czy da się jakoś wypisać klucze ?

Cytat
Posortuj dane w bazie przy pobieraniu, a nie u siebie.


johny_s : A w jaki sposób mogę posortować te dane w trakcie wyciągania ich z bazy danych. Jak byś mógł dać przykład zapytania MySQL ? smile.gif

Dzięki wielkie za zainteresowanie topickiem.

Pozdrawiam
trueblue
Cytat(PHPapprentice @ 16.11.2014, 10:35:15 ) *
Trueblue : przechowuje te dane w dwóch tablicach dlatego że w funkcji tworze element <select> gdzie atrybutem value elementu <option> jest właśnie ID a opisem tego elementu <option> jest nazwa subregionu.

Czy da się w jakiś sposób wypisywać w value klucze tablicy zakładając że przechowywał bym te dane w jednej tablicy w postaci np :

  1. $array[id] = nazwa_subregionu;


Bo wartości tablicy to wiem jak wypisać ale czy da się jakoś wypisać klucze ?

Zależy jak pobierasz dane z zapytania. Ale da się.
Choć nie wiem jakie to ma znaczenie w Twoim przypadku, bo równie dobrze zarówno id jak i nazwa mogą być elementami tablicy i nie spowoduje to komplikacji przy tworzeniu select.
PHPapprentice
OK dzięki za odpowiedź.

Chyba wiem jak to zrobię. Po prostu wstawię jako wartości tablicy nazwę i ID a później je będę rozdzielał jakąś funkcją PHP np. substr lub inną.

  1. $Array[0] = 'Nazwa|ID';
  2. $Name = substr($Array[0],0,strpos($Array[0],'|'));
  3. $ID = substr($Array[0],strpos($Array[0],'|'),strlen($Array[0]));


Coś chyba w ten deseń , chyba że coś poknociłem.

Jak myślicie smile.gif ?
trueblue
Komplikujesz coraz bardziej.

Nie możesz tak:
  1. $array[0]=array('nazwa'=>'blabla','id'=>1);
  2. $array[0]=array('nazwa'=>'xxxx','id'=>2);

?
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.