IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Flex box in php block?

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
paliko
Člen
Avatar
paliko:27.3.2018 13:33

Ahoj,
je mozne nakym zpusobem implementovat flex box (container) do php bloku? Mam tabulku se jmenama a u kazdeho jmena je uvedeno povolani, to se u nekterych jmen opakuje. Tenhle kod mi priradi jmena do listu podle povolani. Snazil jsem se misto listu puzit flex box, tak ze kazdej box bude obsahovat jeden seznam jmen pro urcite povolani.

Diky

<?php

    foreach($povolani_array as $x => $povolani)
    {
        $selectPovolani = Db::queryAll("
            SELECT *
            FROM $table
            WHERE  povolani = ?
            ",
            $povolani);

        echo "<ul><h4>$povolani</h4></ul>";

        foreach ($selectPovolani as $jmena)
        {
                    $jmeno = $jmena['name'];
                    echo "
                        <li>$jmeno</li>
                    ";
        }
    }
?>
 
Odpovědět
27.3.2018 13:33
Avatar
Hando
Člen
Avatar
Odpovídá na paliko
Hando:27.3.2018 14:43

Ahoj.
Zdá se mi to dost zamotané.
Flex box je záležitost CSS, to nemá s PHP nic společného. Pokud jsi schopen udělat zamýšlenou věc se vzorovými daty pouze v html+css, tak jsi pak schopen nechat vygenerovat obsah i dynamicky pomocí php. Seskládej si statickou stránku a pak to převeď do php generování.
Jak to seskládat bys mohl najít zde: Flexbox

 
Nahoru Odpovědět
27.3.2018 14:43
Avatar
paliko
Člen
Avatar
Odpovídá na Hando
paliko:27.3.2018 16:41

Ahoj,
diky za odpoved. Prave, ze to neumim napasovat na php, v css to mam nadifinovane takto:

.flex-container {
  display: flex;
  background-color: DodgerBlue;
}

.flex-container > div {
  background-color: #f1f1f1;
  margin: 10px;
  padding: 20px;
  font-size: 30px;
}

Ale nevim jak mam zapsat <div> do php codu, aby se mi zobrazilo tolik boxu, podle toho jak je velke pole. Zkousel jsem ruzne varianty s vlozenim divu do php bloku, ale nijak mi to nefungovalo :-(. Asi je to na me komplikovany tim jak tam jsou dva cykly.

 
Nahoru Odpovědět
27.3.2018 16:41
Avatar
Roman Havránek:27.3.2018 17:08

I dle mého je dost zamotané.
Udělej si jednoduchý table v prvním řádku budou v každém sloupci jiné povolání..

echo ('<table border=1>');
        foreach ($zasoba as $s)
        {
                 echo ('<td>' . $s['db_sloupec'] .'</td>' );
        }
echo ('</table>');

A od toho se dále odvíjej..
Samozřejmě pokud máš v databázi sloupce 'povolani' a v něm máš jiné, doporučuji fixnout aby se ti nepřidali x krát stejné.

Editováno 27.3.2018 17:10
Nahoru Odpovědět
27.3.2018 17:08
sleep();
Avatar
Jan Lupčík
Tvůrce
Avatar
Jan Lupčík:27.3.2018 17:21

Ahoj!

  1. Jak již bylo zmíněno, nejdříve si vytvořit nějakou šablonu a nastyluj si ji (HTML & CSS). Dodej tam nějaká smyšlené data - třeba Lorem ipsum a podobně. Až s tím budeš spokojený, začni teprve s dalším krokem.
  2. Dva cykly furt nejsou složité. :) Používáš tam ale nějaké seznamy a chceš po nás flexbox, tudíž nejsem schopný ti nějak více přiblížit, jak by vypadalo řešení. Může to ale asi vypadat nějak takto:
foreach($povolaniPole as $klic => $povolani)
{
        echo '<h4>' . $povolani . '</div>';
        echo '<div class="flex-container">';
        foreach ($vyberPovolani as $jmena)
        {
                $jmeno = $jmena['name'];
                echo '<div class="flex-container">';
                echo '<h5>' . $jmeno . '</h5>';
                echo '</div>';
        }
        echo '</div>';
}

Každopádně tvůj kód se mi zdá nějak zmatený (např. ten foreach s klíčem a povoláním) a ten výběr není taky zrovna šťastně řešený. Ale asi začínáš, tak snad na tom pak zamakáš. :P
A snad si ošetřuješ tu proměnnou $table!

Doufám, že ti má odpověď pomohla. Snažil jsem se co nejvíce ti porozumět. :)

Editováno 27.3.2018 17:23
Nahoru Odpovědět
27.3.2018 17:21
TruckersMP vývojář
Avatar
paliko
Člen
Avatar
Odpovídá na Jan Lupčík
paliko:28.3.2018 14:21

Ahoj,
diky moc za odpovedi, jak si spravne poznal, zacinam :-), takze jsem vdecnej za kazdou radu.
To co jsi posilal me navedlo a i kdyz to neni optimalni reseni (sanzim se nak zacit a postupne zlepsovat), dosahl jsem co jsem potreboval. Myslel jsem to takhle (povolaniPole je vytvorene z tabulky tak aby se povolani neopakovali):

   echo '<div class="flex-container">';
    foreach($povolaniPole as $klic => $povolani)
{
        echo '<div>';
        echo '<h4>' . $povolani . '</div>';
        echo '<div>';
        foreach ($vyberPovolani as $jmena)
        {
                $jmeno = $jmena['name'];
                echo '<h5>' . $jmeno . '</h5>';
        }
        echo '</div>';
        echo '</div>';
}
echo '</div>';

Jeste jsem se chtel zeptat ohledne te promene, jak pises. Nijak ji neosetruji, kdyz jsem to chtel udelat pomoci '?', hlasilo mi to syntax chybu. Je nake jednoduche reseni?

 
Nahoru Odpovědět
28.3.2018 14:21
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na paliko
Jan Lupčík:28.3.2018 16:37

Ahoj,

jsem rád, že jsi dosáhl toho, co jsi potřeboval a že se v tom aspoň nějak orientuješ. :)
Ano, v mém kódu byla chyba to, že tam byla ta jedna třída navíc, ale pěkně sis to upravil a kód alespoň mně přijde dost přehledný. Pořád ale nechápu to $klic => povolani, když ten klíč nějak nepotřebuješ.
Každopádně k tvému dotazu. Otazníky se používají pouze pro hodnoty, nikoliv pro názvy sloupečků, tabulek, databází a podobně. Pokud se ta proměnná nijak nemění, nedával bych ji do proměnné, ale ihned do dotazu. Pokud získáváš někde tu proměnnou, ale 100% víš, že ten vstup bude pouze od tebe, přimhouřil bych nad tím oči.
Avšak vstupu od uživatele nemůžeš nikdy věřit! Našel jsem zajímavý příspěvek, tak se na to podívej, snad ti to pomůže: https://stackoverflow.com/a/182353

Pokud máš další otázky, určitě se neboj zeptat. :)

Nahoru Odpovědět
28.3.2018 16:37
TruckersMP vývojář
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.