Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Funkcja sortująca
PHPapprentice
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.03.2014

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


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
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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?
Go to the top of the page
+Quote Post
johny_s
post
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


Posortuj dane w bazie przy pobieraniu, a nie u siebie.
Go to the top of the page
+Quote Post
PHPapprentice
post
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.03.2014

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


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 ? (IMG:style_emoticons/default/smile.gif)

Dzięki wielkie za zainteresowanie topickiem.

Pozdrawiam
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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.
Go to the top of the page
+Quote Post
PHPapprentice
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.03.2014

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


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 (IMG:style_emoticons/default/smile.gif) ?
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Komplikujesz coraz bardziej.

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

?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 21:42