ответ сотрудникам по запросу в службу поддержки

  • Автор темы vita54321
  • 88
  • Обновлено
  • 15, May 2024
  • #1
У меня возникла последняя проблема в системе, которую я создаю, поскольку я только что проводил тестирование, и я отправил тестовый ответ со стороны администратора внешнему пользователю и теперь хочу, чтобы внешний пользователь ответил сотрудникам службы поддержки из внешнего интерфейса, но по какой-то причине ответ не добавляется в таблицу базы данных Ticket_replies.



Я не получаю никаких ошибок, которые бы не помогли, ха-ха. Ниже приведен весь код, который у меня есть
 <?php

// Initialize the session

session_start();

// Check if the user is logged in, if not then redirect him to login page

if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){

header("location: login");

exit;

}

$username = $_SESSION['user_name'];

$customername = $_SESSION['customer_name'];

$customeremail = $_SESSION['customer_email'];

ini_set('display_errors', 1);

ini_set('display_startup_errors', 1);

error_reporting(E_ALL);

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

$reply_text = strip_tags($_POST['reply_text'], ENT_QUOTES);

$ticket_id = htmlentities($_POST['ticket_id'], 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."',LAST_INSERT_ID(),'".$username."','".$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

$sql = "INSERT INTO ticket_replies (ticket_id, reply_text,user_type, user_id) VALUES ('$ticket_id','$reply_text','customer', '$user_id');";

$sql .= "INSERT INTO support_ticket_files (file_name, ticket_id, user_name, user_id) VALUES $insertValuesSQL";

if(mysqli_multi_query($link, $sql)){

mysqli_multi_query($link,"UPDATE support_tickets set ticket_status = 'PENDING SUPPORT' where ticket_id ='$ticket_id'");

$errorUpload = !empty($errorUpload)?'Upload Error: '.trim($errorUpload, ' | '):'';

$errorUploadType = !empty($errorUploadType)?'File Type Error: '.trim($errorUploadType, ' | '):'';

$errorMsg = !empty($errorUpload)?'<br/>'.$errorUpload.'<br/>'.$errorUploadType:'<br/>'.$errorUploadType;

echo "Replied Successfully.";

}else{

$statusMsg = "Sorry, there was an error uploading your file.";

}

}

}

// Display status message

echo $statusMsg;

}

<div class="col-md-9">

<?php

//$ticket_id = $_GET['ticket_id'];

//$user_name = $_SESSION['user_name'];

$username = $_SESSION['user_name'];



if($result = $link->query("SELECT ticket_id, ticket_subject, ticket_message, ticket_status, DATE_FORMAT(created_at,'%d/%m/%Y \at\ %H:%i:%s') AS created_at, DATE_FORMAT(ticket_timestamp,'%d/%m/%Y %H:%i:%s') AS ticket_timestamp FROM support_tickets WHERE ticket_id = ".$_GET['ticket_id']." and user_name = '".$_SESSION["user_name"]."'")){

//'". $ticket_id. "' AND user_name ='". $_SESSION["user_name"]. "'")){

//".$_GET['ticket_id']." and user_name = '".$_SESSION["user_name"]."'")){

if ($result->num_rows > 0) {

$ticket=$result->fetch_object();

?>

<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">

<div class="panel panel-info panel-default-reply">

<div class="panel-heading-replybox" role="tab" id="headingReply">

<h4 class="panel-title-reply">

<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseReply" aria-expanded="true" aria-controls="collapseReply">

<i class="fa fa-pencil" aria-hidden="true"></i>&nbsp;Reply

</a>

</h4>

</div>

<div id="collapseReply" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingReply">

<div class="panel-body-reply-margin">

<form action="" method="post" class="form-block ticketform" enctype="multipart/form-data">

<input type="hidden" name="ticket_id" value="<?php echo $_GET['ticket_id']; ?>"/>

<div class="col-md-6 col-sm-12">

<div class="form-group">

<label>Name</label>

<input type="text" class="form-control input-lg" name="customer_name" value="<?php echo htmlspecialchars($_SESSION["customer_name"]); ?>" disabled>

</div>

</div>

<div class="col-md-6 col-sm-12">

<div class="form-group">

<label>Email</label>

<input type="text" class="form-control input-lg" name="customer_email" value="<?php echo htmlspecialchars($_SESSION["customer_email"]); ?>" disabled>

</div>

</div>

<?php if($ticket->ticket_status!='CLOSED'){ ?>

<div class="col-md-12 col-sm-12">

<div class="form-group">

<label>Message</label>

<textarea class="form-control" name="reply_text" id="reply_text" rows="10"></textarea>

</div>

</div>

<div class="col-md-12 col-sm-12">

<div class="form-group">

<label>Select Files To Upload</label>

<input type="file" name="files[]" multiple class="form-control"/>

</div>

</div>

<div class="col-md-12 col-sm-12">

<div class="form-group">

<button type="submit" name="submit" class="btn btn-primary btn-sm">Submit</button>

</div>

</div>

<?php } else{ ?>

<div class="form-group text-center">

<label><h2><?php echo $ticket->ticket_status ?></h2></label>

<p>This support ticket is now closed, Please create new ticket for any issue</p>

</div>

<?php } ?>

</form>

</div>

</div>

<?php

}

}

