Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zliczanie identycznych fraz z tablicy
Forum PHP.pl > Forum > Przedszkole
kvachu
Witam!

W PHP dopiero raczkuję więc prosiłbym o wyrozumiałość. Nie mam pojęcia jak zliczyć jakieś słowo(jakiś wpis) z wszystkich rekordów w danej tablicy. Przykładowo jak mam tablicę z klanówkami rozgrywanymi przez mój klan i mam w nich wpisywane różne osoby. Powiedzmy w jednej klanówce grał Rysiek i Maciek, a w innej np Rysiek i Janek. I jeśli mam powiedzmy 150 wpisów z klanówkami to chciałbym zliczyć np ile rozegrał meczów Rysiek, Maciek czy też Janek.
Wiem, że dla was zaawansowanych to pestka, ale ja jestem trochę oporny na taką wiedzę i trochę ciężko mi załapać, ale jak już załapię to daję radę.

Jeszcze inna rzecz z jaką mam problem. Mianowicie to mam dwie tablice, jedna od tych klanówek, która nazywa się "wars", a ta druga to tablica z bazą przeciwników "opponents". Zrobiłem dodawanie przeciwników do bazy żeby potem nie wpisywać przy każdej klanówce na nowo. Po prostu wpisuję raz i potem podczas formularza dodawania klanówki mam listę przeciwników i z niej wybieram. Tablica "opponents" zawiera pola `ID`, `tag`, `nazwa` i `www` i teraz chodzi o to, że też nie mam pojęcia jak pobrać te wszystkie wartości(oprócz `ID`) podczas wybierania przeciwnika gdy dodaję klanówkę.
Kod wyboru przeciwnika:
  1. echo "<tr><td class=\"addcw\" width=\"100\" align=\"right\">Przeciwnik :</td><td class=\"addcw\"><select name=\"tag\">";
  2. $result = mysql_query("SELECT * FROM opponents ORDER BY nazwa ASC");
  3. while($przeciwnicy = mysql_fetch_array($result)) {
  4. echo "<option value=\"".$przeciwnicy['tag']."\">".$przeciwnicy['nazwa']." - ".$przeciwnicy['tag'];
  5. }
  6. echo "</option></select></td></tr>";


A tak wygląda przy dodawaniu w formularzu:


Więc chodzi o to by podczas wyboru przeciwnika wartości z pól `tag`, `nazwa` i `www` wstawić do rekordu tablicy "wars", ponieważ tam też mam takie pola.

Z góry dziękuję za wszelką pomoc!
Blame
Co do pierwszego to: załużmy że nazwy grających zawodników masz wypisane po przecinku w kolumnie o nazwie "gracze":
  1. SELECT * FROM nazwa_tabeli WHERE gracze LIKE '%Rysiek%'

Wybierasz wszystkie rekordy z tabeli gdzie trzymasz wojny klanowe(nie wiem jak wy to nazywacie tongue.gif) w którym w kolumnie gracze wystąpi słowo Rysiek(na początku, w środku, na końcu, nie ma znaczenia gdzie). I potem zliczasz wiersze za pomocą mysql_num_rows. Nie wiem czy to dobre rozwiązanie ale tylko takie coś przychodzi mi do głowy.

EDIT: 200 post! biggrin.gif
kvachu
Hmmm, ale ja muszę w skrypcie poustawiać co ma mi zliczać? Chodzi mi o to: '%Rysiek%'
Problem w tym, że u mnie kolumny są osobno dla każdego gracza:


I zależy mi żeby to jednak zliczało ich samo, a to dlatego, że np u mnie w klanie jest duża rotacja i bywa, że jakiś gracz jest tydzień i odchodzi, albo dostaje kopcura za zachowanie. Więc domyślam się,że czegoś w tym stylu '%Rysiek%' musiałbym zapodać w skrypcie ponad dwadzieścia i tak z każdym nowym graczem ingerować w kod. Chcę takiego czegoś uniknąć.
cojack
  1. SELECT count(*) FROM "wars_table" WHERE gracz1 = "kvachu";


Jeżeli chcesz zrobić 1 zapytanie i pobrać wszystko dla wszystkich, to nie wiem jak zrobić ;]
kvachu
@cojack
Tu też widzę ingerencję w kod =P. Ja nie chcę definiować, ale chcę by mi samo zliczało tych graczy. Ale chyba sobie mogę chcieć, bo z tego co widzę to, to chyba nie możliwe jest, albo bardzo trudne. No chyba, że bym sobie zrobił osobną tablicę na wszystkich graczy którzy byli i są w klanie i wtedy by porównywało mi kolumny gracz1, gracz2, gracz3 i gracz4 z kolumną z tej tablicy z tymi wszystkimi graczami. W sumie nie było by problemu, bo do tej tablicy można by było już na stałe dodawać gracza przy dodawaniu go do aktualnego składu.

No nic, pokminię nad tym jak mi skill podskoczy. Ewentualnie znowu tu zawitam.
Dziękuję wam za chęć pomocy.
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.