Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz Ndruu #14907 üzenetére

    Hali!

    1. a deprecated mysql_ kezdetű függvényekről át kell állni mysqli-re vagy PDO használatára
    2. a végéről szedd ki a <center> taget, nemcsak felesleges (mivel nincs nyitótag), hanem obsoleted elem is (nem használjuk ma már, CSS-sel oldjuk meg a középre igazítást)
    3. a táblázatos megoldást elkészítettem neked egy kicsit rugalmasabbra, nem tudtam most kipróbálni, csak fejből írtam a dolgot, Notepad++-ba gyorsan bepötyögve, de remélhetőleg nincs benne hiba, tehát:

    AZ EREDETI
    echo "<table>";
    echo "<tr><th>ID</th><th>User</th></tr>";
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    echo "<tr><td><img src=\"gif/".$row['ID'].".gif\"></td><td>".$row['User']."</td></tr>";
    }
    echo "</table>";

    HELYETT írd ezt a kódban:

    // elemek száma egy sorban
    $nrOfItemsInARow = 10;
    // megszámoljuk az elemeket a ciklusban, 0-ról indítunk
    $nrOfItems = 0;

    // táblázat nyitótagje
    echo '<table>';
    // ciklus (TODO: PDO+MySQL-re vagy mysqli-re minél előbb átállni)
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    if ($nrOfItems % $nrOfItemsInARow === 0) { // osztási maradék (akkor kezdünk meg egy sort, ha osztható $nrOfItemsInARow-val)
    // lezárjuk az előző sort, amennyiben nem az első elemnél járunk
    if ($nrOfItems !== 0) { // az első elemnél nyilván nem kell lezárni még semmit
    echo '</tr>';
    }
    // megkezdjük a sort
    echo '<tr>';
    }

    echo '<td>
    <a href="http://prohardver.hu/tag/'.$row['ID'].'.html">
    <img src="gif/'.$row['ID'].'.gif" alt="'.$row['ID'].' ('.$row['User'].')" title="'.$row['ID'].' ('.$row['User'].')" />
    </a>
    </td>';

    $nrOfItems++; // elemek számát növeljük
    }

    // maradékos osztás
    $rowsRemainder = $nrOfItems % $nrOfItemsInARow; // pl. 33 elem van, 33%10 === 3
    $colspanFromRemainder = $nrOfItemsInARow - $rowsRemainder; // pl. 10-3 === 7 --> ennyi üres hely marad még, ezt ki kell tölteni

    // kitöltjük a maradék oszlopokat is colspan-attribútum segítségével
    // (lásd pl. korábbi példa: 7 elemnyi hely marad)
    if ($colspanFromRemainder > 0) {
    echo '<td colspan="'. $colspanFromRemainder .'"></td>';
    }
    // lezárjuk az utolsó sort
    echo '</tr>';
    // lezárjuk a táblázatot
    echo '</table>';

    echo '<hr />';
    echo '<p>Összesen: <strong>'.$nrOfItems.'</strong> db</p>';
    echo '<hr />';

    Kommenteztem is rendesen, így remélhetőleg gyorsan megérted a kód működését.
    Ez így rugalmas, mert elméletileg (ha nem írtam el a kódot) amennyiben a táblázatban egy sorban lévő elemek számát 10-ről szeretnéd megnövelni vagy lecsökkenteni, akkor csak a $nrOfItemsInARow = 10; sorban kell megváltoztatnod a számot. A többi pedig igazodik ehhez, minden egyebet kiszámol.

    Ja, még egy pluszt hozzátettem: belinkeli a felhasználók adatlapját is (lásd <a> tag), ezt is tördeltem, amennyiben nincs rá szükséged, vagy nem jó az eredmény, egyszerűen szedd ki a linkelést. Ezenkívül az <img> tag kapott alt- és title-attribútumot, ahogy illik.

    Ha valami nem tiszta, kérdezz.

Új hozzászólás Aktív témák