Autor Zpráva
Návštěvník
Profil *
Upravuju šablonu pro výpis zpráv a narazil jsem na zvláštní věc při kterém mi zamrzne server. Standardně v html kódu je:

<?while(isset($u->messages->ids[$p])) { /* Show messages - Begin */ ?>
A následuje výpis řádků tabulky

Nyní kontroluji jestli příspěvek obsahuje nějaké závadné slova v $u->messages->badrate[$p] .... a porovnávám s nastavením filtru uživatele $_SESSION['opt_acceptbw_mes'].

Nejdříve jsem zkoušel die a break a obojí bylo funkční - server se nesekl:
if ( $u->messages->badrate[$p]>$_SESSION['opt_acceptbw_mes'])
die; // nebo break - má podobný funkční výsledek

Nyní zkouším toto:

<?while(isset($u->messages->ids[$p])) {
  if ( $u->messages->badrate[$p]>$_SESSION['opt_acceptbw_mes'])
    continue;
    ?>
  <tr ... // výpis řádku tabulky
No a zacykluje se to. Musím zastavit a resetovat server a když to nechám běžet díle tak i resetovat počítač, protože reset serveru nepomůže. Neumím si to vysvětlit kde je chyba.
Tori
Profil
Návštěvník:
Mění se někde uvnitř cyklu proměnná $p? (= asi by měla)
petr 6
Profil
Před continue patří $p++ (případně jiná inkrementace)
Návštěvník
Profil *
Tori, petr 6:
Aha, už vím kde je problém. Dík za nakopnutí. Já ještě zkoušel podmínku přesunout do while a pak mi došlo že to by přerušilo smyčku úplně.

Takže

if ($u->messages->badrate[$p]>$_SESSION['opt_acceptbw_mes'])
  {
  $p++;
  continue;
  }

funguje

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