Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zliczenie takich samych elementów tablicy
Forum PHP.pl > Forum > Przedszkole
wujeksam
w tabeli mam kilka identycznych wpisów różniacych sie pole id_narzedzia, chce zliczyć elementy których pole nazwa_pelna jest takie samo, ponadto przy każdym narzędziu podane jest kto wypożyczył dane narzędzie
nick pobrany z sesji porównuję z tym z sesji-poprawnie wyswietla tylko pola w których oba nicki sie zgadzaja, tylko mam problem ze zliczeniem takich ilosc narzedzi prosze o pomoc

  1. $nick_sesja=$_SESSION['nick'];
  2. $ilosc=mysql_query("SELECT *, count(1) AS nazwa_pelna FROM obrot WHERE nick='$nick_sesja'");
  3. $pokaz_narzedzia=mysql_fetch_array($ilosc);
  4. echo $ilosc;
  5.  
emajl22
mysql_num_rows();
wujeksam
niestety nie pomogło, sprecyzuje dokładnie co chce zrobic
załóżmy ze w tabeli mam 3 wpisy młotek, i dwa wiertła, więc będe miał trzy pola nazwa_pelna=mlotek, oraz dwa pola nawa_pelna wiertlo
jak policzyc osobno te pola? tak bym miał ilosc młotków 3, wiertel 2?

  1. $nick_sesja=$_SESSION['nick'];
  2. $result=mysql_query("SELECT nazwa_pelna FROM obrot WHERE nick='$nick_sesja'");
  3.  
  4. $num_rows = mysql_num_rows($result);
  5.  
  6. echo "$num_rows ilosc\n";
  7.  


Hoku
  1. $mlotek=0;
  2. $wiertlo=0;
  3. foreach ($result as $value) {
  4. if($value=='mlotek')
  5. {
  6. ++$mlotek;
  7. }
  8. elseif($value=='wiertlo')
  9. {
  10. ++$wiertlo;
  11. }
  12. }
  13.  


lub UNION ...
  1. SELECT b1.count(*), b1.typ FROM obrot AS b1 WHERE nick='$nick_sesja' AND typ='mlotek'
  2. UNION
  3. SELECT b2.count(*), b2.typ FROM obrot AS b2 WHERE nick='$nick_sesja' AND typ='wiertlo'
  4.  
powinno zwrocic 2 rekordy z iloscia mlotow i wiertel o ile sie gdzies nie pomylilem winksmiley.jpg

na upartego można było się pobawić JOIN i zapytaniami w WHERE ale bylo by to trochę nieczytelne

wpadło mi do głowy teraz nie jestem tego pewien ale powinno działać
  1. SELECT DISTINCT obrot.typ, licznik.count(*)
  2. FROM obrot
  3. LEFT JOIN obrot AS licznik
  4. WHERE licznik.typ = obrot.typ AND nick='$nick_sesja'
  5. GROUP BY obrot.typ


lub
  1. SELECT DISTINCT obrot.typ, licznik.count(*)
  2. FROM obrot
  3. WHERE (SELECT licznik.count(*)
  4. FROM obrot AS licznik
  5. WHERE licznik.typ = obrot.typ) AND nick='$nick_sesja'
  6. GROUP BY obrot.typ
wujeksam
dziekuje bardzo za pomoc, jednak nie umiem dalej tego tak napisac by działało
dodam że tablica jest dynamiczna, tzn nie ma ograniczenia ilosci rodzajów wpisów i moze byc i 20 różnych rodzajów narzedzi których ilosc musze mieć
wiem że prościej by było poprostu zrobić dodatkowe pole ilosc i jeden typ narzedzia to jeden wpis, ale musze miec narzedzia indywidualnie ponieważ chce zrobic przybilżone zuzycie narzedzia na podstawie czasu wypozyczenia
thek
A może co w stylu ...
  1. SELECT nazwa_pelna, count(jakeś_pole_z_narzędzi_najlepiej_indeksowane) AS ile FROM obrot GROUP BY nazwa_pelna
8_pasarzer_NOSTROMO
Witam

Podłącze się pod wątek bo potrzebuje zliczyć (takie same) elementy w tablicy.

Mam tablicę :

  1. $tablica = array("z", "", "", "d", "z", "", "", "", "z", "", "", "", "", "", "", "", "", "", "z", "z", "z");



Chciałbym zliczyć ile jest "z" w sztukach.

Nie chciałbym żadnego pętlowania jeśli się da oczywiście.
mmmmmmm
Turson
array_count_values
8_pasarzer_NOSTROMO
Ale
tworzy mi nową tablicę z wynikami :

Array([]=>14 [d]=>1 [z]=>6);

A jak wyciągną ile jest "z" ?

Jak zrobić $oko=6, bo jest sześć "z".

Kto rozwinie dalej ?
vonski
Naprawdę nie wiesz jak z takiej tablicy: Array([]=>14 [d]=>1 [z]=>6); wyciągnąć to, co jest pod 'z'?

  1. $quants = array_count_values($tablica);
  2. echo $quants['z'];
8_pasarzer_NOSTROMO
@vonski
Dzieki

Mój syn chodzi do przedszkola do II grupy i nie wie kto to jest TUSK i JP II. A tutaj jest przedszkole w końcu :-)

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