簡體   English   中英

如何從 PHP 表單中檢索數據

[英]How to retrieve data from PHP form

我目前正在處理一項涉及大量 php 內容的作業。 所以基本上我有一個網站,它允許您購買電影票,您創建一個帳戶,登錄以訪問電影,選擇日期和時間,數量然后結帳。 我目前一直在嘗試檢索日期和時間。
此代碼是用戶登錄后的 php 頁面,當前正在選擇他們想要的電影和所有選項。

//Sign In Page
$query = 'SELECT * FROM project_movies ORDER BY title;';
$results = $conn->query($query);
if ($results && $results->num_rows > 0) {
  $n = $results->num_rows;
  echo '<form method="post" action="project_review.php"><table border="1">';
  echo '<tr><th>Movies</th><th>Synopsis</th><th>Day</th><th>Time</th><th>Quantity</th><th>Add to Cart</th></tr>';
  for ($i = 0; $i < $n; $i++) {
    $movies = $results->fetch_assoc();
    echo "<tr><td>$movies[title]<br /><img src='$movies[pathname]'></td><td>$movies[synopsis]</td><td>";
  
    //Select Day of Week
    $days = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
    $length = count($days);
    for ($j = 0; $j < $length; $j++) {
        echo "<input type='checkbox' value='$days[$j]' name='day'>
        <label for='$days[$j]'>$days[$j]</label><br />";
    }
    echo "</td><td>";
    
   //Select Time
   $time = array('12:00','3:00','6:00','9:00');
   $length = count($time);
    for ($m = 0; $m < $length; $m++) {
        echo "<input type='checkbox' value='$time[$m]' name='time'>
        <label for='$time[$m]'>$time[$m]</label><br />";
    }
    echo "</td><td>";
    
    //Select Quantity of Tickets
    echo "Kids $3 <input type='number' value='kids' name='kids' style=;width:35px;'><br />
          Adults $9 <input type='number' value='adult' name='adult' style=;width:35px;'><br />
          Seniors $5 <input type='number' value='senior' name='senior' style=;width:35px;'>";
          
    echo "</td><td><input type='checkbox' name='checkout[]' value='$movies[mid]'";
        
    echo "></td></tr>";
  } 
  echo '</table><input type="submit" value="Checkout"></form>';
}

這部分代碼來自評論 php 頁面,該頁面將向用戶顯示他們選擇的內容。

//Review Page
$_SESSION['checkout'] = $_POST['checkout'];
$_SESSION['day'] = $_POST['day'];
$_SESSION['time'] = $_POST['time'];

echo '<p>Movie tickets in your cart:</p>';
// connect to MySQL server
$conn = new mysqli($hn, $user, $passwd, $db);
if ($conn->connect_error)
  die($conn->connect_error);

$n = count($_SESSION['checkout']);
echo '<ul>';

for ($i = 0; $i < $n; $i++) {
  $mid = $_SESSION['checkout'][$i];
  $day = $_SESSION['day'][$j];
  $time = $_SESSION['time'][$m];
  $query = "SELECT title FROM project_movies WHERE mid = $mid;";
  //echo $query;
  $result = $conn->query($query);
  if ($result && $result->num_rows > 0) {
    $movies = $result->fetch_assoc();
    echo '<li>' .$movies['title'] . '</li>';
    echo '<p> &rarr;' .$day. ' at ' .$time. '</p>';

到目前為止,我所做的只是能夠查看選擇了哪部電影,可以選擇其中的多個,並且它們會出現。 如果我只為一部電影選擇日期和時間,那么它會正確顯示。 但是,當我選擇帶有第二組日期和時間選項的第二部電影時,它只會打印出兩部電影的日期和時間。
這是頁面的鏈接,我現在設置的登錄名是
用戶:管理員
通行證:123456

您可以選擇電影作為復選框,名稱為checkout[] 這將有效地允許您添加多部電影,我相信這是您的意圖。

但是,您的日期/時間仍然只是一個恆定date而不是date[] 因此,表單中設置了名稱datetime的最后一個輸入元素將是唯一發送的元素。

嘗試將 [] 添加到您的日期和時間輸入的名稱中,以通過$_POST發送所有日期和時間。 然后您可以使用$_POST["date"][0] (第一部電影)和$_POST["date"][1] (第二部電影)訪問每個。

編輯

我在你的評論頁面上注意到你有

$mid = $_SESSION['checkout'][$i];
$day = $_SESSION['day'][$j];
$time = $_SESSION['time'][$m];

我沒有看到任何地方指定 $j 和 $m 是什么。 因為你在 for 循環中。 我認為您需要將這些更改為 $i,因為這是您目前正在經歷的循環。

您可能需要執行另一個循環才能獲取用戶選擇的所有時間和日期。

編輯 #2查看您的腳本通過您提供的示例生成的源代碼,日期列為:

<label for='Sun'>Sun</label><br /><input type='checkbox' value='Mon' name='day[1]'>
<label for='Mon'>Mon</label><br /><input type='checkbox' value='Tue' name='day[2]'>
<label for='Tue'>Tue</label><br /><input type='checkbox' value='Wed' name='day[3]'>
<label for='Wed'>Wed</label><br /><input type='checkbox' value='Thu' name='day[4]'>
<label for='Thu'>Thu</label><br /><input type='checkbox' value='Fri' name='day[5]'>
<label for='Fri'>Fri</label><br /><input type='checkbox' value='Sat' name='day[6]'>

這是我首先指定的。 這對所有電影都是一樣的,所以最后一組是最后一組。 使它們成為:

<label for='Sun'>Sun</label><br /><input type='checkbox' value='Mon' name='day[][1]'>
<label for='Mon'>Mon</label><br /><input type='checkbox' value='Tue' name='day[][2]'>
<label for='Tue'>Tue</label><br /><input type='checkbox' value='Wed' name='day[][3]'>
<label for='Wed'>Wed</label><br /><input type='checkbox' value='Thu' name='day[][4]'>
<label for='Thu'>Thu</label><br /><input type='checkbox' value='Fri' name='day[][5]'>
<label for='Fri'>Fri</label><br /><input type='checkbox' value='Sat' name='day[][6]'>

然后您可以遍歷它們以檢索每部電影所需的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM