SQL, соединяющий две формы с базой данных

Я начинающий, когда дело доходит до темы. Я следил за этим руководство подключить одну форму к базе данных, и она работала хорошо. Теперь я хотел бы добавить еще одну форму и мои вопросы:

  • создать отдельную функцию в connection.php?
  • создать отдельную таблицу в той же базе данных?
  • как создать отдельное сообщение с благодарностью?

Другая форма является контактной формой.

connection.php:

<?php

function Connect()
{
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "root";
$dbname = "responses";

// Create connection
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);

return $conn;
}

?>

thankyou.php

<?php

require 'connection.php';
$conn    = Connect();
$email   = $conn->real_escape_string($_POST['u_email']);
$query   = "INSERT into newsletter (email) VALUES('" . $email . "')";
$success = $conn->query($query);

if (!$success) {
die("Couldn't enter data: ".$conn->error);

}
echo $_GET["form"];

echo "Thank you for subscribing to our newsletter. <br>";

$conn->close();?>

Вторая форма будет выглядеть так:

$name    = $conn->real_escape_string($_POST['name']);
$email   = $conn->real_escape_string($_POST['email']);
$message = $conn->real_escape_string($_POST['message']);
$query   = "INSERT into contactForm (name,email,message) VALUES('" . $name . "','" . $email . "','" . $message . "')";
$success = $conn->query($query);

Я создал две таблицы: информационный бюллетень и contactForm. Теперь, как мне направить ввод формы в нужную таблицу?

0

Решение

1 — Вы можете «требовать» / «включать» один и тот же файл connection.php, где он вам подходит / нужен

2 — вы можете создать в той же базе данных новую таблицу и выполнить действие над этим новым в вашем примере запроса:

$query   = "INSERT into newsletter (email) VALUES('" . $email . "')";
$success = $conn->query($query);

$query   = "INSERT into newsletter_schedule (email,schedule_date) VALUES('" . $email . "', NOW())";
$success = $conn->query($query);

или вы можете создать в другой базе данных и изменить имя подключенной базы данных (более сложное, но иногда необходимое)
3 — вы можете сделать в отдельном статическом файле и перенаправить на использование (функция PHP)

header("location: tankyou.html");//put your file name/must be the first output, even a space before can throw a error

оставьте более подробную информацию о 3-м, если это не то, что вы ищете

0

Другие решения

К сожалению, ваш вопрос «Как мне …?» немного шире в этом случае. Любое количество способов. Единственный реальный способ понять это — попробовать несколько раз. Вы можете потерпеть неудачу, но именно здесь происходит больше всего обучения.

Ваши конкретные вопросы:

создать отдельную функцию в connection.php?

Зависит от того, что вам нужно. Я мог бы включить функцию «CloseConnection» или «TearDown», но это не является строго обязательным в PHP. (PHP делает все возможное, чтобы закрыть и прекратить использование любых ресурсов, которые у вас все еще открыты в конце вашего скрипта.)

Однако, если вы хотите перейти к лучшим практикам, приобретите привычку всегда убирать за собой. То, что вы узнали в детском саду, применимо: если вы открыли его, закройте его. Если вы создали его, избавьтесь от него. Если вы выделили его, освободите его. и т.п.

создать отдельную таблицу в той же базе данных?

Да. Этот вопрос связан с дизайном схемы, и опять же, вам просто нужно попробовать и посмотреть, что работает для вашей ситуации и мыслительных процессов. Вы будете знать, что вещи не Право, когда логика становится действительно запутанной. Но зная тот приходит только с опытом.

как создать отдельное сообщение с благодарностью?

Так же, как вы генерируете любой другой HTML. Какая-то версия echo, print, или же include/require, Учитывая ваши текущие настройки, я может быть создать отдельную функцию для этой логики.

Одна вещь, которая не та, о которой вы просили, но которую я вынужден указать: сильно рассматривать готовые заявления для вашего SQL, а не для интерполяции строк. То есть …

ПЛОХОЙ:

$query   = "INSERT into newsletter (email) VALUES('" . $email . "')";
$success = $conn->query($query);

ЛУЧШЕ / ХОРОШО:

$sql       = "INSERT INTO newsletter (email) VALUE ( ? )";
$statement = $conn->prepare( $sql );
$statement->bind_param('s', $email);
$statement->execute();

Это, возможно, немного сложнее, но также исключает необходимость такой очистки, как real_escape_string,

Для дополнительной информации, читать документацию и гугл готовые заявления, но суть в следующем: по соображениям безопасности сейчас, а позже — в более высокой производительности. Сообщая базе данных, что будет дальше, вы исключаете кого-то из впрыскивать то, чего вы не ожидали или не хотели.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector