Доброго времени всем, кто набрел на это сообщение.
Вкратце пред история. Получил недавно тестовое задание, которое (в силу своей ограниченности в знаниях, пока) выполнить в срок не смог. Но затею не бросил и чисто для себя решил "доковырять" его.
Суть вопроса, которая на данный момент ставит меня в тупик!
Есть страница с формой, с данными контакта, на которую мы попадаем при щелчке на кнопку "изменить" возле соответствующего контакта в списке.
код страницы:
<body>
<div class="app-head">
<h2>Изменить данные контакта <i><?=$contact['name']?></i></h2> <!--добавляем в название имя контакта-->
</div>
<div class="contacts-table">
<div class="table-content">
<form action="/contact/change/<?=$contact['id']?>" method="post"><!-- отправляем данные с id контакта -->
<input type="text" name="name" class="form-control" placeholder="<?=$contact['name']?>"><br><!--вводим в поле "Имя" уже имеющиеся данные-->
<input type="text" name="surname" class="form-control" placeholder="<?php if(isset($contact['surname'])&&!empty($contact['surname']))
{echo $contact['surname'];} else { echo "Фамилия"; }?>"><br> <!-- если есть заполненная фамилия контакта записываем, если это поле не заполненно пишем "Фамилия" -->
<input type="text" name="patronymic" class="form-control" placeholder="<?php if(isset($contact['patronymic'])&&!empty($contact['patronymic']))
{echo $contact['patronymic'];} else { echo "Отчество"; }?>"><br>
<p>Номер телефона:</p>
<?php foreach ($numbers as $number):?>
<input type="text" name="<?=$number['id']?>" class="form-control" placeholder="<?=$number['phone_number']?>" id="phone-number">
<?php endforeach;?>
<br><br>
<div class="btn btn-block">
<input type="submit" name="submit" value="Изменить">
</div>
</form>
</div>
</div>
</body>
Получаем данные о контакте из БД в соответствующей модели и подставляем в поля. Так же получаем данные из тругой таблицы с номерами телефонов контакта, которые можем сортировать по полю 'contact_id', которое соответствует полю 'id' в таблице с контактами. Соответственно, отправляем в нужный экшн модели "Контакы" через "КонтактКонтроллер" (он непосредственно принимает данные из формы, немного их валидирует, записывает в массив и передает модели) которая будет помещать данные в БД. Вот код этого экшена из модели:
public static function changeContact($options)
{
$db = Db::getConnection();
$sql = 'UPDATE contacts SET name=:name, surname=:surname, patronymic= '
. ':patronymic WHERE id = ' . $options['id'];
$result = $db->prepare($sql);
$result->bindParam(':name', $options['name'], PDO::PARAM_STR);
$result->bindParam(':surname', $options['surname'], PDO::PARAM_STR);
$result->bindParam(':patronymic', $options['patronymic'], PDO::PARAM_STR);
return $result->execute();
}
Но эта модель обрабатывает данные только о пользователи и помещает их в таблицу с пользователями , а таблица с номерами телефонов для них сформирована отдельно, т. к. пользователь может иметь и два и более номеров.
Так вот вопрос, наконец то, как мне принимать и обрабатывать данные из этой формы если одному id контакта соответствует несколько номеров телефонов?
Спасибо