Autor Zpráva
RewOrKer
Profil *
Ahoj, mám tu takové větší dilema a prostě už nevím jak dál :/
Mým cílem je vytvořit tabulku na stránce, ve které by se zobrazila struktura tabulky v databázi MySQL.

Jdu na to takhle:
$query = mysql_query("SELECT name_id, name, alias FROM uzivatele ORDER BY name_id desc");
    
echo "<table>";
while($row = mysql_fetch_assoc($query)){
echo "<tr>";
echo "<td><li class='".$row['name']."'><a href=\"index.php?page=review&ext=user-".$row['name']."\">".$row['alias']."</a></li></td>";
echo "</tr>";
}
echo "</table>";

Mým cílem vzhledu tabulky je vytvořit dva sloupce tím způsobem, že 1. řádek u db bude vlevo, 2. vpravo, 3. o řádek níže vlevo, 4. řádek vpravo...
Jen prostě nevím jak na to, budu rád za každou radu :)

Předem díky!
Someone
Profil
Myslíš něco jako, že každý sudý bude odsazený např. o 15px z leva?
RewOrKer
Profil *
Prostě aby byly vedle sebe, aby se vytvořila tabulka s dvěma sloupci a logicky s polovinou řádků než je v databázi.
panther
Profil
RewOrKer:
vybíráč z DB 3 sloupce, ale vypisovat chceš vedle sebe jen dvě buňky. Chápu tedy dobře, že chceš vypsat dvě buňky a do každé jedno jméno? Pak by to bylo takto:

$query = mysql_query("SELECT name_id, name, alias FROM uzivatele ORDER BY name_id desc");
    
echo "<table>";
$i = 0;
while($row = mysql_fetch_assoc($query)){
    if ($i % 2 == 0) {
        echo '<tr>' . PHP_EOL;
    }
    echo "<td><li class='".$row['name']."'><a href=\"index.php?page=review&ext=user-".$row['name']."\">".$row['alias']."</a></li></td>" . PHP_EOL;
    $i++;
}
echo "</table>";
RewOrKer
Profil *
Ó, proboha děkuji :)

To je přesně to co potřebuju, ale mohl by jsi mi prosím osvětlit situaci? Vůbec nechápu oč jde .. :/ ... Například .PHP_EOL; - co to je? nebo $i ...

Jinak mockrát děkuji ;)
Someone
Profil
Já jsem problém řešil takto.
RewOrKer
Profil *
Ale já stále nechápu co v obou příkladech znamená například to $i ... Mohl by mi to prosím někdo osvětlit?
Someone
Profil
Ono $i nám pomáhá zjistit zda se jedná o sudý nebo lichý výpis. Já si ve svém příkladě nastavuji $i hodnotu 1, při každém cyklu zjišťuji, zdaje $i 1 nebo 0 na základě toho nastavim opačné číslo ($i == 1 tak nastavím $i na nulu) $i=($i==1?0:1);
Poté podmínkou zjišťuji, zda je $i rovno 0 a pokud ano, vypíšu otevírací tag řádku <tr> :

  while ($vysledek=mysql_fetch_assoc($sql)) {
  $i=($i==1?0:1);
    echo "
      
".($i==0?'<tr>':'')."
        <td>".$vysledek['id']."</td><td>".$vysledek['jmeno']."</td>
      ".($i==1?'</tr>':'')."
    ";
  }
Vypíši záznam a poté zjištuji, zda je $i rovno 1, pokud ano (jedná se o sudý výpis) tak uzavřu řádek:

  while ($vysledek=mysql_fetch_assoc($sql)) {
  $i=($i==1?0:1);
    echo "
      ".($i==0?'<tr>':'')."
        <td>".$vysledek['id']."</td><td>".$vysledek['jmeno']."</td>
      

".($i==1?'</tr>':'')."
    ";
  }
To znamená, že při lichém se vypíše otevírací tag řádku: <tr> a při sudém se uzavře: </tr>
panther
Profil
RewOrKer:
PHP.EOL je PHP konstanta, aby se zalomil generovaný zdroj na více řádků a nebyl to kilometrový řádek. Pro přehlednost.

stále nechápu co v obou příkladech znamená například to $i
Proměnná, která má počátečí hodnotu 0 a při každém průchodu cyklem se zvětší o jedničku (ř. 10). $i++ je totéž co $i = $i + 1. No, a pokud je ta proměnná sudá (0, 2, 4, 6, ...), tedy po vydělení dvojkou je zbytek 0 (dohledej si „modulo“, to je to procento), vypíše nový řádek tabulky. To znamená, že pro liché hodnoty proměnné „i“, tedy liché průchody cyklem, bude podmínka false a nový řádek <tr> se nevypíše (a díky tomu se vytvoří pravá buňka toho řádku).

Dál si pak všimni, že jsem pro přehlednost (a možnost vyhnout se další podmínce podmínce testující sudý/lichý řádek) vynechal nepovinnou značku </tr> - ta není zapotřebí (stejně jako </td>), bez ní se stává tento generovaný příklad pro pochopení přehlednější.
RewOrKer
Profil *
Mnohokrát díky, Someone, panther :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: