Pro_DoNiFF
@Pro_DoNiFF

Не отправляются данные веденные из input в бд (Mysql, PHP)?

Создал форму для передачи данных, веденных пользователями в бд, но данные не отправляются, и нет никакой ошибки
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="media/css/style.css">
	<link rel="stylesheet" href="media/css/fonts.css">
	<link rel="stylesheet" href="media/css/form.css">
	<title>Test</title>
</head>
<body>
	<section id="firstPage">
		<header>
			<a href="#"><img src="media/css/img/logo.png" class="logo"></a>
			<ul>
				<li><a href="#">Главная</a></li>
				<li><a href="#">Тарифы</a></li>
				<li><a href="#">FAQ</a></li>
				<li><a href="#">Отзывы</a></li>
			</ul>
		</header>
        <?php
//            require_once 'form.php';
            if (empty($_POST['name']) && empty($_POST['surname'])){
                // Переменные с формы
                $name = $_POST['name'];
                $surname = $_POST['surname'];
                $age = $_POST['age'];
                $email = $_POST['email'];
                $phone = $_POST['phone'];
                $index = $_POST['index'];
                $submit = $_POST['enter'];


                // Параметры для подключения
                $db_host = "localhost";
                $db_user = "root"; // Логин БД
                $db_password = "root"; // Пароль БД
                $db_base = 'test'; // Имя БД
                $db_table = "users"; // Имя Таблицы БД


                try {
                    // Подключение к базе данных
                    $db = new PDO("mysql:host=$db_host;dbname=$db_base", $db_user, $db_password);
                    // Устанавливаем корректную кодировку
                    $db->exec("set names utf8");
                    // Собираем данные для запроса
                    $data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index, 'enter' => $submit);
                    // Подготавливаем SQL-запрос
                    $query = $db->prepare("INSERT INTO `users`(`id_user`, `user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`) VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'");
                    // Выполняем запрос с данными
                    $query->execute($data);
                } catch (PDOException $e) {
                    // Если есть ошибка соединения или выполнения запроса, выводим её
                    print "Ошибка!: " . $e->getMessage() . "<br/>";
                }

            };
        ?>
        <div class="parent">
            <div class="block">
                <form method="post">
                    <input type="text" name="name" id="name" class="forms" placeholder="Name"><br>
                    <input type="text" name="surname" id="surname" class="forms" placeholder="SurName"><br>
                    <input type="text" name="age" id="age" class="forms"><br>
                    <input type="email" name="email" id="email" class="forms" placeholder="E-mail"><br>
                    <input type="text" name="phone" id="phone" class="forms" placeholder="Phone number">
                    <input type="text" name="index" id="index" class="forms" placeholder="index">
                    <input type="submit" name="enter" id="" value="Enter">
                </form>
            </div>
        </div>
	</section>
	<script type="text/javascript" src="media/js/script.js"></script>
</body>
</html>

6211d71bce61e872395592.png
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
И не будет никакой ошибки, потому что код взят из какого-то древнего руководства, написанного обезьяной.
Меня вот поражает, ну ОТКУДА вы вы выкапываете это дерьмо мамонта? На каком ютуб канале, какой гамадрил вот это вот всё вещает?

- print "Ошибка!: " . $e->getMessage() писал дебил, потому что специально выводить ошибки не нужно - РНР и так выведет ошибку, если его об этом попросить.
- try {} catch (PDOException $e) { писал дважды дебил, потому что ПДО будет кидать исключения только если ему об этом сказать при соединении. А дебил об этом не сказал
- try {} catch (PDOException $e) { писал трижды дебил, потому что см. выше. Не нужно ловить ошибку, чтобы её вывести.
- VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'"); - а вот это уже, я думаю, не руководство, а самодеятельность автора кода. Даже в дебильном руководстве такое вряд ли можно увидеть.
- enter' => $submit - это уже тоже автор кода, от излишнего усердия и ПОЛНОГО не понимания своих действий
- ну и да, почему-то в списке полей id_user есть, а в VALUES внезапно нету. "Где логика, где разум?" (с)

В общем учимся работать с БД в РНР заново
.
// Параметры для подключения
$db_host = "localhost";
$db_user = "root"; // Логин БД
$db_password = "root"; // Пароль БД
$db_base = 'test'; // Имя БД
$db_encoding = "utf8mb4" // кодировка 

// Подключение к базе данных
$db = new PDO("mysql:host=$db_host;dbname=$db_base;charset=$db_encoding", $db_user, $db_password);
// Просим ПДО сообщать об ошибках
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

// Собираем данные для запроса
$data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index);
// Подготавливаем SQL-запрос
$query = $db->prepare("INSERT INTO `users`(`user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`) 
                     VALUES (:name, :surname, :age, :email, :phone, :index)");
// Выполняем запрос с данными
$query->execute($data);


Хотя бы так
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alekssamos
Программист любитель
А может
if (!empty($_POST['name']) && !empty($_POST['surname']))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