Autor Zpráva
DavidLi
Profil
Dobrý den,chtěl bychpoprosit, jestli by mi někdo nepomohl s vertikálním výpisem dat do tabulky:¨čili

ID jmeno pocet
1 Jan 10
2 Pepa 20

bych potřeboval vypisovat do html tabulky:

ID 1 2
Jmeno Jan Pepa
pocet 10 20

Napojení na databázi a řádkový výpis není problém, ale nemůžu vymaslet jak to udělat, abych plnil <td> </td> buňky takto napřeskáčku.
Mají to např. e-shopy na porovnání zboží. Za jakokoli nápovědu budu vděčný
David
Tori
Profil
Koukněte do FAQ: Nejčastější potíže s PHP (FAQ) » Výpis výsledků z databáze (nebo z jiného zdroje) do tabulky o více sloupcích
Alphard
Profil
To FAQ asi nebude úplně přesný případ, ale pro inspiraci určitě ano. Uložit výsledek do pole a pak vypsat na základě klíčů do transponované tabulky.
kubik256
Profil
Nenašel sem funkci v PHP na transponování výsledku MySQLi, tak sem jí napsal... třeba se někomu v budoucnu bude hodit ;)

Kód:

function trasponuj_mysqliresult($res){
  $tmp = [];
  $dimension = $res->field_count;
  if($dimension == 1){
    // zjednodus to pro jeden sloupec (vrati poze 1D pole a urychli to zpracovani)
    while($x = $res->fetch_row()) $tmp[] = $x[0];
  }elseif($dimension > 1){
    // zbytek naskladej do 2D pole
    while($x = $res->fetch_row()){
      for($i=0;$i<$dimension;$i++) $tmp[$i][] = $x[$i];
    }
  }else{
    // chyba - vrat NULL
    $tmp = NULL;
  }
  return $tmp;
}

Použití:

$vysledek = $mysqli->query('SELECT id FROM tabulka ORDER BY id');
if($mysqli->errno) throw new Exception("Chyba MySQL!');

$vysledeknaruby = trasponuj_mysqliresult($vysledek);

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: