Autor Zpráva
Trickle
Profil
Zdravím udělal jsem si kód pro vypisování článků. Když jsou splněny určité podmínky udělá se z nadpisu odkaz + se přidá odkaz číst více.Vše funguje. A můj dotaz je za by to někdo vyřešil lépe. Nebo jestli je to takto dostačující. Je mi jasné že html a php není dobrá volba míchat dohromady, ale zatím až tak daleko jsem se nedostal.
    echo "<table width='50%' border='1' style='border-collapse: collapse'>";
    if ($zaznam["text2"]<$zaznam["titulek"]) echo "<tr align='left'><th><u>".$zaznam["titulek"]."</u></th></a></tr>\n" ; 
   else echo "<tr align='left'><th><u><a href=\"".$_SERVER["PHP_SELF"]."?clanky=clanek&id=".$zaznam["id"]."\">".$zaznam["titulek"]."</u></th></a></tr>\n";
    echo "<tr><td>".$zaznam["text"]."\n";
    if ($zaznam["text"]>$zaznam["text2"]); 
    else echo "<div  style='text-align: right;'><a href=\"".$_SERVER["PHP_SELF"]."?clanky=clanek&id=".$zaznam["id"]."\">Číst více</a></div></td></tr>\n"; 
    echo "</table>";    
    echo "<br>";
yFang
Profil
Trickle:
Lepší způsob mi přijde v šabloně psát html kód a do něj pouze vkládat PHP, kde to je nutné. Podmínky můžeš psát s dvojtečkou a ukončovat endif:
<?php if($show): ?>
  <p>...</p>
<?php endif; ?>

Pro výpis proměnné můžeš od verze 5.4 použít zkratku:
<?= $var ?>
místo
<?php echo $var; ?>

Pokud máš prázdnou podmínku a používáš pouze else větev, lze podmínku v ifu znegovat.

Tvůj kód by šel upravit například takto:

<table width="50%" border="1" style="border-collapse: collapse">
    <?php if ($zaznam["text2"] < $zaznam["titulek"]): ?>
        <tr align="left">
            <th><?= $zaznam["titulek"] ?></th>
        </tr>
    <?php endif; ?>
    <tr>
        <td>
            <?= $zaznam["text"] ?>
            <?php if (!($zaznam["text"]>$zaznam["text2"])): ?>
                <div style="text-align: right;">
                    <a href="<?= $_SERVER["PHP_SELF"] ?>?clanky=clanek&id=<?= $zaznam["id"] ?>">Číst více</a>
                </div>
            <?php endif; ?>
        </td>
    </tr>
</table>
Trickle
Profil
Tak na jeden problém jsem narazil.. když v DB začíná text2 divem v novince na hl. stránce se nezobrazí ani jeden odkaz... Musím nějak do TinyMCE dostat aspoň span nebo tak něco.
Trickle
Profil
yFang:
Prosím tě když jsem měl v tom špagetovém kodu, že když je splněná podmínka u titulku. Tak z běžného textu se to změní na odkaz. To u tohoto nejde? Zkouším to dát do kupy ale stále se mi nedaří. Vypíše to jak text tak i ten odkaz.
<table width='50%' border='1' style='border-collapse: collapse'>
<tr align='left'><th><u><?= $clanky["titulek"] ?></u></th>
<?php if (!($clanky["text"]>$clanky["text2"])): ?> 
</tr>
<tr align='left'><th><u><a href="<?= $_SERVER["PHP_SELF"] ?>?clanky=clanek&id=<?= $clanky["id"] ?>"><?= $clanky["titulek"] ?></u></th></a>
 <?php endif; ?>
 </tr> 
<tr>
<td><?= $clanky["text"] ?>
<?php if (!($clanky["text"]>$clanky["text2"])): ?>
<div style='text-align: right;'><a href="<?= $_SERVER["PHP_SELF"] ?>?clanky=clanek&id=<?= $clanky["id"] ?>">Číst více</a>
<?php endif; ?>
</div>
</td>
</tr> 
</table>    
<br>
případně děkuji za radu.
yFang
Profil
Trickle:
Samozřejmě, že jde. Můžeš normálně použít if else. Tak jak to máš teď zobrazuješ titulek vždycky. Asi chceš udělat něco jako:
<?php if (!($clanky["text"]>$clanky["text2"])): ?> 
<tr align='left'>
    <th><u><a href="<?= $_SERVER["PHP_SELF"] ?>?clanky=clanek&id=<?= $clanky["id"] ?>"><?= $clanky["titulek"] ?></u></th></a>
</tr> 
<?php else: ?>
<tr align='left'>
    <th><u><?= $clanky["titulek"] ?></u></th>
</tr>
<?php endif; ?>
mimochodec
Profil
Já se jen zeptám. Vám všem tyhle trojí <?= na jednom řádku připadají přehledné?
Opravdu je toto

<th><u><a href="<?= $_SERVER["PHP_SELF"] ?>?clanky=clanek&id=<?= $clanky["id"] ?>"><?= $clanky["titulek"] ?></u></th></a>

přehlednější než toto?

echo "<th><u><a href='".$_SERVER["PHP_SELF"]."?clanky=clanek&id=".$clanky["id"]."'>".$clanky["titulek"]."></u></th></a>";

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: