2016-05-14 29 views
1

Select語句

<?php 
$q = $db->prepare('SELECT album_id, album_name 
       FROM table_albums ORDER BY album_name'); 
$q->bindParam(':album_id', $album_id); 
$q->bindParam(':album_name', $album_name); 
$q->execute(); 

的最後一個值只用HTML這裏

?> 
<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title><?php echo basename(__FILE__); ?></title> 
</head> 

<body> 
<h1>Add Tracts</h1> 

<form method="post"> 
    Tracks Name:<br> 
    <input type="text" name="tracks_name" value="<?php $tracks_name ?>"><br> 
    <select> 
     <option name="album_id" id="album_id">Select</option> 
     <?php while ($row = $q->fetch()) { ?> 
     <option value="<?php echo $row->album_id;?>"> 

這是我認爲這個問題是

  <?php echo $row->album_name; $album_id = $row->album_id;?> 

     </option> 
     <?php } ?> 

    </select> 
    <input type="submit" value="Submit now"/> 
</form> 

只處理表格如果$ _POST不爲空

<?php 
if (! empty($_POST)) { 
    $stmt = $db->prepare("INSERT INTO table_tracks 
         (tracks_name, tracks_id, album_id) 
       VALUE (:tracks_name, :tracks_id, :album_id)"); 
    $stmt->bindParam(':tracks_id', $tracks_id); 
    $stmt->bindParam(':tracks_name', $tracks_name); 
    $stmt->bindParam(':album_id', $album_id); 

插入一行

$tracks_name = $_POST["tracks_name"]; 
    $stmt->execute(); 
} 
?> 
</body> 
</html> 

album_id總是在數據庫 的最後一個值,我不知道該怎麼辦

回答

0

你需要在這裏也發生變化,加echo

<input type="text" name="tracks_name" value="<?php echo $tracks_name; ?>"><br> 

而且

<select name="album_id" id="album_id"> 
    <option value="">Select</option> 

您的album_id沒有提交,我們通常會給select標記姓名和ID,而不是option

0

在你指向行,你就分配$album_id存在,但不要在循環中使用它。所以當然循環將完成,最後的作業將反映最後的記錄。

如果您需要對其進行其他操作,您可能需要將其放置在數組中,或者在手邊有數據時進行處理。

0

對於問題出在哪裏,你是正確的。

<?php echo $row->album_name; $album_id = $row->album_id;?> 

$album_id始終是數據庫中的最後一個專輯ID。 你不需要它。 只需使用:

<?php echo $row->album_name; ?> 

綁定正確的變量:album_id

$stmt->bindParam(':album_id', $_POST['$album_id']); 
+0

$ _ POST只有一個單元,it.array(大小= 1) 'tracks_name'=>字符串 'VVV'(長度= 3) – dgs

+0

@dgs因爲你需要改變你的''。 – TheDrot

0
<form method="post"> 
    Tracks Name:<br> 
    <input type="text" name="tracks_name" value="<?php $tracks_name ?>"><br> 
    <select name="album_id" id="album_id"> 
     <option value"" >Select</option> 
     <?php while ($row = $q->fetch()) { ?> 
     <option value="<?php echo $row->album_id;?>"> 
      <?php echo $row->album_name; $album_id = $row->album_id;?> 
     </option> 
     <?php } ?> 

    </select> 
    <input type="submit" value="Submit now"/> 
</form> 


<?php include '../includes/logout.php'; 
// Only process the form if $_POST isn't empty 
if (! empty($_POST)) { 
    var_dump($_POST) ; 
    $stmt = $db->prepare("INSERT INTO table_tracks (tracks_name, tracks_id,   album_id) 
         VALUE     (:tracks_name, :tracks_id, :album_id)"); 
    $stmt->bindParam(':tracks_id', $tracks_id); 
    $stmt->bindParam(':tracks_name', $tracks_name); 
    $stmt->bindParam(':album_id', $album_id); 

    // insert one row 
    $album_id = $_POST["album_id"]; 
    $tracks_name = $_POST["tracks_name"]; 
    $stmt->execute(); 
} 
?>