Unten ist mein Code zum Drucken oder Anzeigen von Daten aus einem Array im Dropdown-Menü. Die Daten werden in der API gespeichert. Ich benutze die for-Schleife für meinen Code. Wenn ich jedoch den folgenden Code verwende, wird mehr als ein Dropdown-Feld angezeigt. Ich habe bereits nach der Lösung gesucht, aber mein Problem wurde dadurch immer noch nicht gelöst. Vielen Dank im Voraus für Ihre Hilfe.
<div class="select" id="new-input" onselect="SelectStudents()">
<?php $i = 0; foreach ($arr['data'] as $key => $value) { ?>
<select required="<?php echo ($i == 0) ? 'required':''; ?>">
<option value="<?php echo $value['studentName']; ?>">
<?php echo $value['studentName']; ?>
</option>
</select>
<?php $i++; } ?>
</div>
// Data From API
"data": [
{
"TeacherID": "123",
"TeacherName": "Miss Sara",
"StudName": "Nina Simon",
},
{
"TeacherID": "124",
"TeacherName": "Madam Downy",
"StudName": "Mike Dave",
},
{
"TeacherID": "125",
"TeacherName": "Mr. Adam",
"StudName": "Jenny William",
}
]
Ihr <select>
Tag befindet sich innerhalb der Schleife, sodass der Code für jede Iteration der Schleife ein Auswahlelement erzeugt.
Versuche dies:
<div class="select" id="new-input" onselect="SelectStudents()">
<select required>
<?php foreach ($arr['data'] as $key => $value) {
echo '<option value="'.$value['studentName'].'">';
echo $value['studentName'];
echo '</option>';
} ?>
</select>
</div>
Wenn Sie DOM-Elemente in der Liste ändern möchten, wählen Sie: Es ist wahrscheinlich besser, JavaScript zu verwenden. Wenn Sie dies jedoch serverseitig tun müssen, finden Sie hier eine Idee für eine Funktion, mit der Sie helfen können:
function getStudents($teacherID, $arr) {
foreach ($arr as $key => $record) {
if ($record['TeacherID'] == $teacherID){
return $record['StudName'];
}
}
}
Ich gehe davon aus, dass wenn ich im Menü auf Miss Sara klicke, der Name der Schüler unter Miss Sara (Nina Simon) im Dropdown-Menü geladen wird.
Nach meinem Verständnis möchten Sie so etwas. - Ich habe einige Annahmen darüber getroffen, was los ist. - Ich habe Daten als PHP-Variable fest codiert. - Die ursprüngliche Frage betraf jede Schleife, daher habe ich diese häufig verwendet.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
a{
display: block;
margin-bottom: 1rem;
}
.card{
padding: 1rem;
background-color: #eee;
width: 300px;
}
select{
margin-top: 1rem;
width: 300px;
}
</style>
</head>
<body>
<?php
class StudentsClass
{
public function listStudents($teacherID, $arr) {
foreach ($arr as $key => $record) {
if ($record['TeacherID'] == $teacherID){
return $record['StudName'];
}
}
}
public function listTeachers($arr) {
$s=[];
foreach ($arr as $key => $record) {
$s[$record['TeacherID']] = $record['TeacherName'];
}
return $s;
}
}
class DisplayHTML
{
public function selectHTML($list,$cssClass='') {
$s='';
if ($cssClass!='') $css = 'class="'.$cssClass.'" ' ; else $css = '';
foreach ($list as $key => $item) {
$s.='<option '.$css.'value="'.$item.'">'.$item.'</option>';
}
$s = '<select>'.$s.'</select>';
return $s;
}
public function anchorHTML($list,$cssClass='') {
$s='';
if ($cssClass!='') $css = 'class="'.$cssClass.'" ' ; else $css = '';
foreach ($list as $key => $item) {
$s.='<a '.$css.'href="?teacherID='.$key.'">'.$item.'</a>';
}
return $s;
}
public function divHTML($id,$data) {
$s='<div class="card"> <h2>My Student list</h2><ul id="studentlist"> </ul>';
foreach ($data as $key => $item) {
if ($item['TeacherID']==$id){
foreach ($item['StudName'] as $k => $value) {
$s.='<li>'.$value.'</li>';
}
$s.='<h3>'.$item['TeacherName'].'</h3></div>';
return $s;
}
}
return '<div class="card">
<h2>My Student list</h2><ul><li>-</li></ul>
<h3>--</h3> </div>';
}
}
$arr = [
[
"TeacherID"=> "123",
"TeacherName"=> "Miss Sara",
"StudName"=> ["Nina","Simon"],
],
[
"TeacherID"=> "124",
"TeacherName"=> "Madam Downy",
"StudName"=> ["Mike","Dave"],
],
[
"TeacherID"=> "125",
"TeacherName"=> "Mr. Adam",
"StudName"=> ["Jenny","William"],
]
];
$stlst = new DisplayHTML;
$stdents = new StudentsClass;
echo $stlst->anchorHTML($stdents->listTeachers($arr));
if (isset($_GET['teacherID'])) {
echo $stlst->divHTML($_GET['teacherID'],$arr);
echo $stlst->selectHTML($stdents->listStudents($_GET['teacherID'],$arr));
}
?>
</body>
</html>
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen