Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pętla while i wyświetlanie tych samych wyników
Novy.
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 8
Dołączył: 28.10.2011

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


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 (IMG:style_emoticons/default/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ąć (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




mysql - GROUB BY oraz COUNT załatwia sprawę
Go to the top of the page
+Quote Post
Novy.
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 8
Dołączył: 28.10.2011

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


mógłby mi ktoś pomóc? (IMG:style_emoticons/default/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?

Ten post edytował Novy. 28.10.2011, 20:27:57
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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....
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: 11.10.2025 - 16:16