Ticket_id не добавляется во вторую таблицу БД

  • Автор темы bankero
  • 54
  • Обновлено
  • 17, May 2024
  • #1
Я только что протестировал новый билет в службу поддержки, и общая информация о билете добавляется в первую таблицу БД, а файлы сохраняются во второй таблице БД, но Ticket_id не сохраняется во второй таблице БД. Ниже приведен весь код, который у меня есть
 $ticket_id = htmlentities($_POST["ticket_id"], ENT_QUOTES);
PHP: я включил отчет об ошибках, и он говорит следующую ошибку

Уведомление: Неопределенный индекс: Ticket_id в /home/itdonerightco/public_html/account/create-support-ticket.php В сети 45 Строка 45
 <?php // Initialize the session session_start(); $username = $_SESSION['user_name']; $customername = $_SESSION['customer_name']; $customeremail = $_SESSION['customer_email']; ini_set('display_startup_errors', 1); ini_set('display_errors', 1); error_reporting(-1); require_once "registerconfig.php"; if (isset($_POST['submit'])) { // File upload configuration $targetDir = "support-ticket-images/"; $allowTypes = array('pdf','doc','docx','jpg','png','jpeg','gif'); $statusMsg = $errorMsg = $insertValuesSQL = $errorUpload = $errorUploadType = ''; // Escape user inputs for security $ticket_subject = htmlentities($_POST['ticket_subject'], ENT_QUOTES); $ticket_message = strip_tags($_POST['ticket_message'], ENT_QUOTES); $ticket_status ='PENDING SUPPORT'; $ticket_id = htmlentities($_POST["ticket_id"], ENT_QUOTES); $username = htmlentities($_SESSION["user_name"], ENT_QUOTES); $user_id = htmlentities($_SESSION["user_id"], ENT_QUOTES); $fileNames = array_filter($_FILES['files']['name']); if(!empty($fileNames)){ foreach($_FILES['files']['name'] as $key=>$val){ // File upload path $fileName = basename($_FILES['files']['name'][$key]); $targetFilePath = $targetDir . $fileName; // Check whether file type is valid $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); if(in_array($fileType, $allowTypes)){ // Upload file to server if(move_uploaded_file($_FILES["files"]["tmp_name"][$key], $targetFilePath)){ // Image db insert sql $insertValuesSQL .= "('".$fileName."','".$username."','".$ticket_id."','".$user_id."'),"; }else{ $errorUpload .= $_FILES['files']['name'][$key].' | '; } }else{ $errorUploadType .= $_FILES['files']['name'][$key].' | '; } } if(!empty($insertValuesSQL)){ $insertValuesSQL = trim($insertValuesSQL, ','); // Insert image file name into database $insert = "INSERT INTO support_tickets (ticket_subject, ticket_message, ticket_status, user_name, user_id) VALUES ('$ticket_subject', '$ticket_message', '$ticket_status', '$username', '$user_id');"; $insert .= "INSERT INTO support_ticket_files (file_name, ticket_id, user_name, user_id) VALUES $insertValuesSQL";?>
PHP:

bankero


Рег
02 Nov, 2013

Тем
1

Постов
2

Баллов
12
  • 21, May 2024
  • #2
Только что попробовал еще раз, и на этот раз все сработало после использования тех же строк, что и первый вход фильтра, но вместо INPUT_GET я использовал INPUT_POST и сработало.
 $ticket_subject = filter_input(INPUT_POST, 'ticket_subject', FILTER_SANITIZE_STRING);
$ticket_message = filter_input(INPUT_POST, 'ticket_message', FILTER_SANITIZE_STRING);
PHP:
 

Photo_Synthesis


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 04, Jun 2024
  • #3
Просто удалось решить эту проблему, удалив код в строке 45 и изменив строку ниже. от
 $insertValuesSQL .= "('".$fileName."',LAST_INSERT_ID(),'".$username."','".$user_id."'),";
PHP: чтобы
 $insertValuesSQL .= "('".$fileName."','".$username."','".$ticket_id."','".$user_id."'),";
PHP:
 

rif009


Рег
16 Dec, 2012

Тем
1

Постов
3

Баллов
13
  • 05, Jun 2024
  • #4
Только что протестировал его, и он не ввел тему и сообщение заявки в таблицу БД, поэтому, я думаю, нужно будет изучить ее дальше и изменить строки. Есть ли пример, на который я могу посмотреть, как это сделать, или может ли сработать следующее?
 $ticket_subject = filter_input(INPUT_GET, 'ticket_subject', FILTER_SANITIZE_SPECIAL_CHARS);
$ticket_message = filter_input(INPUT_GET, 'ticket_message', FILTER_SANITIZE_SPECIAL_CHARS);
PHP:
 

roliki90


Рег
03 Apr, 2014

Тем
0

Постов
3

Баллов
3
  • 05, Jun 2024
  • #5
Ааа, ок, спасибо, это лучше, чем следующее?
 $ticket_subject = htmlentities($_POST['ticket_subject'], ENT_QUOTES);
$ticket_message = strip_tags($_POST['ticket_message'], ENT_QUOTES);
PHP:
 

lenar1


Рег
21 Dec, 2011

Тем
1

Постов
2

Баллов
12
  • 06, Jun 2024
  • #6
Когда у вас будет время, поищите filter_input как лучший способ получить значения из $_POST.
 $endpoint = filter_input(INPUT_POST, 'endpoint', FILTER_DEFAULT);
Код (разметка):
 

DeNsKoY


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 10, Jun 2024
  • #7
Правильное их решение, безусловно, имеет значение. Используйте php.net в качестве справочника для таких вещей, как filter_input — там так много информации и так много примеров кода. У меня был код jquery, который, как я думал, использовался для отправки, но не прошел.

Инструменты разработчика моего браузера смогли показать мне, что я на самом деле использую get.
 

sosweet


Рег
04 Jan, 2015

Тем
0

Постов
3

Баллов
3
  • 14, Jun 2024
  • #8
ок, просто посмотрю на php.net, воспользуюсь имеющимся у меня примером и исправлю его в соответствии с моим кодом, будут ли новые строки выглядеть следующим образом?
 $ticket_subject = filter_input(INPUT_GET, 'ticket_subject', FILTER_SANITIZE_STRING);
$ticket_message = filter_input(INPUT_GET, 'ticket_message', FILTER_SANITIZE_STRING);
PHP:
 

kea2


Рег
28 Jun, 2014

Тем
0

Постов
2

Баллов
2
Тем
49554
Комментарии
57426
Опыт
552966

Интересно