Vraag & Antwoord

Webprogrammeren & scripting

PHP in HTML of HTML in PHP

Anoniem
None
24 antwoorden
  • Is hier een standaard voor?
  • [quote:fed39122d9="wes_55"]Is hier een standaard voor?[/quote:fed39122d9]Nou je had wel een uitgebreidere vraag moegen stellen…

    Er is geen standaard voor, maar ik geloof dat het beste HTML in PHP is.. Dat doe ik iig, elk stukje HTML laten echo'en… (Als je dat doet moet je natuurlijk niet per regel een aparte echo doen, als je snapt wat ik bedoel) :wink:
  • Ik zou het zelf zo weinig mogelijk mengen. Statische html in templates onderbrengen, en die in php aanroepen en invullen.
  • Dat wou ik weten.

    Is er mischien een site waar ik kan leren hoe ik html templates in php gebruik?
  • Kijk eens bij http://phpfreakz.nl/
  • Via pb (niet meer doen graag):

    [quote:749d59455d]Goedemiddag, ik zag jou reactie bij de vraag of je PHP in HTML of HTML in PHP moest gebruiken dat je het had over HTML templates en daarvoor naar PHPFreakz verwees…
    Ik kom vaak op die site (vooral om te kijken hoe andere mensen het aanpakken) maar ik snap eigenlijk niet waar ik dan een voorbeeld van zoiets kan vinden…

    Dus eigenlijk is mijn vraag: Waar op PHPFreakz staat dan een voorbeeld van HTML templates?

    Safihre[/quote:749d59455d]

    Het was meer een algemene hint. Maar je kunt er dus niks vinden?

    Het principe is vrij simpel. Je maakt een tekstbestand in met daar in je vast html. Op de plaatsen waar je dan iets in wilt vullen, zet je een makkelijk te detecteren code. Dit zie je bijvoorbeeld veel: <%variabele%>. Vervolgens lees je dit bestand in in je php script. Daarna doe je een string replace (of regex) in je script, waar je de desbetreffende variabelen mee vervangt. Het makkelijkste gaat dit, als je je variabelen in een named array hebt staan. Dan kun je alles met één opdracht invullen. Vervolgens laat je je script ingelezen tekst, met de vervangen variabelen, uitspugen.
  • Ik kan me nu al zo een heel aantal dingen bedenken waarin dit, bij mijn site, niet zou werken…

    Dingen als FOR of WHILE lussen om MySQL dingen uit te lezen…
    En ik hou de parse tijd het liefst zo laag mogelijk en dit lijkt niet echt bevorderlijk voor de snelheid…
    Om het zo snel mogelijk aanpasbaar te maken heb ik bepaalde dingen van HTML die ik vaak echo'de in functies gezet, werkt tot nu toe nog perfect :wink:

    Hmmm… ik denk dat ik voor jou (gerben) even eigenwijs nu overkom als de topic starter met zijn highlighter :P :wink:

    Iemand moet mij ook nog steeds een keer gaan overtuigen waarom ik met Classes zou moeten werken :wink: (maar dat is teveel off-topic :P )
  • Zoals altijd, zijn er vele wegen die naar Rome leiden. De een is niet per definitie beter dan de ander. Soms wel wat toeristischer, soms wat sneller, soms wat goedkoper, maar uiteindelijk kom je allemaal op hetzelfde plek uit.

    Ik werk zelf altijd met templates. Is de layout van je site afhankelijk van een script, dan kun je je enorm veel werk op de hals halen, als je de layout wilt aanpassen. Ik zie dat parse probleem niet zo, gewoon een kwestie van creatief denken, lijkt me.
  • [quote:f2536245e9="Safihre"]En ik hou de parse tijd het liefst zo laag mogelijk en dit lijkt niet echt bevorderlijk voor de snelheid…
    [/quote:f2536245e9]
    Wat voor druk bezochte sites maak jij, waar je je druk zou moeten maken over dit soort micro optimalisaties?
  • tja.. micro…

    Ik vind wel dat als je from scratch bezig bent, dat je daar je best voor kan doen. (nu deed ik meer mbt development in de "inbel tijd" maar toch)…

    t.
  • Ik vind het veel echoën van HTML in PHP erg onhandig, en vaak is het ook niet nodig. Ikzelf hou er meer van om de PHP in de HTML te embedden, maar daarbij wel zoveel mogelijk de functionaliteit te scheiden van de templates. Zeg maar ongeveer zoals ze dat bij WordPress doen.
  • Ik doe de html buiten php om. Variabele echo ik dmv <?= $variabele ?>.
    Dan heb je niet dat gedoe met het escapen van quotes e.d.
    Ook met color coding in de editor ziet ge-echode html er gewoon niet uit.
  • [quote:2ab07a6d8a="Dot-cpu"]Ik doe de html buiten php om. Variabele echo ik dmv <?= $variabele ?>.
    Dan heb je niet dat gedoe met het escapen van quotes e.d.
    Ook met color coding in de editor ziet ge-echode html er gewoon niet uit.[/quote:2ab07a6d8a]Dan weer mijn voorbeeld.. hoe wilde je dan een tabel maken m.b.v. een while lus?
  • Met bijvoorbeeld blocks in je template systeem, zoals ik dat doe met mijn nieuws item.
    [code:1:fefc44d26b]
    <table>
    [news]
    <tr>
    <td>{news.text}
    </td>
    </tr>
    [/news]
    </table>
    [/code:1:fefc44d26b]
    je block array ziet er BV dan zo uit:
    Heb hier niet mijn array bij de hand , zou er anders uit kunnen zien :)
    [code:1:fefc44d26b]
    news
    [0]
    [text] => item1
    [username] => aap
    [1]
    [text] => item2
    [username] => aap
    [2]
    [text] => item3
    [username] => aap
    [/code:1:fefc44d26b]
  • [quote:c031241b23="Safihre"]Dan weer mijn voorbeeld.. hoe wilde je dan een tabel maken m.b.v. een while lus?[/quote:c031241b23]
    Even in psuedo-code (PHP is voor mij weer een tijd geleden):
    [code:1:c031241b23]<table>
    <? foreach($row in @rs) { ?>
    <tr>
    <td><?= $row["x"] ?></td>
    <td><?= $row["y"] ?></td>
    </tr>
    <? } ?>
    </table>[/code:1:c031241b23]
  • [quote:61b80e6cde="Remytje"][quote:61b80e6cde="Safihre"]Dan weer mijn voorbeeld.. hoe wilde je dan een tabel maken m.b.v. een while lus?[/quote:61b80e6cde]
    Even in psuedo-code (PHP is voor mij weer een tijd geleden):
    [code:1:61b80e6cde]<table>
    <? foreach($row in @rs) { ?>
    <tr>
    <td><?= $row["x"] ?></td>
    <td><?= $row["y"] ?></td>
    </tr>
    <? } ?>
    </table>[/code:1:61b80e6cde][/quote:61b80e6cde]Ja zo kan ik het ook wel… Maar dat is totaal niet wat de bedoeling is van een template systeem.. dit is gewoon PHP in HTML… :wink:
  • nou kom even verder denken…

    pseudocode:
    [code:1:e19b954e70]

    php-bestand:

    <?php
    function makeTableRow($cell1, $cell2)
    {
    return "<tr><td>" . $cell1 . "</td><td>" . $cell2 . "</td></tr>\n";
    }

    $niewsTabel = '';

    foreach($news as $row)
    {
    $niewsTabel .= makeTableRow($row->datum, $row->bericht);
    }

    Template->addNews($niewsTabel);

    ?>

    en de template:

    <html>

    <table>
    <% news %>
    </table>

    </html>
    [/code:1:e19b954e70]

    Waarbij de Template klasse in PHP de string '<% news %>' vervangt voor de gehele tabel. Er is geen rede om die lus in je template op te nemen.
  • Ja zo had ik hem ook bedacht… alleen zolang mijn HTML-in-PHP goed, overzichtelijk en duidelijk blijft hou ik het daarbij… :wink:
  • [quote:c4d4013ef2="Safihre"]Ja zo kan ik het ook wel… Maar dat is totaal niet wat de bedoeling is van een template systeem..[/quote:c4d4013ef2]Wat is dan de bedoeling van een template systeem?

    [quote:c4d4013ef2="Safihre"]dit is gewoon PHP in HTML… :wink:[/quote:c4d4013ef2]Is dat een probleem dan?

    [quote:c4d4013ef2="maIRnaairruJ"]Waarbij de Template klasse in PHP de string '<% news %>' vervangt voor de gehele tabel. Er is geen rede om die lus in je template op te nemen.[/quote:c4d4013ef2]Geen reden? Je hebt nu op twee plekken html…
  • de functie makeTableRow zou onderdeel moeten zijn van de Template class. Op de wijze waarop jij het nu doet heb je php in je html, dat schiet ook niet echt op.

    Het is natuurlijk voor de meeste mensen sowieso redelijk onzinnig, maar stel je de situatie voor dat je de template wilt gebruiken voor een andere programmeertaal / situatie.
    Hetzelfde geld voor (kleine hoeveelheden) html in php. In principe zal het weinig gebruikers hinderen, tenzij je opeens besluit over te gaan naar divs ipv tabellen.

    Ik gebruik zelf niet zozeer templates, maar wel een aparte class die alle vormgeving regelt en die dus makkelijk te vervangen is door iets anders.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.