2016-07-17 33 views
0

我正在編寫一個程序,它將顯示一個班級的學生列表,並在每個學生姓名前面有三個單選按鈕用於缺​​席,在場和休假。在php中提交單選按鈕變量

學生列表是用while循環生成的。現在我想通過像這樣的變量傳遞單選按鈕的值。

echo "<tr>" 
    . "<td>$id</td>" 
    . "<td>$name</td>" 
    . "<td><input type=radio name=$name value=P></td>" 
    . "<td><input type=radio value=L name=$name></td>" 
    . "<td><input type=radio name=$name value=A></td>" 
    . "</tr>"; 

這樣可以發送單選按鈕的值嗎?

+0

是的。但是對於所有三個單選按鈕,名稱應該相同,並且不應爲其他記錄或其他單選按鈕組重複。保持名稱,如'name ='your_name''。你也可以使用變量傳遞按鈕的'value'。 –

回答

0

是的,這是可能的。代碼:

<?php 

$students = [ 
    [ 
     'id' => '1', 
     'name' => 'Amy' 
    ], 
    [ 
     'id' => '2', 
     'name' => 'Bob' 
    ], 
    [ 
     'id' => '3', 
     'name' => 'Charlie' 
    ]  
]; 

echo 
'<form action="' . $_SERVER['PHP_SELF'] . '" method="post">' . 
'<table>' . 
' <thead>' . 
'  <tr>' . 
'   <th>Student Id</th>' . 
'   <th>Student Name</th>' . 
'   <th>Attendance (P/L/A)</th>' . 
'  </tr>' . 
' </thead>' . 
'  <tbody>'; 

foreach ($students as $student) { 
    echo 
    '  <tr>' . 
    '   <td>' . $student['id'] . '</td>' . 
    '   <td>' . $student['name'] . '</td>' . 
    '   <td>' . 
    '    <input type="radio" name="attendance_' . $student['id'] . '" value="P" />' . 
    '    <input type="radio" name="attendance_' . $student['id'] . '" value="L" />' . 
    '    <input type="radio" name="attendance_' . $student['id'] . '" value="A" />' . 
    '   </td>' . 
    '  </tr>'; 
} 

echo 
'  <tr>' . 
'   <td colspan="3">' . 
'    <input type="submit" name="submit" value="Attendance" />' . 
'   </td>' . 
'  </tr>' . 
' </tbody>' . 
'</table>' . 
'</form>'; 

if (isset($_POST['submit'])) { 
    echo '<pre>' . print_r($_POST, true) . '</pre>'; 
} 

而且在形式提交:

Array 
(
    [attendance_1] => P 
    [attendance_2] => L 
    [attendance_3] => L 
    [submit] => Attendance 
) 
3

是的,但請你注意,你輸入屬性應該有單/雙引號。

echo "<input type=radio name='$name' value='p' />"; 

,或者你可以逃脫雙引號這樣

echo "<input type=radio name=\"$name\" value=\"P\">"; 

或連接PHP變量

echo '<input type=radio name="'.$name.'" value="P">"; 

UPDATE: 檢查每個學生的個人資料

  1. 在你的while循環中創建一個數組名稱。一個數組名是這樣的,它有方括號後字符串'出席'。

    <input name="attendance[]" /> 
    
  2. 現在,對於每個學生的排。在數組名稱中分配學生ID。

    echo "<tr>" 
    . "<td>".$id."</td>" 
    . "<td>".$name."</td>" 
    . "<td><input type='radio' name='attendance[".$id."]' value='P'></td>" 
    . "<td><input type='radio' name='attendance[".$id."]' value='L'></td>" 
    . "<td><input type='radio' name='attendance[".$id."]' value='A'></td>" 
    . "</tr>"; 
    
  3. 把$ ID的數組名內將作爲你的指針,用它在你的後臺更新每個學生的出勤狀況。

    foreach ($_POST['attendance'] as $key => $value) { 
    //$_POST['attendance'] variable is an array. 
    //Where $key variable is your Student ID, use this to update their status 
    //Where $value is a student's selected attendance status. 
    
        echo 'Student ID:'. $key . ' is '. $value . '<br>'; 
        //Update a student's attendance status using $key as their id. 
    } 
    

您還可以模擬這個代碼,我提出:http://viper-7.com/Tb1lbo

+0

thankx ...但是在下一頁會有什麼shuld .. $ nameOpt = $ _ POST ['$ name'];我們可以這樣寫嗎? –

+0

是的,這是正確的。除非是字符串,否則分配PHP變量不需要引用。 – dresdain

+0

刪除$ _POST ['$ name']上的單引號。 $ name是一個php變量而不是一個字符串。 – dresdain

0

首先,你需要包括周圍的名稱單或雙引號是這樣的:

<tr><td>$id</td><td>$name</td><td><input type='radio' name='$name' value='P'></td><td><input type='radio' value='L' name='$name'></td><td><input type='radio' name='$name' value='A'></td></tr>"; 

然後,您可以使用單選按鈕組的名稱,根據您的請求類型從$_POST$_GET超全球獲取值。

$name = 'name_of_the_radios' 
$studentPresence = $_POST[$name] //For get requests use $_GET 
if($studentPresence == 'P') 
{ 
    //Student is present 
} 
else if($studentPresence == 'A') 
{ 
    //Student is absent 
} 
else if($studentPresence == 'L') 
{ 
    //Student is on leave 
} 
else 
{ 
    throw new Exception("Invalid student presence argument'); 
} 
+0

{ {0} = $ row ['id']; $ name = $ row ['name']; 回聲​​$ ID​​$命名​​​​​​「; } 這是我的代碼 –