Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pętla while i wyświetlanie tych samych wyników
Forum PHP.pl > Forum > Przedszkole
Novy.
Mam taki kod:

  1. // wyswietla liste przedmiotow usera
  2. $items = mysql_query("SELECT * FROM inventory WHERE owner='".$_SESSION['id']."' AND (type='1' OR type='2' OR type='3')"); // wybierz wszystko z inv, gdzie wlasciciel = id zalogowanego i typ 1,2 lub 3
  3. while ($array = mysql_fetch_array($items)){
  4. $i++;
  5. echo "".$i.". ".$array['name']."<br>";
  6. }


Wszystko działa, wyświetla mi liste ktora wyglada tak:

1. Strzała
2. Strzała
3. Strzała
4. Mikstura PŻ
5. Mikstura PE
6. Mikstura PE


Czy dałoby się w pętli while zrobić takie coś, że zamiast wyświetlania tego samego w następnych linijkach obok nazwy w pierwszym niepowtarzającym się wyniku pisało np.: x3 ?
Efekt, który chciałbym otrzymać wyglądałby tak:

1. Strzała x3
2. Mikstura PŻ x1
3. Mikstura PE x2

wymyśliłem takie coś, ale nie wiem czy to jest dobre rozwiązanie jeśli da się to wykonać w pętli smile.gif

  1. $strzaly = mysql_num_rows(mysql_query("SELECT * FROM inventory WHERE owner='".$_SESSION['id']."' AND type='1'"));
  2. $health = mysql_num_rows(mysql_query("SELECT * FROM inventory WHERE owner='".$_SESSION['id']."' AND type='2'"));
  3. $mana = mysql_num_rows(mysql_query("SELECT * FROM inventory WHERE owner='".$_SESSION['id']."' AND type='3'"));
  4. if($strzaly > 0){
  5. echo "Strzała x".$strzaly."<br>";
  6. }
  7. if($health > 0){
  8. echo "Mikstura PŻ x".$health."<br>";
  9. }
  10. if($mana > 0){
  11. echo "Mikstura PE x".$mana."<br>";
  12. }


Ten kod działa tak jak chcę, ale gdybym dodał inne przedmioty do bazy o innym type to musiałbym dopisywać ciągle pewną część kodu, co chcę ominąć smile.gif
nospor
mysql - GROUB BY oraz COUNT załatwia sprawę
Novy.
mógłby mi ktoś pomóc? biggrin.gif

nie wiem czy to dobrze robię ;d

  1. mysql_query("SELECT count(name) FROM inventory WHERE owner='".$_SESSION['id']."' AND (type='1' OR type='2' OR type='3') GROUP BY type");


jeśli to zapytanie jest dobre, (w co wątpię, bo ciężko mi uczyć się kilku rzeczy na raz) to jak mam je wyświetlić, aby otrzymać taki efekt jak chce?
nospor
Najpierw jest group by a potem dopiero where. Wiedzialbys jakbyś raczył zajrzeć do manuala
http://dev.mysql.com/doc/refman/5.0/en/select.html

A jak wyświetlać? normalnie, jak każde normalne zapytanie

Tylko dodaj jeszcze NAME i alias na ilosc
SELECT name, count(name) as ilosc....
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.