Показать сообщение отдельно
  #10 (permalink)  
Старый 18.03.2016, 14:52
Новичок на форуме
Отправить личное сообщение для darius32bit Посмотреть профиль Найти все сообщения от darius32bit
 
Регистрация: 08.02.2016
Сообщений: 8

Целый месяц был занят другими не менее важными делами по учёбе и буквально несколько дней назад вернулся к этой работе.

Я считаю что Ваш пример для начинающего довольно таки сложный и как я понял Вы не совсем поняли какой результат в итоге мне нужен.

Я воспользовался не которыми вашими идеями и сделал всё по другому. Разобрался как работает 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.
Спасибо за внимание и за помощь

Последний раз редактировалось darius32bit, 18.03.2016 в 14:55.
Ответить с цитированием