2016-05-14 12 views
1

Select-Anweisung

<?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(); 

Gerade hier 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;?>"> 

Dies ist, wo ich denke, das Problem

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

     </option> 
     <?php } ?> 

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

Das Formular nur verarbeiten, wenn $ _POST nicht leer ist

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

Einsatz einer Reihe

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

album_id ist immer der letzte Wert in der Datenbank Ich bin nicht sicher, was

Antwort

0

Sie müssen auch hier verändern, ergänzen echo

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

Und

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

Ihre album_id reichte nicht ein, wir geben normalerweise den Namen und die ID select nicht an option.

0

auf der Linie zu tun, dass Sie an dem Punkt, Sie zuweisen $album_id dort aber Benutze es nicht innerhalb der Schleife. Natürlich wird die Schleife abgeschlossen und die letzte Zuweisung wird den letzten Datensatz wiedergeben.

Wenn Sie etwas anderes damit tun müssen, müssen Sie es entweder in einem Array platzieren oder die Verarbeitung durchführen, während Sie die Daten zur Hand haben.

0

Sie sind richtig, wo das Problem liegt.

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

$album_id ist immer der letzte Album-ID in der Datenbank. Sie benötigen es nicht. Verwenden Sie einfach:

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

Bind die richtige Variable :album_id:

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

_POST $ hat nur ein Element es it.array (size = 1) 'tracks_name' => string 'vvv' (Länge = 3) – dgs

+0

@dgs Weil Sie benötigen ' 'als @Rishi antwortete. – 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(); 
} 
?>