@DemiurgeMaker
Я хороший

Редактирование данных в модальном окне, используя PHP и JS?

Условие:
Есть таблица в БД :
5b75387c91aa1957790467.png

Есть index.php разметка:
<?php


	
	$pdo_1 = new PDO('mysql:host=localhost;dbname=publish_db;charset=utf8','root','');
	$art = $pdo_1->query("SELECT * FROM publication");
	
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Пробы с БД</title>
	<link rel="stylesheet" href="style.css">
	<script src="jquery-3.2.1.min.js"></script>
	<style>

	</style>
</head>
<body>
    		<div class="wrapper">
			<div class="header">
				<p>Это хедер сайта</p>
			</div>
			<div class="content">
					<div class="pst">
					<?while($row = $art->fetch(PDO::FETCH_ASSOC)): ?>
						<h2><? echo $row['title']; ?></h2>
						<p><? echo $row['content']; ?></p>
						<p>Дата публикации: <span><? echo $row['date']; ?></span> | Автор статьи: <span><mark><? echo $row['author_name']; ?></mark></span> | <button id="myBtn" data-id="<? echo $row['id']; ?>" class ="goOn" >изменить</button></p>
						<? endwhile; ?>
					</div>

			</div>
			<div class="footer">
				<p>Это футер сайта</p>
			</div>
		</div>
		<hr/>
		
<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close">&times;</span>
	<p  ><? echo "Проверка: " .gettype($fname) .gettype($GLOBALS['Lname']).$_POST["e_Lang"]; ?></p>
    <form action="">
	<input type="text" name="bookId" id="bookId" value=""/>
		<input type="text" name="artcl_h" placeholder="Заголовок статьи">
		<textarea name="artcl_text"  cols="30" rows="3" placeholder="Содержимое статьи"></textarea>
		<input type="text" name="artcl_au" placeholder="Автор">
		<input type="submit" value="обновить">
	</form>
  </div>

</div>

		
<script>


			// Get the modal
		var modal = document.getElementById('myModal');

		// Get the button that opens the modal
		var btn = document.getElementById("myBtn");

		// Get the <span> element that closes the modal
		var span = document.getElementsByClassName("close")[0];

		// When the user clicks the button, open the modal 
		/*btn.onclick = function() {
			$.ajax();
			modal.style.display = "block";
		}*/

		// When the user clicks on <span> (x), close the modal
		span.onclick = function() {
			modal.style.display = "none";
		}

		// When the user clicks anywhere outside of the modal, close it
		window.onclick = function(event) {
			if (event.target == modal) {
				modal.style.display = "none";
			}
		};
		/*function g_done()
		{
			var dd = $(this).data('id');
			$.ajax({
                    type: "POST",
                    url: "edit-h.php",
                    data: {'modal_id': dd},
                    success: function(html) {
                        alert(html);
                    }
                });
			modal.style.display = "block";
			
		}*/
		/*$(document).on("click", "#myBtn", function(){
	var pId = $(this).data('id');
	$("form #bookId").val(pId);
	modal.style.display = "block";
}
	
);*/
$(document).on("click", "#myBtn", function(){
	var pId = $(this).data('id');
	$.ajax({
                    type: "POST",
                    url: "edit-h.php",
                    data: {'modal_id': pId},
                    success: function(html) {
                        alert(html);
                    }
                });
	modal.style.display = "block";
}
	
);
	
</script>
</body>
</html>


Есть edit-h.php обработчик:
<?php

	if(!empty($_POST['modal_id']))
	{
		$cur_id = $_POST['modal_id'];
		
		 
		 
		 try {
				$conn = new PDO('mysql:host=localhost;dbname=publish_db;charset=utf8','root','');
				$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			} 
	catch (PDOException $e) 
	{
		echo 'Подключение не удалось: ' . $e->getMessage();
	}
		$res = $conn->query("SELECT * FROM publication WHERE id = '$cur_id';"); 
		
		 while($row = $res->fetch(PDO::FETCH_ASSOC)): 
			
			global $fname;
			 $fname = $row['title'];
			$GLOBALS['Lname'] = $row['content'];
			$_POST['e_Lang'] = $row['author_name'];
			
		 endwhile; 
		 
		 
		 echo "Успешно!";
	}
	else
		{
			echo "Что-то пошло не так";
	}



?>


Что получается:
5b7542c9b913b640503760.png

Задача:
Из БД таблица выводится в HTML разметку с кнопкой которая передает id записи которую нужно редактировать.
Нажимаем кнопку, появляется Модальное окно с данными записи в полях формы и кнопкой сохранить.
Вопросы:
1. Как показано на 2-ой картинке после AJAX запроса файл обработки edit-h.php возвращает Успешно и значение переменной. Однако в самом модальном окне все 3 переменных возвращают NULL.
Почему так происходит???
Синтаксическая ошибка, область видимости нарушена, нарушение последовательности исполнения скриптов интерпритатором PHP???
Будьте добры объясните подробно если не затруднит.
2. Напишите ваши варианты реализации по данному заданию, только без использования сторонних инструментов, библиотек. Только PHP, JS, JQUERY, HTML ,CSS. Желательно с примерами рабочего кода.
  • Вопрос задан
  • 1693 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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