Autor Zpráva
lukigod
Profil
Zdravím, mám takový dotaz, jestli existuje nějaký postup jak psát kód php v html. Jde mi o to co je logičtější, přehlednější, rychlejší. Hledal jsem nějaké diskuze, ale většinou se všude píše spíše o odřádkování, tabulátory a tak. Asi dám rovnou příklad dvou zápisů. Který Vám přijde srozumitelnější nebo správněji zapsaný. Jestli značky html echovat nebo přerušovat php kód - obzvláště u cyklů. Např:

Kód 1:

<div <?php if(!empty($_POST["text_hledat"])) echo "class='skryte'"?>>
    <?php 
         otevriDatabazi();
         $sql = mysql_query("SELECT `nazev`, `id` FROM `zakaznik` ORDER BY `id` DESC LIMIT 3");
    ?>
        
    <dl>Poslední přidaní zákazníci:
    <?php while($last_zakaznik = mysql_fetch_array($sql)) {
     ?>
         <dt><?php echo "ID zákazníka: ".$last_zakaznik["id"];?></dt>
             <dd><a href="#"><?php echo $last_zakaznik["nazev"];?></a></dd>
     <?php }; ?>
    </dl>
</div>


Kód 2:

<div <?php if(!empty($_POST["text_hledat"])) echo "class='skryte'"?>>
    <?php 
      otevriDatabazi();
      $sql = mysql_query("SELECT `nazev`, `id` FROM `zakaznik` ORDER BY `id` DESC LIMIT 3");
      echo "<dl>Poslední přidaní zákazníci:\n";
      while($last_zakaznik = mysql_fetch_array($sql)) {
          echo "<dt>ID zákazníka: ".$last_zakaznik["id"]."</dt>\n";
              echo "<dd><a href='#'>".$last_zakaznik["nazev"]."</a></dd>\n";
      };
      echo "</dl>\n";
    ?>
</div>


no. zdá se být druhý kód kratší ale zas v PSpadu nevidím html značky.. tak nevim
Zool
Profil *
Kod 1 je určitě pro mě více prehlednější, protože používámý editor mi barevně hlavně rozděluje html kod u php kudu je to omezené. Avšak zkus si něco pročíst o šablonách, tím úplně oddělíš html a php kod a je to dost přehledné
Joker
Profil
lukigod:
Já už si zvykl na používání šablon, je to asi nejpřehlednější.

Pro můj JoresTemplate by ten kód šablony vypadal asi takhle:
<div class="{HLEDAT_CLASS}">
  <dl>Poslední přidaní zákazníci:
  <!-- JTPL: START BLOCK: blok_uzivatele -->
    <dt>ID zákazníka: {ZAK_ID}</dt>
    <dd><a href="#">{ZAK_NAZEV}</a></dd>
  <!-- JTPL: END BLOCK: blok_uzivatele -->
  </dl>
</div>
lukigod
Profil
díky za odpovědi. preferuju taky spíše ten první zápis. Šablony vypadají zajímavě, ale asi jsou trochu složitější. Takže do nich asi zatím nepůjdu. Možná časem.. Každopádně díky budu studovat :o)
Majkl578
Profil
Joker:
LatteFilter frameworku Nette by umožnil třeba toto:
<div class="trida">
  <dl>Poslední přidaní zákazníci:
  {foreach $customers as $customer}
    <dt>ID zákazníka: {$customer->id}</dt>
    <dd><a href="#">{$customer->nazev}</a></dd>
    {/foreach}
  </dl>
</div>


Nebo toto:
<div class="trida">
  <dl n:inner-foreach="$customers as $customer">
  {if $iterator->isFirst()}Poslední přidaní zákazníci:{/if}
    <dt>ID zákazníka: {$customer->id}</dt>
    <dd><a href="#">{$customer->nazev}</a></dd>
  </dl>
</div>


Použit je samozřejmě vzor MVP, tudíž data nejsou tahána z databáze přímo do šablony, ale přes presenter šabloně přiřazena.

To jen tak pro nastínění moderního programování... ;)
Joker
Profil
Majkl578:
Jasně, šablonovacích systémů jsou tuny, principy jsou podobné, jen syntaxe je jiná. Já si prostě vybral ten, který znám nejlíp :)
Majkl578
Profil
Joker:
Přesně to jsem udělal také... (V Nette programuji) ;) Důležité podotknout, že tento framework má vlastní šablonovací jazyk, aby náhodou někdo nehledal souvislosti s jinými, např. Smarty... :)

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: