Autor Zpráva
Stormu
Profil *
Zdravím. Po delší době jsem se rozhodl udělat nový web. Měl by obsahovat články + nějaké informace. Ovšem se mi nedaří pomocí PHP uspořádat text, který se má zobrazit.
<?
$clanky = MySQL_Query("SELECT * FROM clanek ORDER BY id DESC",$connection);
    
?>  <?php if($_GET[b]=="2"):?>
      info1
    <? while ($zaz = MySQL_Fetch_row($clanky)){ ?>
    <?php elseif($_GET[c]=="$zaz[0]"): ?>
      Usporadany clanek
    <? } ?>
    <?php elseif($_GET[b]=="3"): ?>
      info2
    <?php elseif($_GET[b]=="4"): ?>
      info3
    <?php elseif($_GET[b]=="5"): ?>
      info4
    <?php elseif($_GET[b]=="6"): ?>
      info5
    <?php elseif($_GET[b]=="7"): ?>
      info6
    <?php else: ?>
    <?include 'home.php'; ?>
    <?php endif; ?>
Tento kód má v divu zobrazit určitý text. Pokud tedy není zvolená žádná kategorie ani článek, má zobrazit home.php. Pomocí while jsem chtěl tento problém vyřešit i u článků, kdy $zaz[0] je ID článku. Sice netuším, jestli by to takhle všechno v praxi fungovalo, ovšem tento kód mi vyhodí error Parse error: syntax error, unexpected T_ELSEIF in /home/...../text.php on line 7. Za jakoukoli radu předem děkuji.
gogy27
Profil
za while nemozes dat elseif hned, najprv musis zacat s if
Stormu
Profil *
gogy27:
Super, díky moc. Tak jsem se v tom trochu povrtal a vzniklo mi
?>  
    <? while ($zaz = MySQL_Fetch_row($clanky))
       if($_GET[c]=="$zaz[0]"){ ?>
    
    <?  echo("Usporadany clanek"); ?>
    <? }else{ ?>
    <?php if($_GET[b]=="2"):?>
      info1
    <?php elseif($_GET[b]=="3"): ?>
      info2
    <?php elseif($_GET[b]=="4"): ?>
      info3
    <?php elseif($_GET[b]=="5"): ?>
      info4
    <?php elseif($_GET[b]=="6"): ?>
      info5
    <?php elseif($_GET[b]=="7"): ?>
      info6 
    <?php  else: ?>
    <?include 'home.php';
     endif; } ?> 
    
gogy27
Profil
Stormu:
No, neviem či to takto bude správne. Za while potrebuješ zložené zátvorky "{ }" ešte ich tam si doplň.
Stormu
Profil *
Tak závorky jsem potřeboval doplnit a na světě je další error.
/home/...../text.php on line 13
    <? while ($zaz = MySQL_Fetch_row($clanky)){
       if($_GET[c]=="$zaz[0]"){ ?>
    
    <?  echo("tabulka"); ?>
    <? }}else{ ?>
    <?php if($_GET[b]=="2"):?>
      info1
    <?php elseif($_GET[b]=="3"): ?>
      info2
    <?php elseif($_GET[b]=="4"): ?>
      info3
    <?php elseif($_GET[b]=="5"): ?>
      info4
    <?php elseif($_GET[b]=="6"): ?>
      info5
    <?php elseif($_GET[b]=="7"): ?>
      info6 
    <?php  else: ?>
    <?include_once 'home.php';
     endif; } ?>
Řádka, které se to týká je vyznačena. Za mou neznalost se omlouvám, jelikož programování se nevěnuji, ovšem tento web bych rád zprovozni. Za jakoukoliv radu opět děkuji.
Bertram
Profil
Stormu:
Ahoj, pokud chceš cyklus ukončovat až po projití všech podmínek, tak musíš potom jednu z těch dvou ukončovacích složených závorek přemístit z řádku 5 k závorce na řádku 20.
Stormu
Profil *
Bertram:
Ahoj, to právě že ne. Budu se snažit ti vysvětlit jak jsem to myslel. while chci vyřešit to, že každý článek s id $zaz[0] má svou stránku. Tzn např na index.php?c=5 bude článek s ID 5 kam se podle předepsané formy doplní informace z MySQL jako např nadpis a text. Kdyby se while vztahovalo i na ostatní prvky, vše by se najedou na stránce zobrazilo tolikrát, kolik je článků v databázi.
 <?php  else: ?>
    <?include_once 'home.php';
toto řeší to, že když se vyloučí všechny ostatní možné stránky, zobrazí to stránku hlavní.
Bertram
Profil
Abych pravdu řekl, tak jsem to moc nepochopil, proč z databáze nenačteš jen ten článek, který má id dle $_GET['c']?
A co se skrývá pod $_GET['b'] a také proč je nenazveš trochu intuitivněji?
Stormu
Profil *
Tento script je umístěný v divu, kde se má zobrazovat text. $_GET['b'] jsou buttony v horní části webu, které odkazují na index.php?b=2až7 . $_GET['c'] jsou tedy články, které ovšem přibývají, takže přidávat je do vyjímky manuálně by byla blbost. Jak jsem povídal, poslední else má za úkol zobrazit hlavní text v úvodu webu, pokud $_GET[] je prázdné.

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: