Вставить несколько значений полей на основе определенного идентификатора - PullRequest
0 голосов
/ 25 июня 2019

У меня есть расписание от учителя.У этого учителя есть свои собственные классы, и она должна быть в состоянии ввести его тему по часам в базе данных.

Я пытаюсь выяснить, как это возможно.

Вот мойпроблема (код): в моем преподавателе html просматривают поле с разными именами

<td><input type="text" name="classContent_{{ item.content }}"></td>

Это будет

classContent_0
classContent_1
classContent_2
classContent_3

Поэтому у меня разные имена полей для каждой темы (час)

Теперь я получаю данные расписания и группирую их по датам (чтобы позже учитель мог выбрать конкретный день и получить данные)

$timetable = $administration->timetableDataByUsername($username);

        foreach ($timetable as $item)  {
            foreach ($item as $key => $value) {
                $timetableGroupedByDate[$item['date']][$key] = $value;
            }
        }

        var_dump($timetableGroupedByDate);

Вот дамп переменной

'2019-05-02' => 
    array (size=9)
      'profile_id' => string '2' (length=1)
      'untericht_id' => string '3' (length=1)
      'stundenplan_id' => string '3' (length=1)
      'inhalt' => null
      'zeit' => string '12:25' (length=5)
      'date' => string '2019-05-02' (length=10)
      'raum_nr' => string '10' (length=2)
      'typ' => string 'schlagzeug' (length=10)
      'content' => int 2
  '2019-06-02' => 
    array (size=9)
      'profile_id' => string '2' (length=1)
      'untericht_id' => string '5' (length=1)
      'stundenplan_id' => string '5' (length=1)
      'inhalt' => null 
      'zeit' => string '16:05' (length=5)
      'date' => string '2019-06-02' (length=10)
      'raum_nr' => string '5' (length=1)
      'typ' => string 'trombone' (length=8)
      'content' => int 4
  '2019-06-03' => 
    array (size=9)
      'profile_id' => string '2' (length=1)
      'untericht_id' => string '6' (length=1)
      'stundenplan_id' => string '6' (length=1)
      'inhalt' => null
      'zeit' => string '16:45' (length=5)
      'date' => string '2019-06-03' (length=10)
      'raum_nr' => string '10' (length=2)
      'typ' => string 'generell' (length=8)
      'content' => int 5

По сути, я хочу добавить специальное поле

inhalt

, теперь оно добавляется только к нижней части таблицы.

Вот основная проблема: мой оператор вставки

    public function addContent($content) {
        $stmt = $this->pdo->prepare("
                                        INSERT INTO untericht (inhalt)
                                        VALUE (?)
        ");

        $stmt->execute([$content]);
      }

, и вот как я его называю в контроллере:

        if (isset($_POST['submitContent'])) {
            $administration->addContent(
                    $_POST['classContent_0']
            );
}

В основном, когда я добавляю что-то в первое поле, онодобавляется в базу данных, но в виде новой строки.однако его следует добавить, например, для первого массива, в котором

inhalt

пуст

Как мне лучше всего решить эту проблему?

РЕДАКТИРОВАТЬ:

Вот изображение, поэтому оно имеет больше смысла.

enter image description here

1 Ответ

1 голос
/ 25 июня 2019

Вы хотите ОБНОВИТЬ строку базы данных.Вот пример метода:

public function updateContent($rowId, $content) {
    $statement = $this->pdo->prepare("UPDATE untericht
                                      SET inhalt = ?
                                      WHERE id = ?");

    $statement ->execute([$content, $rowId]);
}

Обратите внимание, как вам нужно иметь возможность однозначно определить, какую строку вы хотите обновить.Я сделал это с $rowId.Я не уверен, что в вашей таблице базы данных есть такой столбец, но в большинстве случаев полезно иметь столбец с уникальным автоинкрементным значением .

Это не хорошоИдея проверить строку, где inhalt пусто, потому что это означает, что вы никогда не уверены, какая строка будет изменена.

...