JavaScript — несколько кнопок PHP и операторы if

Так что я не гуру PHP, и я едва кодировал его (в основном HTML-изменения внутри сценария PHP). У меня есть базовая настройка на странице, над которой я работаю.

На странице есть 4 кнопки, и все они отправляют отчет по электронной почте на адрес нашей службы поддержки, чтобы сообщить о любых проблемах с принтером в наших лабораториях печати. У меня отправка почты работает и закодирована. Проблема в том, что каждая кнопка должна отправлять различное закодированное электронное письмо в службу поддержки.

У меня есть четыре кнопки в качестве изображений (не так много людей, как обычные скучные кнопки), вот код:

<form action="" method="post">

<br/>
<br/>
<h2>Please select issue</h2>
<br/><input type="image" src="testing/images/need_toner.png"/>
<input type="hidden" name="toner" id="toner" tabindex="1" />
<input type="image" src="testing/images/paper_jam.png" /><br>&nbsp;<input type="hidden" name="paper-jam" id="paper-jam" tabindex="2" /><input type="image" src="testing/images/printer_fault.png" />
<input type="hidden" name="printer-fault" id="printer-fault" tabindex="3" />
<input type="image" src="testing/images/other.png" />
<input type="hidden" name="other" id="other" tabindex="4"  />

</form>

Таким образом, кнопки выглядят хорошо и хорошо выглядят и все такое, но когда вы нажимаете на любую из кнопок, он выполняет только первый PHP, если код, и игнорирует, чтобы проверить другие.
Вот мой код PHP (имейте в виду, что я на самом деле не PHP человек, я просто знаю немного общего кодирования).

<?php

$url = 'testing/floor4/marketing'; // Setting the URL parameter for PHP

if(isset($_REQUEST['toner']))
{

$to      = 'XXX@XXX.com';
$subject = 'TONER NEEDED - AKRON_32 Marketing Printer';
$message = 'A request for toner has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';

}

if(isset($_REQUEST['printer-fault']))
{
$to      = 'XXX@XXX.com';
$subject = 'PRINTER FAULT - AKRON_32 Marketing Printer';
$message = 'A printer fault has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';
}if(isset($_POST['paper-jam']))
{
$to      = 'XXX@XXX.com';
$subject = 'PAPER JAM - AKRON_32 Marketing Printer';
$message = 'A paper jam has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';
}if(isset($_POST['other']))
{
$to      = 'XXX@XXX.com';
$subject = 'OTHER  - AKRON_32 Marketing Printer';
$message = 'An issue marked "other" has been reported for printer AKRON_32 on the 4th floor in the marketing department.';
$headers = 'From: XXX@XXX.com' . "\r\n" .
'Reply-To: XXX@XXX.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

header('Refresh: 6;URL=testing/floor4/marketing' );
echo '<center><h2>Report Sent! - Page will refresh after a few seconds.</h2></center>';
}

?>

Так что код не самый лучший, я уверен, что если вы поможете мне, это будет здорово, как я сказал, я не PHP-кодер. Просто странно, как у меня изначально работало хорошо кодирование, прежде чем я изменил эхо-текст и перенаправил заголовки, только он ТОЛЬКО выполняет первое электронное письмо для тонера.

0

Решение

$_REQUEST['toner'] относится к <input type="hidden" name="toner" id="toner" tabindex="1" />, Поскольку все входные данные имеют одинаковую форму, этот всегда отправляется, поэтому всегда выполняется первая часть кода.

Вы должны добавить name приписать к вашему <input type="image" /> элементы:

<input type="image" name="img_need_toner" src="testing/images/need_toner.png"/>
<input type="hidden" name="toner" id="toner" tabindex="1" />
<input type="image" name="img_paper_jam" src="testing/images/paper_jam.png" /><br>
<input type="hidden" name="paper-jam" id="paper-jam" tabindex="2" />
<input type="image" name="img_printer_fault" src="testing/images/printer_fault.png" />
<input type="hidden" name="printer-fault" id="printer-fault" tabindex="3" />
<input type="image" name="img_other" src="testing/images/other.png" />
<input type="hidden" name="other" id="other" tabindex="4"  />

Помня, что нажав на <input type="image" /> отправит x а также y координаты клика, вам нужно проверить $_POST['img_need_toner_x'] а также $_POST['img_need_toner_y'] (если нажать на первое изображение).

0

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

Все входные данные находятся внутри одного тега формы, поэтому все входные данные отправляются в установленном виде. Есть несколько вещей, которые вы могли бы сделать, не уверен, почему вы используете $ _REQUEST, если честно.

Быстрое исправление и способ дать вам немного лучшее понимание — разделить их на 4 отдельные формы и добавить атрибуты NAME и VALUE в скрытые поля. Затем проверьте массив $ _POST на предмет значения (VALUE) ошибки (NAME). Смотрите мой пример ниже.

<?php
$url = 'testing/floor4/marketing'; // Setting the URL parameter for PHP

if(isset($_POST['error'])){

$error = $_POST['error'];

if($error === 'toner' ){echo 'TONER ERROR';}
if($error === 'paper-jam' ){echo 'PAPER JAM';}
if($error === 'printer-fault' ){echo 'PRINTER FAULT';}
if($error === 'other' ){echo 'OTHER';}
}
?>

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>

<body><h2>Please select issue</h2>

<form action="" method="post">
<input type="image" src="testing/images/need_toner.png"/>
<input type="hidden" name="error" value="toner" id="toner" tabindex="1" />
</form>

<form action="" method="post">
<input type="image" src="testing/images/paper_jam.png" />
<input type="hidden" name="error" value="paper-jam" id="paper-jam" tabindex="2" />
</form>

<form action="" method="post">
<input type="image" src="testing/images/printer_fault.png" />
<input type="hidden" name="error" value="printer-fault" id="printer-fault" tabindex="3" />
</form>

<form action="" method="post">
<input type="image" src="testing/images/other.png" />
<input type="hidden" name="error" value="other" id="other" tabindex="4"  />
</form>

</body>
</html>

Вы можете сделать намного больше, чтобы было чище, и есть сотни способов сделать что-то в PHP, например, вы можете использовать радиокнопки для каждой ошибки и иметь их все в одной форме, и если вы не хотите кнопку отправки Вы можете использовать JavaScript для отправки формы при нажатии переключателя. Это только одна из многих возможностей.

2

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