?>

</div>

</div>

<div class="panel panel-default">

<?php



if($replyresult = $link->query("SELECT tr.ticket_id, tr.reply_text,tr.user_id, DATE_FORMAT(tr.reply_at,'%d/%m/%Y \at\ %H:%i:%s') AS reply_at, u.customer_name FROM ticket_replies tr left join users u on (u.user_id=tr.user_id and tr.user_type='customer' and tr.user_id='".$_SESSION["user_id"]."') WHERE ticket_id = '".$_GET["ticket_id"]."' order by reply_at desc")){

//DATE_FORMAT(tr.reply_at,'%d/%m/%Y \at\ %H:%i:%s') AS reply_at

if ($replyresult->num_rows > 0) {

while ($row = $replyresult->fetch_object()) {

?>

<?php echo ($row->user_id!=$_SESSION['user_id'])?'':''; ?>

<div class="panel-heading-replies"><i class="fa fa-user" aria-hidden="true"></i>&nbsp;<?php echo ($row->user_id==$_SESSION['user_id'])?$row->customer_name:'Support Team'; ?>

<span class="pull-right"><?php echo $row->reply_at?></span>

</div>

<div class="panel-body">

<?php echo html_entity_decode($row->reply_text) ?>

<?php

}

}

else {

echo "No Replies";

}

}

?>

</div>

</div>

<div class="panel panel-default">

<div class="panel-body">

<strong>Original Message</strong>

<br>

<?php echo $ticket->ticket_message ?>

</div>

</div>

</div><!-- /col -->
PHP: Извините, это довольно длинный фрагмент кода.

vita54321


Рег
08 Dec, 2012

Тем
2

Постов
4

Баллов
24
  • 18, May 2024
  • #2
У вас есть это вверху страницы?
 ini_set('display_errors', 'On');
Код (разметка): Утром посмотрю хорошенько. Здесь, в Новой Зеландии, уже поздно
 

qwer3


Рег
24 Feb, 2015

Тем
0

Постов
1

Баллов
1
  • 19, May 2024
  • #3
Я получил это под кодом session_start и т. д., поэтому это выглядит следующим образом
 <?php

// Initialize the session

session_start();

// Check if the user is logged in, if not then redirect him to login page

if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){

header("location: login");

exit;

}

$username = $_SESSION['user_name'];

$customername = $_SESSION['customer_name'];

$customeremail = $_SESSION['customer_email'];

ini_set('display_errors', 1);

ini_set('display_startup_errors', 1);

error_reporting(E_ALL);

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

