Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MySQL] Jak posortować tablice?
Forum PHP.pl > Forum > PHP
danielv13
Mam taki skrypcik:
  1. <?php
  2. $id = addslashes($_GET['id']);
  3. connect();
  4. $q = mysql_query("SELECT * FROM zamowienia WHERE id = '$id'") or die(mysql_error());
  5. while ( $r = mysql_fetch_array($q) )
  6. {
  7. $przedmioty = explode("|", $r['przedmiotyid']);
  8. $przed = $r['przedmiotyid'];
  9.  
  10. $zap = mysql_query("SELECT * FROM produkty WHERE id in (".implode(",", $przedmioty)."0) 
  11. AND firma = '".$_SESSION['firma_in_shop']."'") or die(mysql_error());
  12. while ( $s = mysql_fetch_array($zap) )
  13. {
  14. $numery = $s['id']."|";
  15. $string = str_replace($numery, '', $przed);
  16. $lol .= $string;
  17. }
  18. // -------------- PROBLEM? ---------------
  19. $q = mysql_query("UPDATE zamowienia SET przedmiotyid = '$string' WHERE id = '$id'");
  20. print 'Usunieto zamówienie!';
  21.  
  22. }
  23. ?>

Skrypt działa tak:
Cel jego to usunięcie id produktów danego klienta
Pobiera id zamówienia i id przedmiotów z tego zamówienia w postaci: 4|5|3|6|
Te numery id rozdzielam funkcją explode i pobieram numery id które należą do danego klienta, ale tutaj pojawia się problem. Mianowicie nie wiem jak pobrać je tak, aby były uporządkowane od najmniejszej, można go rozwiązać też tak, aby znaleźć inne rozwiązanie jak usunąć z ciągu typu 4|3|5|6| numer id wyciągnięte drugim zapytaniem (where firma=) i zaktualizować je..

Dozgonna wdzięczność za pomoc!
Kosa_03
Z tego co wiem to nie wiesz jak posortować tablicę ...
Otóż tablice w MySQL sortuje się tak: do zapytania dodajesz ORDER BY nazwa kolumny, wg której chcesz posortować tabelę ASC (gdy rosnąco) lub DESC (gdy malejąco)

Przykład:
SELECT * FROM zamowienia WHERE id = '$id' ORDER BY przedmiotyid ASC

Na polski biggrin.gif Wyszukaj wszystko z tabeli zamowienia gdzie id równa się zmiennej $id, posortuj rosnąco według kolumny przedmiotyid

Takie zapytanie zwraca tabelę odrazu posortowaną.

Taka wskazówka: Jeśli będziesz często wyszukiwał dane przez kolumny, które nie są kluczami podstawowymi, np. Kolumna Imie to radziłbym te wiersze poindeksować... Zyskasz na czasie wyszukiwania danych smile.gif
danielv13
Yhh źle zrozumiałeś sad.gif
Darti
  1. <?php
  2. $id = addslashes($_GET['id']);
  3. connect();
  4. $q = mysql_query("SELECT REPLACE(przedmiotyid, '|', ',') FROM zamowienia WHERE id = '$id'") or die(mysql_error());
  5. $r = mysql_fetch_row($q);
  6. $zap = "UPDATE zamowienia SET przedmioty =(
  7. SELECT GROUP_CONCAT( DISTINCT id
  8. ORDER BY id ASC
  9. SEPARATOR '|' )
  10. FROM produkty
  11. WHERE id
  12. NOT IN ({r[0]}) AND firma = '".$_SESSION['firma_in_shop']."' ) WHERE id = $id";
  13. $q = mysql_query($zap);
  14. print 'Usunieto zamówienie!';
  15. }
  16. ?>
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.