Я начинающий, когда дело доходит до темы. Я следил за этим руководство подключить одну форму к базе данных, и она работала хорошо. Теперь я хотел бы добавить еще одну форму и мои вопросы:
Другая форма является контактной формой.
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. Теперь, как мне направить ввод формы в нужную таблицу?
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-м, если это не то, что вы ищете
К сожалению, ваш вопрос «Как мне …?» немного шире в этом случае. Любое количество способов. Единственный реальный способ понять это — попробовать несколько раз. Вы можете потерпеть неудачу, но именно здесь происходит больше всего обучения.
Ваши конкретные вопросы:
создать отдельную функцию в 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
,
Для дополнительной информации, читать документацию и гугл готовые заявления, но суть в следующем: по соображениям безопасности сейчас, а позже — в более высокой производительности. Сообщая базе данных, что будет дальше, вы исключаете кого-то из впрыскивать то, чего вы не ожидали или не хотели.