2014-02-18 17 views
0

我有一個包含頁面名稱和ID的數據庫。我能夠獲取頁面的ID,但是如何獲取頁面的名稱?獲取頁面名稱以便將其刪除

我想要做的是刪除物理目錄本身的頁面,但我失敗了。我將文件名和id存儲在數據庫中。我想從數據庫中獲取文件名,但我不確定如何使用$ current_page變量從數據庫獲取文件名。

的$ CURRENT_PAGE變量是用做:

$current_page = find_page_by_id($_GET["page"], false); 

的find_page_by_id的功能是

function find_page_by_id($page_id, $public=true) { 
     global $connection; 

    $safe_page_id = mysqli_real_escape_string($connection, 
    $page_id); 

     $query = "SELECT * "; 
     $query .= "FROM pages "; 
     $query .= "WHERE id = {$safe_page_id} "; 
     if ($public) { 
     $query .= "AND visible = 1 "; 
     } 
     $query .= "LIMIT 1"; 
     $page_set = mysqli_query($connection, $query); 
     confirm_query($page_set); 
     if($page = mysqli_fetch_assoc($page_set)) { 
     return $page; 
} else { 
    return null; 
    } 
} 

爲了刪除頁面,你必須要經過管理編碼當前頁面頁面的ID,然後解析它以刪除頁面。但對於菜單名稱,我該如何去做呢?

管理頁面:

<?php if ($current_page) { ?> 

<h2><?php echo 
    htmlentities($current_page["menu_name"]); ?><br /></h2> 

Menu name: <?php echo 
htmlentities($current_page["menu_name"]); ?><br /> 

Position: <?php echo 
($current_page["position"]); ?><br /> 

Content:<br /> 
<div class="view-content"> 
    <?php echo 
    nl2br(htmlentities($current_page["content"])); ?> 
</div> 
<br /> 
<br /> 
<a href="edit_page.php?page=<?php echo 
    urlencode($current_page['id']); ?>">Edit Page</a> 

<br /> 
<br /> 
<a href="delete_page.php?page=<?php echo 
    urlencode($current_page["id"]) ?>" onClick="return confirm('Are you sure you want to delete page?')">Delete page</a> 

<?php } else { ?> 
<p class="welcome">Welcome to H H Lee & Associates Dental Surgery&#8217s dashboard!</p> 
<p>To start navigating, please click on the "Menu" on the top left hand corner.</p> 
<?php }?> 

刪除頁:

<?php require_once("includes/session.php"); ?> 
<?php require_once("includes/db_connection.php"); ?> 
<?php require_once("includes/functions.php"); ?> 

<?php 
$current_page = find_page_by_id($_GET["page"], false); 

if (!$current_page) { 
    //page ID missing or invalid or 
    //page cant be found in database 
    redirect_to("manage_content.php"); 
die(); 
} 

function find_page_by_name($page_name) { 
     global $connection; 

    $safe_page_name = mysqli_real_escape_string($connection, 
    $page_name); 

     $query = "SELECT * "; 
     $query .= "FROM pages "; 
     $query .= "WHERE menu_name = '{$safe_page_name}' "; 
     $query .= "LIMIT 1"; 
     $page_name = mysqli_query($connection, $query); 
     confirm_query($page_name); 
     if($pagename = mysqli_fetch_assoc($page_name)) { 
     return $pagename; 
} else { 
    return null; 
    } 
} 

    $current_name = find_page_by_name($_GET["page"]); 

$id = $current_page["id"]; 
$menuname = $current_name["menu_name"]; 
echo $menuname; 
$query = "DELETE FROM pages WHERE id = {$id} LIMIT 1"; 
$result = mysqli_query($connection, $query); 
    unlink($menuname.".php"); 
if ($result && mysqli_affected_rows($connection) == 1) { 
    // Success 
     $_SESSION["message"] = "Page deleted."; 
     //redirect_to("manage_content.php"); 
} else { 
     // Failure 
     $_SESSION["message"] = "Page deletion failed.";  
     redirect_to("manage_content.php?page={$id}"); 
    } 
?> 

功能:

function find_page_by_id($page_id, $public=true) { 
     global $connection; 

    $safe_page_id = mysqli_real_escape_string($connection, 
    $page_id); 

     $query = "SELECT * "; 
     $query .= "FROM pages "; 
     $query .= "WHERE id = {$safe_page_id} "; 
     if ($public) { 
     $query .= "AND visible = 1 "; 
     } 
     $query .= "LIMIT 1"; 
     $page_set = mysqli_query($connection, $query); 
     confirm_query($page_set); 
     if($page = mysqli_fetch_assoc($page_set)) { 
     return $page; 
} else { 
    return null; 
    } 
} 

    function confirm_query($result_set) { 
    if (!$result_set) { 
     die("Database query failed: ". 
    mysqli_connect_error() . 
    " (" . mysqli_connect_errno(). ")" 
    ); 
} 
    } 
+0

你的意思是頁面文件名? – David

+0

是頁面文件名。服務器聽起來有點矯枉過正。有沒有其他方法可以使用?如果我要使用$ _SERVER方法。我將如何截斷使用substr()? – user3098046

回答

0

$_SERVER數組包含了所有當前正在運行的頁面上的信息。

如果你想獲得當前正在運行的PHP頁面的文件名,你可以使用:

$_SERVER["SCRIPT_NAME"]; 

這將返回當前文件的絕對文件路徑。請記住,這將包括所有直到該文件的目錄,因此如果要從文件名中截斷父目錄樹,您可能必須使用類似substr()的方法。

相關問題