Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] [MySQL] Jak posortować tablice?
danielv13
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


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!

Ten post edytował danielv13 29.10.2007, 20:53:49
Go to the top of the page
+Quote Post
Kosa_03
post
Post #2





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

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Kosa_03 29.10.2007, 21:51:40
Go to the top of the page
+Quote Post
danielv13
post
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


Yhh źle zrozumiałeś (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Darti
post
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


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


Ten post edytował Darti 1.11.2007, 02:48:46
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: 22.08.2025 - 20:07