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:
<?php
if (is_rc())
{
// Kontrola dostepu do danych
sec("test", "problemu", $_SESSION["tes"]["tes2_pro_id22"]);
// ustalenie nowego stanu dla problemu uzytkownika
$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);
[b
]if (is_null($_SESSION["tes"]["tes2_lista_wpisow2"]->pole["2"]["dane"]["0"])==TRUE) { ostrzezenie2("Nie można zakończyć problemu ponieważ nie został dodany komentarz");
break; } else {[/b]
case 12:
$stan=16;
// powiadomienie kierowników danego projektu
$mysql_result2=mysql_query2
("select uzy_id from kontrolerzy where pro_id=".mysql_result($mysql_result, 0, "pro_id"), $mysql_link); zawiadomienie($tkie["uzy_id"],"kontr","powrot_od_testera",$_SESSION["tes"]["tes2_pro_id22"]);
}
default:
}
// ustawienie nowego stanu dla problemu
$mysql_result=mysql_query2("update problemy_testowe set stan=".$stan." where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
$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);
unset($_SESSION["tes"]["tes2_lista_wpisow2"]); unset($_SESSION["tes"]["tes2_lista2"]); }
}
?>
kod 2 ( działa poprawnie ale "nieladnie" powtarzany jest kod zapytań )
<?php
if (is_rc())
{
// Kontrola dostepu do danych
sec("test", "problemu", $_SESSION["tes"]["tes2_pro_id22"]);
// ustalenie nowego stanu dla problemu uzytkownika
$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);
case 12:
$stan=16;
// powiadomienie kierowników danego projektu
if (is_null($_SESSION["tes"]["tes2_lista_wpisow2"]->pole["2"]["dane"]["0"])==TRUE) { ostrzezenie2("Nie można zakończyć problemu ponieważ nie został dodany komentarz");
break; } else {
$mysql_result2=mysql_query2
("select uzy_id from kontrolerzy where pro_id=".mysql_result($mysql_result, 0, "pro_id"), $mysql_link); zawiadomienie($tkie["uzy_id"],"kontr","powrot_od_testera",$_SESSION["tes"]["tes2_pro_id22"]);
}
[b]$mysql_result=mysql_query2("update problemy_testowe set stan=".$stan." where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
$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
] }
default:
[b]$mysql_result=mysql_query2("update problemy_testowe set stan=".$stan." where id=".$_SESSION["tes"]["tes2_pro_id22"], $mysql_link);
$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
] break;
}
// ustawienie nowego stanu dla problemu
unset($_SESSION["tes"]["tes2_lista_wpisow2"]); unset($_SESSION["tes"]["tes2_lista2"]); }
?>
Z góry dziękujęza pomoc
Andrzej
Ten post edytował chriswebber 12.01.2009, 21:55:24