Как добавить в базу массив неопределённой длины?

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

Так вот, я реализовал вывод Формы в цикле

<?php
include './connect.php';
echo "<table class='stripy'><tr><td>№</td><td>Ф.И.О.</td><td>Email</td><td>Вариант</td></tr>";
$q = "SELECT * from student";
$qr = mysql_query($q);
if (!$qr)
    die("Сбой при доступе к базе данных: " . mysql_error());
$rows = mysql_num_rows($qr);
for ($j = 0; $j < $rows; ++$j) { //вывод запрса
    echo '<tr>';
    echo '<td><input type="pass" name="id' . $j . '" class="tab" value="' . mysql_result($qr, $j, 'id') . '"></td>';
    echo '<td><input type="text" name="fio' . $j . '" class="tab" value="' . mysql_result($qr, $j, 'fio') . '"></td>';
    echo '<td><input type="text" name="email' . $j . '" class="tab" value="' . mysql_result($qr, $j, 'email') . '"></td>';
    echo '<td><input type="text" name="var' . $j . '" class="tab" value="' . mysql_result($qr, $j, 'var') . '"></td>';

    echo '</tr>';
}
echo '</table>';


И теперь не могу добавить данные в таблицу mysql, написал следующий код для добавления данных

for ($j = 0; $j < 30; ++$j) { $n = "fio".$j; 
mysql_query('UPDATE `student` SET `fio`='.$_POST[$n].'');  }

Он не работает, подскажите, что я делаю не так? Может, есть другое решение для группового редактирования?
  • Вопрос задан
  • 2622 просмотра
Пригласить эксперта
Ответы на вопрос 3
@v_prom
А смысл ваших действий какой? тут поле fio у всех записей поочередно меняется на то которое вы извлекаете из гипермассива. + ко всему это небезопасно.
Ответ написан
@Vampiro
1. для каждого юзера надо сохранять его id
2. надо заюзать pdo
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'pass',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql="update `students` set fio=:fio where id=:id";
$stmt = $dbh->prepare($sql);
try {
	$dbh->beginTransaction();
	$stmt->bindParam(":fio",$_POST['fio']);
	$stmt->bindParam(":id",$_POST['id']);
	//$id = $dbh->lastInsertId(); // для инсертов, тут не надо.
	$dbh->commit();
} catch(\PDOException $e) {
	$dbh->rollback();
}

3. Добавить в код выше цикл по каждой записи из массива $_POST
3.1 посмотреть какие там ключи можно либо отладчиком, либо var_dump($_POST);die();

Как-то так. Остальное вы сами сможете осилить.
Ответ написан
Комментировать
svd71
@svd71
для созданных из базы имея лучше давать как ...name="idо[' . $j . ']"... , для новых созданных name="idn[]". После сабмита в POST будет пара массивов: ido с индексацией назначенной из переменной $j и idn с индексацией от 0 до n. и в $_POST['idn']будут все новые значения которые обрабатывать по insert.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы