Wątek zablokowany 2014-12-22 18:05 przez dzek69.

Grupowanie rekordów MySQL przy wyświetlaniu

2014-12-22 13:01
0

A więc tak jak w temacie - mam problem z grupowaniem wyników z bazy:

<table id="colors" class="bhrtable">
    <thead>
    <tr><th>Gracze</th><th>Przedmiot</th><th>Przeciwnik</th><th>Mapa</th><th>Data</th></tr>
    </thead>
    <tbody>
    <?php
    define('ILOSC_WYNIKOW_NA_STRONIE', 20);
    $SQL = "SELECT SQL_CALC_FOUND_ROWS * 
       FROM TABELA WHERE item_klasa='legendary' OR item_klasa='heroic'
       ORDER BY id DESC 
       LIMIT ".mysql_escape_string((int)$_GET['strona']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
 
    $licznik = 0;
       $RES = mysql_query($SQL) or die("Query failed");
while ($row = mysql_fetch_array($RES)) {
$licznik++;
 $nicki = explode(", ", $row['gracze_nicki']);
$outy = explode(", ", $row['gracze_img']);
echo"<tr><td style='max-width: 160px;'><center>";
for($e = 0; $e < count($nicki); $e++){
if($outy[$e]=='/img/rip1.gif'){
$outy[$e] = '/obrazki/postacie//spec/invisiblem.gif';
$nicki[$e] = ''.$nicki[$e].'<br /><i>Zabity/(a)</i>';
}
$nicks =  str_replace(",", "", $nicki[$e]); 
echo"<div style='background-image: url(http://www.HOST.pl".$outy[$e]."); width: 32px; height: 48px; float: left;' ctip='t_other' tip='".$nicks."' ></div></center>";
}
    ?>
        </td><td><img class="item" id="<?=$row['item_klasa']?>" ctip="t_item" tip="<?=$row['item_tip']?>" src="http://img.HOST.pl/obrazki/itemy/<?=$row['item_img']?>"></td><td style="max-width: 250px;"><small><?=$row['przeciwnik']?></small></td><td style="max-width: 200px;"><small><?=$row['mapa']?></small></td><td><?=$row['data']?></td></tr>
        <?php
        }
        ?>
        </tbody>
</table>

Jest to skrypt wyświetlający zdobycze z walki w pewnej grze, jak pewnie można się domyślić - zdobyczy może być kilka, więc zamiast wyświetlać je osobno (jak w kodzie powyżej) wypadałoby je pogrupować. Chciałbym aby odbywało się to poprzez przyrównanie do kolumn "gracze_nicki", "mapa" oraz "ip".
Warunek musiałby wyglądać tak:

If(gracze_nicki == gracze_nicki && mapa==mapa && ip==ip){
wyświetl kilka przedmiotów w jednym polu TD tabeli <td><img class="item" id="<?=$row['item_klasa']?>" ctip="t_item" tip="<?=$row['item_tip']?>" src="http://img.HOST.pl/obrazki/itemy/<?=$row['item_img']?>"></td>   ( <--- ten kod wyświetla tylko jeden przedmiot).
} else {
wyświetl jeden przedmiot w TD
}
 

Szczerze mówiąc nie wiem zupełnie jak się za to zabrać, głupio i chaotycznie to wytłumaczyłem, ale myślę że ktoś zrozumie :P
Pozdro.

edytowany 6x, ostatnio: dzek69, 2014-12-22 18:05

Pozostało 580 znaków

2014-12-22 13:43
2

Grupowanie wyników z bazy powinno być robione na poziomie bazy, nie PHP.

Pozostało 580 znaków

2014-12-22 13:53
0

W takim razie jak mogę to zrobic? :(

Pozostało 580 znaków

2014-12-22 14:09

Grupować rekordy w MYSQL ? Za pomocą GROUP BY.


"There are people who actually like programming. I don't understand why they like programming."
Rasmus Lerdorf

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: Semrush