2016-07-17 10 views
0

Ich schreibe ein Programm, das eine Liste Schüler einer Klasse anzeigen wird und vor jedem Schülernamen gibt es drei Optionsfelder für Abwesenheit, Gegenwart und Abwesenheit.Einreichung der Optionsfeldvariable in PHP

Die Liste der Schüler wird mit While-Schleife generiert. Jetzt möchte ich den Wert von Radio-Button durch eine Variable wie folgt übergeben.

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>"; 

Ist es möglich, den Wert des Optionsfelds so zu senden?

+0

Ja. Der Name sollte jedoch für alle drei Optionsfelder identisch sein und sollte nicht für andere Datensätze oder andere Optionsfeldgruppen wiederholt werden. Behalte Namen wie 'name = 'dein_name'.Sie können den "Wert" der Schaltfläche auch mit der Variable übergeben. –

Antwort

0

Ja, das ist möglich. Code:

<?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>'; 
} 

Und auf Formular abschicken:

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

Ja, aber bitte beachten Sie, dass Ihre Eingabe sollten einzelne/doppelte Anführungszeichen Attribute.

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

oder können Sie doppelte Zitate wie dieses

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

oder verketten PHP entkommen Variablen

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

UPDATE: Überprüfen jedes Schülers Profil

  1. In Ihrer while-Schleife erstellen Sie einen Array-Namen. Ein Array-Name ist so, es hat eckige Klammern nach der Zeichenfolge 'Anwesenheit'.

    <input name="attendance[]" /> 
    
  2. Jetzt für jeden Schüler Zeile. Weisen Sie die Studenten-ID innerhalb des Array-Namens zu.

    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. Putting das $ id in Ihrem Array-Namen wird als Zeiger dient, verwenden Sie es in Ihrem Backend jeden Schülers Anwesenheitsstatus zu aktualisieren.

    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. 
    } 
    

Sie können auch diesen Code simulieren ich gemacht: http://viper-7.com/Tb1lbo

+0

danke ... aber was soll auf der nächsten Seite sein .. $ nameOpt = $ _ POST ['$ name']; Können wir so schreiben? –

+0

Ja, das ist richtig. Zuweisen von PHP-Variablen müssen keine Zitate haben, es sei denn, es handelt sich um eine Zeichenfolge. – dresdain

+0

Entfernen Sie die einzelnen Zitate auf $ _POST ['$ name']. $ name ist eine PHP-Variable, keine Zeichenfolge. – dresdain

0

Zuerst einfache oder doppelte Anführungszeichen um den Namen wie diese gehören müssen:

<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>"; 

können Sie dann verwenden, Der Name der Optionsfeldgruppe, um den Wert von $_POST oder $_GET superglobal abhängig von Ihrem Anfragetyp zu erhalten.

$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

while ($ row = mysql_fetch_array ($ result)) { $ id = $ row ['id']; $ name = $ row ['name']; Echo $ id $ name "; } hier ist mein code –

Verwandte Themen