Autor Zpráva
návštěvník
Profil *
Řeším kód na výpis oblíbených uživatelů. Moje metoda přestala fungovat.
Vypíšu výsledky SQL dotazu uložené v poli $data:
http://paste.ofcode.org/ipAPweXFqUhGG4bhCZ4yb5

Následně se pokusím zpracovat výsledky a uložit je do objektu Results->all
if ( !empty($data) ):
      while(list($k,$i)=@each($data));
        $Results->all->getAll($i,$color);
      $u->popular = clone $Results->all;
endif;

Podle mého názoru už fakt že jsem uvedl podmínku
if ( !empty($data) )
by měl zabránit spuštění pokud by pole bylo prázdné. Ale pole není prázdné a tak se metoda spustí:

     public function getAll(&$input_arr, &$color = '' ){ 
     static $sr; global $lan, $options;
     $color = $color == COLOR4 ? COLOR3 : COLOR4;
     $this->colors[] = $color;
     
     if (empty($input_arr)) 
        die("<b>Incorrect input argument:</b>getAll: SQL result array is empty.");

Ve výsledku mám hlášku:
Incorrect input argument:getAll: SQL result array is empty.

Takže nechápu proč se to zastaví. Jak tento problém vyřešit?

Ještě pozn: nemá smysl zkoušet dávat print_r dovnitř té metody, protože už jsem to několikrát před tím úspěšně použil, takže by to vypsalo pole použité předtím, ne to aktuální pole $data.
Davex
Profil
Proměnné $k a $i budou mít při vstupu do metody getAll hodnotu NULL protože cyklus while je prázdný a metoda getAll se vykoná až po jeho skončení.
návštěvník
Profil *
Davex:
Jak ale může být prázdný když $data obsahuje data? Konkrétně jedno pole pod indexem 0.
DJ Miky
Profil
Nezáleží na obsahu proměnné $data, cyklus samotný nemá žádné tělo.
while(list($k,$i)=@each($data));
  $Results->all->getAll($i,$color);
je to samé jako:
while(list($k,$i)=@each($data)) { }
$Results->all->getAll($i,$color);
návštěvník
Profil *
Aha, tak to konečně chápu. Díkes

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: