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

vita54321

Пользователь
Регистрация
08.12.12
Сообщения
4
Реакции
0
Баллы
1
У меня возникла последняя проблема в системе, которую я создаю, поскольку я только что проводил тестирование, и я отправил тестовый ответ со стороны администратора внешнему пользователю и теперь хочу, чтобы внешний пользователь ответил сотрудникам службы поддержки из внешнего интерфейса, но по какой-то причине ответ не добавляется в таблицу базы данных Ticket_replies. Я не получаю никаких ошибок, которые бы не помогли, ха-ха. Ниже приведен весь код, который у меня есть


Код:
<?php
session_start();
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'])) {
$targetDir = "support-ticket-images/";
$allowTypes = array('pdf','doc','docx','jpg','png','jpeg','gif');
$statusMsg = $errorMsg = $insertValuesSQL = $errorUpload = $errorUploadType = '';
$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){ $fileName = basename($_FILES['files']['name'][$key]); $targetFilePath = $targetDir . $fileName; $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); if(in_array($fileType, $allowTypes)){ if(move_uploaded_file($_FILES["files"]["tmp_name"][$key], $targetFilePath)){ $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, ','); $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."; }
}
} echo $statusMsg; }
<div class="col-md-9"> <?php $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"]."'")){ 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")){ 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: Извините, это довольно длинный фрагмент кода.
ответ сотрудникам по запросу в службу поддержки
 

qwer3

Пользователь
Регистрация
24.02.15
Сообщения
1
Реакции
0
Баллы
1
У вас есть это вверху страницы?

ini_set('display_errors', 'On');
Код (разметка): Утром посмотрю хорошенько. Здесь, в Новой Зеландии, уже поздно
 

slava1231

Пользователь
Регистрация
21.06.13
Сообщения
1
Реакции
0
Баллы
1
Я получил это под кодом session_start и т. д., поэтому это выглядит следующим образом


Код:
<?php
session_start();
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: Не беспокойтесь, спасибо, я ценю это, я буду продолжать попытки, пока вы не вернетесь, и опубликую обновление, если сможете решить эту проблему.

Надеюсь, с тобой все в порядке и ты будешь там в безопасности.
 

Andreyd00

Пользователь
Регистрация
03.12.13
Сообщения
4
Реакции
0
Баллы
1
Честно говоря, я не уверен на 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: Да, было бы лучше связать файлы с ответом, а не с самим билетом, но не знаю, как это сделать.
 

ZveroBoy1

Пользователь
Регистрация
24.01.16
Сообщения
3
Реакции
0
Баллы
1
Я только что ввел простой запрос на вставку для первого запроса на вставку и добавил строку, все в порядке, следует ли мне сделать то же самое с двумя другими запросами?

Я считаю, что $link — это обработчик базы данных, поскольку именно он используется в моем файле конфигурации/подключения к базе данных. Строка $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
 

Совесть1

Пользователь
Регистрация
26.01.13
Сообщения
2
Реакции
0
Баллы
1
Самая очевидная проблема будет тогда, когда в $reply_text есть ' - как в случае с отладкой, я бы разбил SQL на отдельные запросы и запускал их один за другим, чтобы увидеть, какой из них сломался. Можете ли вы добавить «or die()» в команду mysqli?

Где создается $insertValuesSQL?

И последнее, что касается файлов: разве вы не хотите, чтобы они были связаны с ответом, а не с заявкой?
 

anton_levin

Пользователь
Регистрация
01.01.70
Сообщения
3
Реакции
0
Баллы
1
Моя ошибка: ваша переменная 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 для { } есть ошибка, вы не сможете увидеть саму форму.
 

ksavje

Пользователь
Регистрация
13.11.13
Сообщения
4
Реакции
0
Баллы
1
Является ли $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 и проверить, что это нормально в качестве простого запроса?
Это может показаться глупым, но иногда это приводит к возникновению проблем.
 

LidiaChernikova

Пользователь
Регистрация
01.01.70
Сообщения
3
Реакции
0
Баллы
1
Адрес
Россия
Я не уверен на 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'])) {
$targetDir = "support-ticket-images/";
$allowTypes = array('pdf','doc','docx','jpg','png','jpeg','gif');
$statusMsg = $errorMsg = $insertValuesSQL = $errorUpload = $errorUploadType = '';
$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){ $fileName = basename($_FILES['files']['name'][$key]); $targetFilePath = $targetDir . $fileName; $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); if(in_array($fileType, $allowTypes)){ if(move_uploaded_file($_FILES["files"]["tmp_name"][$key], $targetFilePath)){ $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, ','); $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.'; } } echo $statusMsg;
}

PHP: весь код приведен ниже


if(!empty($insertValuesSQL)){ $insertValuesSQL = trim($insertValuesSQL, ',');
PHP:
 

trapecia

Пользователь
Регистрация
02.03.11
Сообщения
5
Реакции
0
Баллы
1
Я только что попробовал это, но все еще не добавляю данные в таблицу БД и не обновляю другую таблицу БД.

Я вижу, что с формой все в порядке, и нажимаю «Отправить», но просто загружаю страницу снова и ничего не делаю.

Стоит ли публиковать весь код?
 

tcphost

Пользователь
Регистрация
10.01.13
Сообщения
2
Реакции
0
Баллы
1
Я внес в них изменения, но, к сожалению, все тот же, и не добавлял данные в таблицу БД и не обновлял таблицу БД.

Должен ли я снова пройти весь код, теперь он обновлен, как интересно, может ли открытие { или закрытие } быть в неправильном месте или какой-то другой код в другом месте php-файла, вызывающий проблему?
 

Remmy1

Пользователь
Регистрация
10.11.13
Сообщения
2
Реакции
0
Баллы
1
Извините, понятия не имею, правильно ли я делаю, но пытаюсь выполнить один запрос за раз, но ничего не происходит, когда я нажимаю кнопку отправки


Код:
$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, и иногда это расстраивает, и я не могу этого сделать.
 

amdjs

Пользователь
Регистрация
01.01.70
Сообщения
2
Реакции
0
Баллы
1
Адрес
Turkey
Извините, я пытаюсь понять, как отлаживать один запрос за раз, но при его перезагрузке на странице ничего не отображается. Теперь у меня есть следующее


Код:
<?php $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: я не понимаю, что делаю неправильно
 

vitaliyburyak

Пользователь
Регистрация
01.01.70
Сообщения
3
Реакции
0
Баллы
1
Адрес
Poland
Попробуйте внести эти изменения:


$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);
}
 

petpoet

Пользователь
Регистрация
01.01.70
Сообщения
3
Реакции
0
Баллы
1
Адрес
Russia
У меня такое ощущение, что это может быть связано со следующими строками



Код:
$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:
 
Сверху Снизу