Целый месяц был занят другими не менее важными делами по учёбе и буквально несколько дней назад вернулся к этой работе.
Я считаю что Ваш пример для начинающего довольно таки сложный и как я понял Вы не совсем поняли какой результат в итоге мне нужен.
Я воспользовался не которыми вашими идеями и сделал всё по другому. Разобрался как работает ajax в jquery запросах, разобрался в json'е, узнал кое-что новое новое в mysql запросах. Полностью переосмыслил структуру своей базы данных.
Так вот. Мне нужно было при заходе на страницу, уже видеть таблицу с данными полученных из базы. При этом в последнем поле должны создаваться checkbox'ы. Выглядит у меня это так:
http://prntscr.com/agrpkk
А вывод я сделал таким:
index.php
<table class="table table-striped table-bordered table-hover" cellpadding="0" cellspacing="0" border="0" id="example">
<thead>
<tr>
<th>#</th>
<th>Novads</th>
<th>Skola</th>
<th>Klase</th>
<th>Skolnieks</th>
<th>Skolotajs</th>
<th>Skolnieka telefons</th>
<th>Skolotaja telefons</th>
<th>e-mail</th>
<th>Laiks</th>
<th>nakts sk</th>
<th>*Izvelne</th>
</tr>
</thead>
<tbody id="rl9kl">
<?php
$query=mysqli_query($connect, "SELECT rl.id, CONCAT(rl.vards,' ',rl.uzvards) AS skolnieks, rl.id_nov, rl.skola, rl.klase, rl.skolotajs, rl.skolnieka_telefons,
rl.skolotaja_telefons, rl.skolnieka_email, rl.naktsmitne_laiks, rl.naksnotaju_sk, n.id_nov, n.nosaukums
FROM registracijas_lapa_9kl rl, novadi n WHERE rl.id_nov=n.id_nov ORDER BY rl.vards ");
while ($reg_list=mysqli_fetch_array($query))
{
if(empty($reg_list['naktsmitne_laiks']))
{
$reg_list['naktsmitne_laiks']="-";
}
if(empty($reg_list['naksnotaju_sk']))
{
$reg_list['naksnotaju_sk']="-";
}
echo '<tr>';
echo '<td>'.$reg_list['id'].'</td>';
echo '<td>' .$reg_list['nosaukums']. '</td>';
echo '<td>' . $reg_list['skola']. '</td>';
echo '<td>' . $reg_list['klase'] . '</td>';
echo '<td>' . $reg_list['skolnieks'] . '</td>';
echo '<td>' . $reg_list['skolotajs'] . '</td>';
echo '<td>' . $reg_list['skolnieka_telefons']. '</td>';
echo '<td>' . $reg_list['skolotaja_telefons'] . '</td>';
echo '<td>' . $reg_list['skolnieka_email'] . '</td>';
echo '<td>' .$reg_list['naktsmitne_laiks']. '</td>';
echo '<td>' .$reg_list['naksnotaju_sk']. '</td>';
echo '<td><input type="checkbox" value="'.$reg_list['id'].'" name="id[]" form="form1"></td>';
echo '</tr>';
}
?>
</tbody>
</table>
<form id="form1" action="ajax/delete.php" method="post">
<input class="btn btn-primary" type="submit" value="Удалить выбранные записи">
</form>
Если кому не понятно, я использовал латышские названия переменных и названия полей в таблицах, так как сам из Латвии и моя курсовая работа тоже должна быть на соответствующем языке, увы.
вот перевод:
vards - имя
uzvards - фамилия
skolnieks - школьник
skolotajs - учитель
novads - край/регион
nosaukums - название
nasknotaju_sk - кол-во начюющих
nakstmitnes_laiks - дата ночевки (до какого числа)
Далее по нажатию по кнопке "Удалить выбранные записи" должны удаляться из таблицы те записи где я расставил checkbox'ы.
Реализовал я это так:
index.php
$(document).ready(function()
{
$('#form1').ajaxForm(
{//////////////////////////таблица 9 классов
success: function(data)
{
if(data)
{
$('#rl9kl').html(data);
}
else
{
alert("Ни одна запись не была выбрана!");
}
}
});
});
Я решил использовать jquery form plugin
Далее это всё отправляется на обработку php скрипту.
delete.php
<?php
header('Content-Type: text/html; charset=utf-8');
include_once ($_SERVER["DOCUMENT_ROOT"] . "/include/connect.php");
if($_POST['id'])
{
$id=implode(',', $_POST['id']);
$q=mysqli_query($connect, "DELETE FROM registracijas_lapa_9kl WHERE id IN($id)");
//вывод таблицы списка зарегистрированных учиников 9-х классов
$query=mysqli_query($connect, "SELECT rl.id, CONCAT(rl.vards,' ',rl.uzvards) AS skolnieks, rl.id_nov, rl.skola, rl.klase,rl.skolotajs, rl.skolnieka_telefons,
rl.skolotaja_telefons, rl.skolnieka_email, rl.naktsmitne_laiks, rl.naksnotaju_sk, n.id_nov, n.nosaukums
FROM registracijas_lapa_9kl rl, novadi n WHERE rl.id_nov=n.id_nov ORDER BY rl.id ");
while ($reg_list=mysqli_fetch_array($query))
{
if(empty($reg_list['naktsmitne_laiks']))
{
$reg_list['naktsmitne_laiks']="-";
}
if(empty($reg_list['naksnotaju_sk']))
{
$reg_list['naksnotaju_sk']="-";
}
echo '<tr>';
echo '<td>'.$reg_list['id'].'</td>';
echo '<td>' .$reg_list['nosaukums']. '</td>';
echo '<td>' . $reg_list['skola']. '</td>';
echo '<td>' . $reg_list['klase'] . '</td>';
echo '<td>' . $reg_list['skolnieks'] . '</td>';
echo '<td>' . $reg_list['skolotajs'] . '</td>';
echo '<td>' . $reg_list['skolnieka_telefons']. '</td>';
echo '<td>' . $reg_list['skolotaja_telefons'] . '</td>';
echo '<td>' . $reg_list['skolnieka_email'] . '</td>';
echo '<td>' .$reg_list['naktsmitne_laiks']. '</td>';
echo '<td>' .$reg_list['naksnotaju_sk']. '</td>';
echo '<td class="checkbox_td"><input type="checkbox" value="'.$reg_list['id'].'" name="id[]" form="form1"></td>';
echo '</tr>';
}
}
?>
Так и не понял какой результат должна принимать в себя переменная $del из вот этой строчке.
$del = implode(',', array_diff(array_map('intval', $_POST['del']), [0]))
Хоть даже перечитал значение каждой функции в manual'e по PHP. Сервер выдал ошибку в синтаксисе. В итоге мне понадобилась всего одна функция implode.
Чтобы построить mysql запрос :
$id=implode(',', $_POST['id']);
$q=mysqli_query($connect, "DELETE FROM registracijas_lapa_9kl WHERE id IN($id)");
Но всё же хочу сказать Вам спасибо за Вашу помощь, без неё я бы сейчас дольше сидел над реализацией данной системы. Мне очень пригодились такие идеи как например значение атрибута name="id[]" у тэга input. Я до этого не знал что можно таким образом передавать php скрипту массивы.
Возможно моя теперешняя система имеет свои недочёты и не блещет логичностью. Буду рад выслушать предложения по её улучшению.
Естественно это ещё всё сыро выглядит и я ещё займусь всякими украшательствами типа bootstrap уведомлений и jquery smoke plugin.
Спасибо за внимание и за помощь
