Autor Zpráva
kuba1999
Profil
Ahoj.

Mám tuto třídu:
class strankovani{
....
...
public function zaznamy(){
      
    $by=($this->na_stranku * ($this->page - 1));
   
    $select=mysql_query("SELECT * FROM clanky");
          
    $result = mysql_fetch_object($select);

  		foreach ($result as $field => $value)
  		$result->$field = $value;
  		return $result;	 
}
...
...
}


Když přes třídu strankovani zavolám funkci zaznamy(), tak potřebuji, abych pomocí while začal vypisovat řádky. (které jsou přes tuto funkci vráceny v objektu)

while($r=$strankovani->$select){
echo $r->nazev;
}


Ale nedaří se mi to vůbec udělat.. Mockrát děkuji za rady. Jakub
Jan Tvrdík
Profil
Vypisovat to přes while je značně nepraktické. Funkce zaznamy by měla vracet pole, které by se následně prošlo přes foreach.
AM_
Profil
kuba1999:
$result = mysql_fetch_object($select);
>
foreach ($result as $field => $value)
$result->$field = $value;
return $result;
tohle mi přijde jako dost nesmyslná konstrukce, proč prostě hned po prvním řádku nevrátíš $result? ten foreach vlastně neudělá vůbec nic.

while($r=$strankovani->$select){
echo $r->nazev;
}
tahle konstrukce je také nějak nesmyslná... čeho je instance objekt $strankovani? pokud třídy strankovani, tak je to od základu špatná konstrukce, třída strankovani především neobsahuje jako členy žádná konkrétní data.

Osobně bych doporučoval vrátit se k nějakému tutoriálu objektového programování, mám z Tvého kódu pocit, že máš v principu objektů trochu zmatek, a bude lepší si přečíst nějaký hotový článek, než abych tady rozepisoval rozsáhlé pojednání o tom, jak mají objekty fungovat.
Mastodont
Profil
Ono by to šlo, kdyby tam byla nějaká metoda Load a Select by pak z načteného pole vybral následující záznam, umístil ho do public členů a vrátil true, ale moc se mi to nezamlouvá ...
$r = new Strankovani;
$r->Load(...);
while ($r->select() ){
    echo $r->nazev;
}

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