require_once "registerconfig.php";
PHP: Не беспокойтесь, спасибо, я ценю это, я буду продолжать попытки, пока вы не вернетесь, и опубликую обновление, если сможете решить эту проблему. Надеюсь, с тобой все в порядке и ты будешь там в безопасности.
 

slava1231


Рег
21 Jun, 2013

Тем
0

Постов
1

Баллов
1
  • 21, May 2024
  • #4
Честно говоря, я не уверен на 100%, как правильно добавить die() к каждой команде mysqli или запускать ее по одной.

Я попробовал, но на странице появляются ошибки Я изменил код на следующее
 $insertValuesSQL .= "('".$fileName."',LAST_INSERT_ID(),'".$username."','".$user_id."'),";
PHP: также $insertValuesSQL создается из строки ниже, надеюсь, вы это имели в виду.
 $insert1 = "INSERT INTO ticket_replies (ticket_id, reply_text,user_type, user_id) VALUES ('$ticket_id','$reply_text','customer', '$user_id');"; echo "Added ok 1"; } else{ echo "ERROR: Could not able to execute $insert1. " . mysqli_error($link); } $insert2 = "INSERT INTO support_ticket_files (file_name, ticket_id, user_name, user_id) VALUES $insertValuesSQL"; echo "Added ok 2"; } else{ echo "ERROR: Could not able to execute $insert2. " . mysqli_error($link); } $update1 = "UPDATE support_tickets set ticket_status = 'PENDING SUPPORT' where ticket_id ='$ticket_id'"; echo "Update ok 1"; } else{ echo "ERROR: Could not able to execute $update1. " . mysqli_error($link); } if(mysqli_multi_query($link, $insert)){
PHP: Да, было бы лучше связать файлы с ответом, а не с самим билетом, но не знаю, как это сделать.
 

Andreyd00


Рег
03 Dec, 2013

Тем
1

Постов
4

Баллов
14
  • 04, Jun 2024
  • #5
Я только что ввел простой запрос на вставку для первого запроса на вставку и добавил строку, все в порядке, следует ли мне сделать то же самое с двумя другими запросами?

Я считаю, что $link — это обработчик базы данных, поскольку именно он используется в моем файле конфигурации/подключения к базе данных.

Строка $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
 

ZveroBoy1


Рег
24 Jan, 2016

Тем
1

Постов
3

Баллов
13
  • 07, Jun 2024
  • #6
Самая очевидная проблема будет тогда, когда в $reply_text есть ' - как в случае с отладкой, я бы разбил SQL на отдельные запросы и запускал их один за другим, чтобы увидеть, какой из них сломался.

Можете ли вы добавить «or die()» в команду mysqli? Где создается $insertValuesSQL? И последнее, что касается файлов: разве вы не хотите, чтобы они были связаны с ответом, а не с заявкой?
 

Совесть1


Рег
26 Jan, 2013

Тем
1

Постов
2

Баллов
12
  • 07, Jun 2024
  • #7
Моя ошибка: ваша переменная mysqli — это не $mysqli, а $link, поэтому эти запросы должны выглядеть следующим образом:

$sql = "ВСТАВИТЬ В Ticket_replies (ticket_id, ответ_текст,user_type, user_id) ЗНАЧЕНИЯ ('$ticket_id','$reply_text','customer', '$user_id');";

$ссылка->запрос($sql);

$sql="UPDATE support_tickets set Ticket_status = 'ОЖИДАНИЕ ПОДДЕРЖКИ', где Ticket_id ='$ticket_id'";

$ссылка->запрос($sql);

if( strlen($insertValuesSQL)>3 ){{

$sql= "INSERT INTO support_ticket_files (file_name, Ticket_id, user_name, user_id) VALUES $insertValuesSQL";

$ссылка->запрос($sql);

Кроме того, если в операторе if для { } есть ошибка, вы не сможете увидеть саму форму.
 

anton_levin


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 08, Jun 2024
  • #8
Является ли $link вашим обработчиком базы данных?
 

// Insert image file name into database

$insert1 = "INSERT INTO `ticket_replies` (`ticket_id`, `reply_text`,`user_type`, `user_id`) VALUES ('66','test 1','customer','180')";

$result = $mysqli->query($insert1) or die('Error: '.$mysqli->error. ' - '.$insert1); // add the SQL because we won't know what it is when it's real data

var_dump($result);

if ($result === TRUE){

echo "successfully submitted";

}

else{

echo "Error: " . $insert1 . "<br>" . $link->error;

}
Код (php): Пробовали ли вы скопировать и вставить $insert1 в phpMyAdmin и проверить, что это нормально в качестве простого запроса? Это может показаться глупым, но иногда это приводит к возникновению проблем.
 

ksavje


Рег
13 Nov, 2013

Тем
2

Постов
4

Баллов
24
  • 08, Jun 2024
  • #9
Я не уверен на 100%, но попробовал провести тест без файлов, и это не сработало, но когда я выбираю файл, я получаю следующую ошибку
Фатальная ошибка: Неперехваченная ошибка: вызов неопределенной функции LAST_INSERT_ID() в /home/itdonerightco/public_html/account/view-support-ticket.php:52 Трассировка стека: добавлен #0 {main} /home/itdonerightco/public_html/account/view-support-ticket.php В сети 52

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

Итак, подумайте о view-support-ticket.php: код загрузки файла необходимо либо переместить, либо изменить, чтобы он мог ответить, если пользователь не выбирает файл для загрузки, и то же самое в файле create-support-ticket.php, но будет сосредоточиться на решении одной проблемы за раз

в view-support-ticket.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

$reply_text = strip_tags($_POST['reply_text'], 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."', '". LAST_INSERT_ID()."','".$username."','".$user_id."'),";

}else{

$errorUpload .= $_FILES['files']['name'][$key].' | ';

}

}else{

$errorUploadType .= $_FILES['files']['name'][$key].' | ';

}

}

if(!empty($insertValuesSQL)){

$insertValuesSQL = trim($insertValuesSQL, ',');

// Insert/update into database

$sql = "INSERT INTO ticket_replies (ticket_id, reply_text,user_type, user_id) VALUES ('$ticket_id','$reply_text','customer', '$user_id')";

$link->query($sql);

$sql="UPDATE support_tickets set ticket_status = 'PENDING SUPPORT' where ticket_id ='$ticket_id'";

$link->query($sql);

if( strlen($insertValuesSQL)>3 ){{

$sql= "INSERT INTO support_ticket_files (file_name, ticket_id, user_name, user_id) VALUES $insertValuesSQL";

$link->query($sql);

}

if(mysqli_multi_query($link, $sql)){

$errorUpload = !empty($errorUpload)?'Upload Error: '.trim($errorUpload, ' | '):'';

$errorUploadType = !empty($errorUploadType)?'File Type Error: '.trim($errorUploadType, ' | '):'';

$errorMsg = !empty($errorUpload)?'<br/>'.$errorUpload.'<br/>'.$errorUploadType:'<br/>'.$errorUploadType;

header("location: support-ticket-confirmation?user=$username");

}else{

$statusMsg = "Sorry, there was an error uploading your file.";

}

}

}else{

$statusMsg = 'Please select files to upload.';

}

}

