2017-11-16 19 views
0

私はHTMLスクリプトに直接渡すためのPHPスクリプトをスキップする最良の方法を探しています。ここでは例です:あなたはすべての私のコードを読んでいる場合PHPは、 'goto'を使用してPHPスクリプトをスキップする方法を探しています

<?php 
include 'ws/main.php'; 
include 'ws/database/connection.php'; 

$error = false; 
$routes = getCurrentParameters(); 

if (!isset($routes[0]) && !$error) 
{ 
    $error = traduction("No promotion entered in the URL"); 
    goto end; 
} 
else if (!isset($routes[1]) && !$error) 
{ 
    $error = traduction("No page entered in the URL"); 
    goto end; 
} 

if (!$error) 
{ 
    $result = $connection->query("SELECT * FROM promotion WHERE name = '$routes[0]'"); 
    $promo = $result->fetch_row(); 

    if (empty($promo) && !$error) 
    { 
     $error = traduction("The promotion '". $routes[0] ."' do not exist"); 
     goto end; 
    } 
    else if (!file_exists("page/" . $routes[1] . ".php")) 
    { 
     $error = traduction("The page '". $routes[1] ."' do not exist"); 
     goto end; 
    } 

    $result = $connection->query("SELECT * FROM traduction WHERE promotion_id = $promo[0]"); 
    $traduction = $result->fetch_all(); 
} 

end: 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <!-- Required meta tags --> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 

    <!-- Start CSS import --> 
    <link rel='stylesheet' href='<?php echo BASE_PATH ?>assets/css/bootstrap.css' /> 
    <link rel='stylesheet' href='<?php echo BASE_PATH ?>assets/css/font-awesome.css' /> 
    <link rel='stylesheet' href='<?php echo BASE_PATH ?>assets/css/animate.css' /> 
    <link rel='stylesheet' href='<?php echo BASE_PATH ?>assets/css/main.css' /> 
    <!-- End CSS import --> 
</head> 
<body> 
    <?php if (!$error) // If the app do not catch any error 
    { 
     include "page/$routes[1].php"; 
    } 
    else // If the app already catch an error 
    { 
     // Include the error.php page 
     include "page/error.php"; 
    } ?> 

    <!-- Start JS import --> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>assets/js/jquery.js'></script> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>libs/js/tether/dist/js/tether.js'></script> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>assets/js/bootstrap.js'></script> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>assets/js/moment.js'></script> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>assets/js/bootbox.js'></script> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>assets/js/sweetalert.js'></script> 
    <script type='application/javascript' src='<?php echo BASE_PATH ?>assets/js/main.js'></script> 
    <!-- End JS import --> 

    <script> 
     $(".img").css("background", "url(<?php echo $promo[2]; ?>) no-repeat center center") 
    </script> 
</body> 
</html> 

だから、ウィッヒはにdirrectly行くために、トップに、私はちょうど私のPHPスクリプトを終了するための最良の方法を探しています、全く複雑ではありません私のデータベースに問題がある場合、または情報が一致しない場合、私のHTMLコード。現在、スクリプトの最後に 'goto'メソッドをタグ 'end:'とともに使用しています。私は 'goto'メソッドが最適ではないことを知っているので、私はそれを行うためのより良い方法を探しています。私はすでに既存のメソッドがあると確信しています。

+0

PHPは 'goto'を提供していますか?何のために? – axiac

+4

なぜあなたは 'goto'を必要としますか?スクリプトのその部分をスキップしたい部分に 'if(!$ error)'があります –

+5

[xkcdの "goto"漫画版への必須リンク](https://xkcd.com/292/) –

答えて

1

潜在的に関数に実行したいコードをクラス内のメソッドとして配置すると、そのコードを実行するのは簡単です。何もせずに早期に復帰することを選択します。

<?php 
function doThings($error, $routes) { 
{ 
    $traduction = array(); 
    if (!isset($routes[0]) && !$error) { 
     return $traduction; // leave the function without doing anything 
    } 

    // the rest of the checks and actions, to get the database results 

    return $traduction; 
} 

$traduction = doThings($error, $routes); 

// loop over the (maybe empty $traduction variable) to output 
?> 
関連する問題