Я создаю приложение, которое будет перечислять классы для учителя в выбранный день, каждый класс - кнопка на экране. Этот список составлен с использованием *ngFor
и извлекает данные из файла ts, который изначально был получен из запроса PHP / базы данных.
Затем учитель будет нажимать кнопку, чтобы показать, какие ученики должны быть в классе в этот день. Это приложение для мониторинга посещаемости / отсутствия.
Однако я тестирую *ngFor
, чтобы составить свой список, и поскольку данные хранятся в виде 3 объектов, каждый с информацией для учащегося, три кнопки динамически создаются *ngFor
- когда на самом деле, так как три ученика находятся в одном классе, мне нужна всего одна кнопка.
Следующую кнопку нужно будет создать только для следующего урока учителя в тот день.
Я полагаю, что это проблема алгоритма, или, возможно, нужно выполнить другой запрос для получения данных из SQL. Я не знаю.
Я потерян.
HTML
<ion-list>
<ion-card padding *ngFor="let cour of planning; let i = index" (click)="showStudents($event, i)">
<h2>{{ cour.cours }}</h2>
<p>{{ cour.time }}</p>
<p>{{ cour.date }}</p>
<p>{{ cour.lieux }}</p>
<p>{{ cour.duration }}</p>
</ion-card>
</ion-list>
Услуги
getCoursList(date, idIntervenant) {
return this.http.post('http://localhost/Attendance App/myApp/src/app/api/getCours.php?id='+idIntervenant,
{ date, }).subscribe(data => {
console.log(Object.values(data));
let planningData = Object.values(data);
const grabArray = planningData[0];
const id = grabArray.intervenant;
if (id !== undefined) {
// console.log('test array', id);
let navExtras: NavigationExtras = {
state: {
planning: planningData
}
}
this.router.navigate(['/cours/', id], navExtras);
};
},
error => {
console.log(error);
});
}
PHP-запрос к базе данных
if (isset($_POST["date"])) {
// $id = $_POST["id"];
$origDate = date("Y-m-d", strtotime($_POST['date']));
$date = $origDate;
$id = $_GET['id'];
$stmt = $conn->prepare("SELECT * FROM planning WHERE intervenant = :id AND date = :date");
$stmt->execute([':id' => $id, ':date' => $date]);
if ($stmt->rowCount() > 0) {
$output = array();
$output = $stmt->fetchAll();
echo json_encode($output);
} else {
$errors = "No data found for this date";
echo json_encode($errors);
}
// $conn->close();
}
Данные, полученные из запроса PHP - 1 массив, содержащий 3 объекта
[object Array]: [Object, Object, Object]
0: Object
cours: "Suivi individuel"
date: "2019-07-06"
duration: "1h30"
etudiant: "james ross"
id_planning: 19
intervenant: "2"
lieux: "Nice 2"
time: "12:00"
__proto__: Object
1: Object
cours: "Suivi individuel"
date: "2019-07-06"
duration: "1h30"
etudiant: "Tupac Shakur"
id_planning: 20
intervenant: "2"
lieux: "Nice 2"
time: "12:00"
__proto__: Object
2: Object
cours: "Suivi individuel"
date: "2019-07-06"
duration: "1h30"
etudiant: "Joyner lucas"
id_planning: 21
intervenant: "2"
lieux: "Nice 2"
time: "12:00"
__proto__: Object
length: "3"
Все трое учеников идут в один и тот же класс в одно и то же время и т.д., поэтому я хочу, чтобы динамически создавалась только одна кнопка.
Если бы у учителя был второй урок в тот день, он бы выпустил вторую кнопку и т. Д.
В настоящее время нет сообщений об ошибках, просто я не получаю желаемый результат.