2017-11-16 11 views
0

Ich bin auf der Suche nach dem besten Weg, ein PHP-Skript zu überspringen, um direkt an meinen HTML-Code zu übergeben. Hier ein Beispiel:PHP auf der Suche nach dem besten Weg, 'goto' zu verwenden, um PHP-Skript zu überspringen

<?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> 

Also, wenn Sie alle meinen Code gelesen haben, weicht nicht kompliziert ist, ich suche nur für den besten Weg, um meinen PHP-Skript zu beenden, in der Spitze, gehen dirrectly zu mein HTML-Code, wenn ich ein Problem in meiner Datenbank habe oder die Informationen nicht übereinstimmen. Derzeit verwende ich die 'goto' Methode mit einem Tag 'end:' am Ende des Skripts. Ich weiß, dass die "Goto" -Methode überhaupt nicht optimal ist, also suche ich nach einem besseren Weg, denn ich bin mir ziemlich sicher, dass es bereits eine existierende Methode gibt.

+0

Bietet PHP 'goto'? Wozu? – axiac

+4

warum brauchst du das 'goto'? Sie haben bereits den 'if (! $ error)' um den Teil des Skripts, den Sie überspringen wollen –

+5

[obligatorischer Link zu xkcds "goto" Comic-Strip] (https://xkcd.com/292/) –

Antwort

1

Wenn Sie den Code einfügen, den Sie möglicherweise in eine Funktion oder als eine Methode in einer Klasse ausführen möchten, ist es eine einfache Sache, diesen Code auszuführen - oder ihn vorzeitig aus dem Programm zu entfernen.

<?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 
?> 
Verwandte Themen