Autor Zpráva
Pan X
Profil
Zdravím, mám tu menší problém a nevím si sním rady...

Mám tu funkci, která vytváří sql dotaz na základě parametrů, které dostane

$sql = 'SELECT * FROM `br_texts` WHERE posittion = \''.$posittion.'\'';
    if(isset($order)){
      $sql .= ' ORDER BY '.$order; 
      $sql .= ' '.$sort;
    }
    if(isset($limit)){
      $sql .= ' LIMIT '.$limit;  
    }
    
    echo $sql;  
    
    $query = MySQL_Query($sql);
    echo MySQL_Error();
    $w = null;
    while($db = MySQL_Fetch_Array($query)){
      if($posittion == 'index_text'){
        $w .= '<h1>'.$db['header'].'</h1>';
      }if($posittion == 'actual'){
        $w .= '<div class="aktualita"><h2>'.$db['header'].'</h2>';
      }
      
      $w .= '<p>'.$db['text'].'</p>';
      
      if($posittion == 'actual'){
        $w .= '<p class="aktualita_datum">'.date("d.m.Y H:i", $db['date']).'</p>
            <p class="aktualita_tlacitko_cerny"><a href="">Zobrazit celé</a></p>
            <div class="clear"></div></div>';
      }
      return $w;
    } 


když si enchám vypsat $sql výsledek je takto:
 SELECT * FROM `br_texts` WHERE posittion = 'actual' LIMIT 20
problém je ale že se vypíše jen 1 záznam.... at zkouším co zkouším nejde mi jich nikdy vypsat tolik kolik chci...
panther
Profil
Pan X:
nezdá se mi na konci while ten return, nedělá tam neplechu on? Mělo by tam být spíše echo.
Pan X
Profil
panther:
Ha, díky moc ... ten return měl být až za tím while... toho sem si nevšiml...

Mělo by tam být spíše echo
S tímdle nevím... Pokud vím tak je "pravidlo" že by funkce nebo methody měli výsledky vrace a nikoliv vypisovat....
panther
Profil
Pan X:
Pokud vím tak je "pravidlo" že by funkce nebo methody měli výsledky vrace a nikoliv vypisovat
ano, však ty tu žádnou funkci nemáš. Máš tam jen cyklus, což je control structure, nikoliv function.

Více v příkladech v manuálové stránce věnované while.


Ono, když ti to trochu přiblížím, while je na podobné úrovni jako podmínka if (též není funkce), v té taky vypisovat můžeš. Druhá věc je, jestli vypisovat chceš, nebo vypisuješ až někde v šabloně. Ono, kdybychom šli do důsledků, celé zvěrstvo v tvém kódu nespočívá ve volbě echo vs. return, ale v tom, že v PHP tvoříš celé HTML bloky.
Pan X
Profil
panther:
ano, však ty tu žádnou funkci nemáš. Máš tam jen cyklus, což je control structure, nikoliv function.

Neuvědomil jsem si že tu není celý kód... To co tu je je uvnitř funkce...

Druhá věc je, jestli vypisovat chceš, nebo vypisuješ až někde v šabloně
Vypisuji až v šabloně

ale v tom, že v PHP tvoříš celé HTML bloky.
Todle je věc o které vím, že dělám špatně. Ale nedaří se mi někde zjistit jak to řešit, jak to dělat správně...
panther
Profil
Pan X:
Todle je věc o které vím, že dělám špatně. Ale nedaří se mi někde zjistit jak to řešit, jak to dělat správně...
naplnit pole a v šabloně vypsat.

$data = array();
while($row = mysql_fetch_array($query)) {
    $data[] = $row;
}

a v šabloně něco takového (takto by to vypadalo se smarty, nevím, co přesně používáš)
{foreach from=$data item=row}
    <h1>{$row.header}</h1>
    ...
{/foreach}

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:

0