2015-08-08 83 views
-2

我有兩個頁面,其中一個鏈接到另一個。我如何將我的錨(select.php)中的變量(region_name)的值傳遞給下一頁(display.php)?我用下面的代碼和即時通訊Notice: Undefined variable: region_name。如何修復它?如何將錨中的變量傳遞給下一頁?

select.php

 <div class="panel panel-default"> 
      <div class="panel-heading"> 
       <h4 class="panel-title"> 
        <a name="region_name" method="POST" value="Greater Accra Region" type="submit" href="display.php" target="main">Greater Accra Region</a> 
       </h4> 
      </div> 
     </div> 

Display.php的

<?php 
ob_start(); 
session_start(); 
if(isset($_POST['region_name'])){ 
    $region_name = $_POST['region_name']; 
} 

$con=mysqli_connect("localhost","root","root","findings"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$sql="SELECT * FROM approved_reservation WHERE region_name = '$region_name'"; 

$records=mysqli_query($con,$sql); 

?> 
+0

'<名稱=「REGION_NAME 「method =」POST「... type =」submit「'?!?那不會那樣工作。 –

+0

類型適用於media_type – Drew

回答

1

你得到,因爲下面的一個未定義的變量:

href不使用方法的,也不值,NOR型,<form>...</form>一樣。 表單使用具有爲其方法設置的名稱屬性的輸入。

您的代碼期望它通過表單傳遞並使用POST方法。

形式要在這裏使用什麼是你的條件語句GET:

if(isset($_GET['region_name']) && !empty($_GET['region_name'])){ 
    $region_name = $_GET['region_name']; 
    echo $region_name; 
} 

旁註:我以前!empty()應該有人要修改URL as ?region_name=

並在文件名後使用?參數和一個=其次是「價值」,你希望它是:

<a href="display.php?region_name=your_value" target="main">Greater Accra Region</a> 

這反過來將回聲「your_value」。

您將需要分別修改其值。

在你的情況,這將作爲閱讀:

<a href="display.php?region_name=Greater Accra Region" target="main">Greater Accra Region</a> 

你也可以添加到上面和條件語句中:

if($_GET['region_name'] == "Greater Accra Region"){ 
    echo "Region is Greater Accra Region"; 
} 

可以修改爲:

旁註:以下示例檢查區域是否等於某個內容,以及該值是否在URL中修改,如?region_name=

if(isset($_GET['region_name'])){ 
    $region_name = $_GET['region_name']; 
    echo $region_name; 

if($_GET['region_name'] == "Greater Accra Region"){ 
    echo "Region is Greater Accra Region"; } 

if(empty($_GET['region_name'])){ 
    echo "EMPTY"; } 

} 

現在,看到您的查詢,不知道最終目標是什麼。

  • 只有你知道並超出了你原來的問題範圍。

如果你有,你有沒有貼的形式(用POST方法),那麼你可以使用輸入:

即:

Greater Accra Region: 
<input name="region_name" value="Greater Accra Region" type="submit"> 

和使用現職陣列。


您現在的代碼對SQL injection開放。使用mysqli with prepared statementsPDOprepared statements

1

沿着數據display.php通過最簡單的形式是將REGION_NAME添加到URL,像這樣:

href="displayApprovedReservation.php?region_name=<?php echo $region_name; ?>"

display.php,然後您將使用$_GET['region_name']從URL中檢索數據。這樣做,您需要確保您對輸入進行清理,因爲用戶可以很容易地從URL中更改輸入。

的原因,你所得到的錯誤Notice: Undefined variable: region_name是因爲數據不被髮布到網頁,因此$_POST['region_name']沒有設置,因此不會在這個過程中設置$region_name - 但你仍然在SQL查詢中調用它不管該變量被設置的:

$sql="SELECT * FROM approved_reservation WHERE region_name = '$region_name'";

2

我們傳遞變量$myVar通過URL和使用$_GET在接下來的頁面中使用它。我們使用htmlspecialchars();來清理用戶輸入。

我們使用if (isset($_GET['myVar']))所以它不扔注意:未定義的索引錯誤

pageOne.php

<?php 
$myVar = "My variable one."; 

echo "<a href='pageTwo.php?myVar=" . $myVar . "'>Page Two</a>" 
?> 

pageTwo.php

<?php 
if (isset($_GET['myVar'])) { 
    $myVar = htmlspecialchars($_GET['myVar'], ENT_QUOTES); 

    // Now you can use $myVar. 
} 
?> 

現在,我不知道要經過,所以我用我做了一個簡單的骨架變什麼昨天向你展示它是如何完成的。如果你提供更多的代碼,我會編輯它以適應你的情況。下面

編輯1

您的代碼不正確,因爲你聲明你的變量$region_nameif statement您的查詢範圍和其他代碼依賴於變量必須在if statement內。

另一種解決方案是在if statement之外定義一個空變量$region_name,然後在if statement之後,您將不會收到Undefined Index錯誤。

if(isset($_POST['region_name'])){ 
    $region_name = $_POST['region_name']; 
} 

編輯2

被拋出的原因有兩個該錯誤,

  1. 你沒有真正傳遞區域的名稱通過URL - 雖然就算你是它止跌」您可以使用$_POST而不是$_GET

  2. 我概述了原因在上面的編輯。您正在使用不在查詢範圍內的變量。

1

有幾種方法可以做你想做的事情。你試圖達到的方法將需要一個表格,如:

<form name="selection" method="POST" action="display.php"> 
    <input name="region" type="radio" value="Greater Accra Region"> 
</form> 

但它看起來不太好,不按你想要的方式工作。

另一種方法是僅僅使用GET變量像這樣

<a href="display.php?selection=Greater%20Accra%20Region">Greater Accra Region</a> 

然後在你的顯示器的文件,你可以使用變量$_GET['selection'];使用您的選擇:)