// Display status message

echo $statusMsg;

}
PHP: весь код приведен ниже
 if(!empty($insertValuesSQL)){ $insertValuesSQL = trim($insertValuesSQL, ',');
PHP:
 

LidiaChernikova


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 08, Jun 2024
  • #10
Я только что попробовал это, но все еще не добавляю данные в таблицу БД и не обновляю другую таблицу БД. Я вижу, что с формой все в порядке, и нажимаю «Отправить», но просто загружаю страницу снова и ничего не делаю. Стоит ли публиковать весь код?
 

trapecia


Рег
02 Mar, 2011

Тем
2

Постов
5

Баллов
25
  • 10, Jun 2024
  • #11
Я внес в них изменения, но, к сожалению, все тот же, и не добавлял данные в таблицу БД и не обновлял таблицу БД. Должен ли я снова пройти весь код, теперь он обновлен, как интересно, может ли открытие { или закрытие } быть в неправильном месте или какой-то другой код в другом месте php-файла, вызывающий проблему?
 

tcphost


Рег
10 Jan, 2013

Тем
1

Постов
2

Баллов
12
  • 11, Jun 2024
  • #12
Извините, понятия не имею, правильно ли я делаю, но пытаюсь выполнить один запрос за раз, но ничего не происходит, когда я нажимаю кнопку отправки
 $insert1 = "INSERT INTO ticket_replies (ticket_id, reply_text,user_type, user_id) VALUES ('$ticket_id','$reply_text','customer', '$user_id')";

echo $insert1;

if (!$mysqli->query($insert1)) {

echo 'Error: ', $mysqli->error;

}
PHP: Извините, но я не на 100% использую PHP, и иногда это расстраивает, и я не могу этого сделать.
 

Remmy1


Рег
10 Nov, 2013

Тем
1

Постов
2

Баллов
12
  • 12, Jun 2024
  • #13
Извините, я пытаюсь понять, как отлаживать один запрос за раз, но при его перезагрузке на странице ничего не отображается. Теперь у меня есть следующее
 <?php

// Insert image file name into database

$insert1 = "INSERT INTO ticket_replies (ticket_id, reply_text,user_type, user_id) VALUES ('66','test 1','customer','180')";

if ($link->query($insert1) === TRUE)

{

echo "sucessfully submitted";

}

else

{

echo "Error: " . $insert1 . "<br>" . $link->error;

}

$link->close();

?>
PHP: я не понимаю, что делаю неправильно
 

amdjs


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 12, Jun 2024
  • #14
Попробуйте внести эти изменения:

//измените строку, в которой вы создаете sql для загруженных файлов, на эту:

$insertValuesSQL .="('".$fileName."', '". LAST_INSERT_ID()."','".$username."','".$user_id."'),";

//затем в ваших вставках сделайте следующее:

$sql = "ВСТАВИТЬ В Ticket_replies (ticket_id, ответ_текст,user_type, user_id) ЗНАЧЕНИЯ ('$ticket_id','$reply_text','customer', '$user_id');";

$mysqli->запрос($sql);

$sql="UPDATE support_tickets set Ticket_status = 'ОЖИДАНИЕ ПОДДЕРЖКИ', где Ticket_id ='$ticket_id'";

$mysqli->запрос($sql);

if( strlen($insertValuesSQL)>3 ){{

$sql= "INSERT INTO support_ticket_files (file_name, Ticket_id, user_name, user_id) VALUES $insertValuesSQL";

$mysqli->запрос($sql);

}
 

vitaliyburyak


Рег
01 Jan, 2011

Тем
1

Постов
3

Баллов
13
  • 14, Jun 2024
  • #15
У меня такое ощущение, что это может быть связано со следующими строками
 $insert = "INSERT INTO ticket_replies (ticket_id, reply_text,user_type, user_id) VALUES ('$ticket_id','$reply_text','customer', '$user_id');";

$insert .= "INSERT INTO support_ticket_files (file_name, ticket_id, user_name, user_id) VALUES $insertValuesSQL";

$insert .= "UPDATE support_tickets set ticket_status = 'PENDING SUPPORT' where ticket_id ='$ticket_id'";

if(mysqli_multi_query($link, $insert)){
PHP: я изменил код следующим образом, но по-прежнему не вставляю ответ в таблицу базы данных Ticket_replies и не обновляю Ticket_status в таблице базы данных support_ticket.
 if(mysqli_multi_query($link, $insert)){ if(mysqli_multi_query($link, $insert)) "UPDATE support_tickets set ticket_status = 'PENDING SUPPORT' where ticket_id ='$ticket_id'");
PHP:
 

petpoet


Рег
01 Jan, 2011

Тем
1

Постов
3

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