2013-04-20 74 views
1

我想用下拉列表製作一個頁面,我希望用戶添加他想要的電影名稱並通過mysql查詢將其發送到數據庫。從下拉列表中調用一個值來更新查詢

現在,這是我做的,從數據庫中獲取的下拉列表中(這部分工作)

<select name="cinema_id" id="cinemaid"> 
    <?php 
    require('../classes/cinema_class.php'); 
    $cinemas = cinema::get_cinemas_name(); 
$cinema_id = $cinema['cinema_id']; 
$cinema_name = $cinema['cinema_name']; 

    foreach($cinemas as $cinema) 
    { 
     $selected = ''; 
     if($cinema['cinema_id'] == $_GET['cinema_id']) 
     { 
      $selected = 'select="selected"'; 
     } 

     echo "<option {$selected} > 
      {$cinema['cinema_name']} 
      </option>"; 
    } 
    ?> 
</select> 

,這是MySQL查詢更新

<?php 
$theaterid=$_POST['theaterid']; 
$theatername=$_POST['theatername']; 
$cinemaid=$_POST['cinemaid']; 
if(empty($theatername)){ 
echo "Theater Name is a must"; 
} 
else{ 
$update_movie=mysql_query("UPDATE `memoire`.`theater` 
      SET `theater_name`= '$theatername',`cinema_id`= '$cinemaid' //the $theatername is working, i think the $cinemaid is wrong 
      WHERE `theater_id`='$theaterid'"); 
if($update_movie) 
{ echo "Add Succesfull";} 
else 
{ echo "error in registration".mysql_error(); } 
}?> 

我認爲問題是要做什麼來調用下拉列表中的值,並將其發送到更新

順便說一句,頁面打印: 註冊錯誤Cannot add或upd吃了一個子行:外鍵約束失敗(memoiretheater,約束theater_ibfk_1外鍵(cinema_id)參考文獻cinemacinema_id)ON DELETE CASCADE ON UPDATE CASCADE)

回答

0

我覺得cinema_id是當前cinema_name。改變這一行:

echo "<option {$selected} > 

echo "<option {$selected} value='{$cinema[cinema_id]}' > 
0

在第一個片段,你的裏面,你需要有一個值的屬性。

echo "<option value='{$cinema['cinema_id']}' {$selected} > 
      {$cinema['cinema_name']} 
      </option>"; 

這將至少將正確的數據發佈到服務器。在第二個片段中,您引用了html選擇的id,而不是名稱。你應該使用這個名字。

$cinemaid=$_POST['cinema_id']; // notice the underscore 

這應該給你正確的價值在服務器上,一旦張貼。

請注意,您的腳本可以打開到SQL InjectionCross-Site Scripting。你可能想看看那些。

+0

仍然不能正常工作 – ouzoumzak 2013-04-20 16:32:53

+0

您是否看到錯誤? 錯誤registrationCannot添加或更新子行,外鍵約束失敗(memoire.theater,約束theater_ibfk_1外鍵(cinema_id)參考文獻電影院(cinema_id)ON DELETE CASCADE ON UPDATE CASCADE) 我認爲不便是錯誤的內數據庫可能? – ouzoumzak 2013-04-20 16:33:29

+0

數據庫內部沒有任何問題。電影明顯存在於數據庫中,否則它將不在您的下拉列表中。所以引用它應該沒問題。 問題在於數據處理。您必須將錯誤的變量傳遞給SQL查詢。在運行查詢之前,將其打印出來並確保您的$ cinemaid是您的想法。如果它不是數字,那就是你的問題。 – mbarlocker 2013-04-22 20:58:41

0

我想現在我可以問一個更好的問題。 在我的數據庫中,我需要添加cinema_id。 下拉列表給我cinema_name ...所以我需要用戶選擇cinema_name但我需要它的cinema_id添加到更新查詢

謝謝

0

這個問題已經無關,與你的上面的代碼片段,而是你如何在你的數據庫中設置你的外鍵。你可以發佈上面引用的表格結構以及電影表格,指出你如何設置你的參照鍵嗎?

相關問題