Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sortowaniem tabeli powstałej z wyniku pętli while.
Forum PHP.pl > Forum > PHP
bebzon_hc
Witam!
Mam mały problem.

Mam jedną pętlę while zagnieżdżoną w drugą pętlę.

Wyniki powstały chcę wrzucić do jednej tablicy i następnie chcę ją posortować według zawartości klucza 'id_orders_events'.
Poniżej kod:
  1. $newspapersByOffice = $dbh->selectNewspapersByOffice($office); // 1 ZAPYTANIE DO BAZY
  2.  
  3. while ($newspapersByOfficeArray = mysql_fetch_array($newspapersByOffice, MYSQL_BOTH))
  4. {
  5. $newspaper = $newspapersByOfficeArray['id_newspaper'];
  6. $orderEventSingle = $dbh->selectOrderEventSingle($newspaper); // 2 ZAPYTANIE DO BAZY
  7. while ($orderEventSingleArray = mysql_fetch_array($orderEventSingle, MYSQL_BOTH))
  8. {
  9. $orderEvents[] = array("date"=>$orderEventSingleArray['date'], "time"=>$orderEventSingleArray['time'], "name"=>$orderEventSingleArray['name'], "surname"=>$orderEventSingleArray['surname'], "firm_name"=>$orderEventSingleArray['firm_name'], "module_name"=>$orderEventSingleArray['module_name'], "id_orders_events"=>$orderEventSingleArray['id_orders_events'], "event_type"=>$orderEventSingleArray['event_type'], "newspaper_name"=>$orderEventSingleArray['newspaper_name']);
  10. }
  11. }
  12.  
  13. sort($orderEvents['id_orders_events'], SORT_NUMERIC);
  14.  
  15. foreach ($orderEvents as $orderEvent)
  16. { WYPLUWAM DANE }


Problem w tym, że wszystko dobrze działa z takim wyjątkiem, że kod sortuje bazę "$orderEvents" według pola "id_orders_events", ale według każdego etapu pierwszej pętli while.Wygląda to tak, że najpierw sorotuje wynik z pierwszej pętli while (1 tabela), później sortuje drugi wynik z pierwszej pętli while (2 tabele, 3, 4, n...) i wrzuca to do jeddej tabeli. ;/ zamiast sortować to jako jedną wielką tabelę to sortuje je jak dwie (3, 4, n...) osobne tabele.
proton
function.array-multisort.php

Przykład:

  1. $my_array = array();
  2. $keys = array();
  3.  
  4. $my_array[] = array('id' => 2, 'name' => 'Pies');
  5. $my_array[] = array('id' => 3, 'name' => 'Kot');
  6. $my_array[] = array('id' => 1, 'name' => 'Ryba');
  7. $my_array[] = array('id' => 5, 'name' => 'Sowa');
  8. $my_array[] = array('id' => 3, 'name' => 'Ptak');
  9.  
  10. foreach ($my_array as $array)
  11. {
  12. $keys[] = $array['id'];
  13. }
  14.  
  15. array_multisort($keys, SORT_ASC, $my_array);
  16.  
  17. echo '<pre>';
  18. print_r($my_array);
  19. echo '</pre>';


Albo w każdym przejściu tej drugiej pętli zrób tak:

  1. $orderEvents[$orderEventSingleArray['id_orders_events']] = array("date"=>$orderEventSingleArray['date'], "time"=>$orderEventSingleArray['time'], "name"=>$orderEventSingleArray['name'], "surname"=>$orderEventSingleArray['surname'], "firm_name"=>$orderEventSingleArray['firm_name'], "module_name"=>$orderEventSingleArray['module_name'], "id_orders_events"=>$orderEventSingleArray['id_orders_events'], "event_type"=>$orderEventSingleArray['event_type'], "newspaper_name"=>$orderEventSingleArray['newspaper_name']);


i sortuj tablicę $orderEvents według kluczy: function.ksort.php
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.