Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Cannot break/continue 1 level in
Forum PHP.pl > Forum > Przedszkole
chriswebber
Napisałem następujący kod który "zepsułem" dopisując wytłuszczony fragment - pojawia się bład "Cannot break/continue 1 level in" co ma związek - jak mi się wydaje - z niemożnością wyskoczenia z pętli do części default funkcji case()

chciałbym to poprawić w taki sposób aby uniknać powtarzania kodu - czyli przenoszenia wyrażeń z default: do pozostałem cześci ( oznacza to konieczność powtarzania kodu zapytań ) - oczywiście bazując na kodzie proceduralnym ....

kod1:

  1. <?php
  2. if (is_rc())
  3. {
  4.    // Kontrola dostepu do danych
  5.    sec("test", "problemu", $_SESSION["tes"]["tes2_pro_id22"]);
  6.  
  7.    // ustalenie nowego stanu dla  problemu uzytkownika
  8.    $mysql_result=mysql_query2("select uzy_id, stan, repoprawka, zezwolenie_pop, pro_id from problemy_testowe where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
  9.    [b]if (is_null($_SESSION["tes"]["tes2_lista_wpisow2"]->pole["2"]["dane"]["0"])==TRUE)
  10.                {     ostrzezenie2("Nie można zakończyć problemu ponieważ nie został dodany komentarz");
  11.                break; } else {[/b]
  12.    switch(mysql_result($mysql_result, 0, "stan")) {
  13.        case 12:
  14.            $stan=16;
  15.  
  16.            // powiadomienie kierowników danego projektu
  17.                $mysql_result2=mysql_query2("select uzy_id from kontrolerzy where pro_id=".mysql_result($mysql_result, 0, "pro_id"), $mysql_link);
  18.                while ($tkie=mysql_fetch_assoc($mysql_result2)) {
  19.                    zawiadomienie($tkie["uzy_id"],"kontr","powrot_od_testera",$_SESSION["tes"]["tes2_pro_id22"]);
  20.            }
  21.        default:
  22.            $stan=mysql_result($mysql_result, 0, "stan");
  23.    }
  24.    // ustawienie nowego stanu dla problemu
  25.    $mysql_result=mysql_query2("update problemy_testowe set stan=".$stan." where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
  26.  
  27.    $mysql_result=mysql_query2("update testerzy2 set czas_zakonczenia='".date('Y-m-d H:i:s', time())."' where uzy_id=".$_SESSION["ogolne"]["zalogowany"]["id"]." and pro_id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
  28.    
  29.    unset($_SESSION["tes"]["tes2_lista_wpisow2"]);
  30.    unset($_SESSION["tes"]["tes2_lista2"]);
  31.    }
  32. }
  33. ?>

kod 2 ( działa poprawnie ale "nieladnie" powtarzany jest kod zapytań )
  1. <?php
  2. if (is_rc())
  3. {
  4.    // Kontrola dostepu do danych
  5.    sec("test", "problemu", $_SESSION["tes"]["tes2_pro_id22"]);
  6.  
  7.    // ustalenie nowego stanu dla  problemu uzytkownika
  8.    $mysql_result=mysql_query2("select uzy_id, stan, repoprawka, zezwolenie_pop, pro_id from problemy_testowe where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
  9.    switch(mysql_result($mysql_result, 0, "stan")) {
  10.        case 12:
  11.            $stan=16;
  12.  
  13.            // powiadomienie kierowników danego projektu
  14.            if (is_null($_SESSION["tes"]["tes2_lista_wpisow2"]->pole["2"]["dane"]["0"])==TRUE)
  15.                {     ostrzezenie2("Nie można zakończyć problemu ponieważ nie został dodany komentarz");
  16.                break; } else {
  17.                $mysql_result2=mysql_query2("select uzy_id from kontrolerzy where pro_id=".mysql_result($mysql_result, 0, "pro_id"), $mysql_link);
  18.                while ($tkie=mysql_fetch_assoc($mysql_result2)) {
  19.                    zawiadomienie($tkie["uzy_id"],"kontr","powrot_od_testera",$_SESSION["tes"]["tes2_pro_id22"]);
  20.                }
  21.            [b]$mysql_result=mysql_query2("update problemy_testowe set stan=".$stan." where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
  22.            $mysql_result=mysql_query2("update testerzy2 set czas_zakonczenia='".date('Y-m-d H:i:s', time())."' where uzy_id=".$_SESSION["ogolne"]["zalogowany"]["id"]." and pro_id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);[/b]
  23.            }
  24.        default:
  25.            [b]$mysql_result=mysql_query2("update problemy_testowe set stan=".$stan." where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
  26.            $mysql_result=mysql_query2("update testerzy2 set czas_zakonczenia='".date('Y-m-d H:i:s', time())."' where uzy_id=".$_SESSION["ogolne"]["zalogowany"]["id"]." and pro_id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);[/b]
  27.            break;
  28.    }
  29.  
  30.    // ustawienie nowego stanu dla problemu
  31.    unset($_SESSION["tes"]["tes2_lista_wpisow2"]);
  32.    unset($_SESSION["tes"]["tes2_lista2"]);
  33. }
  34. ?>


Z góry dziękujęza pomoc

Andrzej
wookieb
Popraw człowieku bbcode bo tego sie nie da czytac... A poza tym mody ci zamkna temat jak nie poprawisz.
erix
  1. <?php
  2. break; } else {
  3. ?>

Skąd Ci się wziął ten break" title="Zobacz w manualu PHP" target="_manual?

Poza tym, jeśli dobrze zrozumiałem problem, to powinieneś poczytać o wyjątkach w PHP. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.