Autor Zpráva
Mortem
Profil
Dobrý den mám takový dotaz umím obsah z databáze vypsat do tabulky otázkou je jak to vypsat třebas do 3 sloupců a automaticky další 3 pod to je to vůbec možné? Vrtá mi to hlavou..


Nějak takto



Děkuju moc za jakoukoliv odpověď
mimochodec
Profil
Při každém průchodu cyklu vypiš td. Průchody počítej. Až budou tři, udělej </tr><tr>. Před tím cyklem si ošetři, abys table a tr otevřel a po něm zajisti zavření tr a table.
Taps
Profil
Urcite by slo uplatnit i modulo deleni
Mortem
Profil
Mortem:
Vůbec nevím maximálně se mi povedlo to vypsat pod sebe, ale to nechci ..




Už jsem zkoušel ruzné věci nic nefungovalo.


Takhle bych si to představoval 3 sloupce a pod sebe by se vypisovali další a další data..
RastyAmateur
Profil
Mortem:
Chceš tedy udělat to, co je na obrázku? HTML kód jsem vytvořil v živé ukázce... Ovšem ten ty asi nepotřebuješ.

Tobě jde asi o výpis z databáze v tomto "tvaru". Nebylo to lehké, ale vymyslel jsem to! Myslím si sice, že existuje i lepší a kratší řešení, ovšem toto také funguje... Netestoval jsem to s databází, ale to pole jsem si uměle vytvořil...

<?php
  $sql = mysqli_query($con, "SELECT * FROM knihy");
  $sloupcu = 3;
  $array = array();
  while($row = mysqli_fetch_assoc($sql)){
    $array[] = array("nazev" => $row["nazev"], "autor" => $row["autor"]);
    }
    
  echo "<table>";
  for($i=0; $i < ceil(count($array)/$sloupcu); $i++){
    echo "<tr>";
    for($ii=0; $ii < $sloupcu; $ii++){
      if(!empty($array[($i*$sloupcu)+$ii])){
        echo "<td>".$array[($i*$sloupcu)+$ii]["nazev"]."</td>";
        }
      }
    echo "</tr>";
    echo "<tr>";
    for($ii=0; $ii < $sloupcu; $ii++){
      if(!empty($array[($i*$sloupcu)+$ii])){
        echo "<td>".$array[($i*$sloupcu)+$ii]["autor"]."</td>";
        }
      }
    echo "</tr>";
    echo "<tr>";
    for($ii=0; $ii < $sloupcu; $ii++){
      if(!empty($array[($i*$sloupcu)+$ii])){
        echo "<td>Zobraz</td>";
        }
      else{
        break 2;
        }
      }
    echo "</tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
    } 
  echo "</table>";
?>
Mortem
Profil
RastyAmateur:
Wow, tak to bych vážně nesplácal funguje to skvěle!
Moc vám děkuji :)
RastyAmateur
Profil
Mortem:
Není zač. Ona asi existuje i lepší varianta, bez toho pomocného pole, ale na tu jsem zatím nepřišel.
Doufám, že kód je jasný. Pokud ne, tak se ptejte, protože při možné úpravě by bylo asi pozdě...
juriad
Profil
Nějak mi není jasné, proč celý jeden záznam není jedna buňka. Nebo ještě lépe, položka v seznamu. Pak je dokonce možné jen čistě pomocí media queries přeskládat tabulku do menšího počtu sloupců pro malé diplaye.
Například takto: Živá ukázka
Mortem
Profil
RastyAmateur:
Ano na jakem principu to funguje jsem pochopil takže otázky nemám, ale přece jenom by asi byla :D nevím proč, ale když chci.
echo "<td>".$array[($i*$sloupcu)+$ii]["autor"]."</td>";

Přiřadit třídu
echo "<td class="test">".$array[($i*$sloupcu)+$ii]["autor"]."</td>";

Tak mi to vyhazuje erorr a nevím proč vždycky jsem to tak psal.


Mortem:
echo "<td class="test">".$array[($i*$sloupcu)+$ii]["autor"]."</td>";

Dobre už vím, špatné uvozovky někdy si přijdu opravdu jako dement. :D
RastyAmateur
Profil
juriad:
Dobrý nápad. Jak se tu celou dobu řeší výpis pomocí tabulky, nehledal jsem jiná řešení (a docela mě zarazilo, že to není tak jednoduché. Chtěl jsem objevit řešení...).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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