2016-06-07 7 views
0

Рассуждение:Как проверить параметр выпадающего списка, прежде чем разрешить отправку пользователя на следующую страницу?

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

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

Многие из обучающих программ, которые я рассматривал, похоже, не работают с тем, что я пытаюсь достичь, поэтому я пришел сюда, чтобы попытаться получить ответ.

Описание:

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

Это немного формы, которая нуждается в проверке ошибок:

 <tr> 
      <td>Name:</td> 
      <td> 
      <select name="users"> 
      <option value=""></option> //catch error if this option is chosen. 
      <?php 
      foreach($users as $key => $value){ 
      echo "<option value=\"$key\">$key</option>"; 
      } 
      ?> 
      </select> 
      </td> 
     </tr> 

Как вы можете видеть, он использует динамический список и теперь получает все пользователи, которые синхронизируются в данный момент, чтобы отображаться в списке. Я знаю, как отбрасывать сообщение об ошибке, когда опция остается пустой, но когда сотрудник отправляет ее пустым, она отправляет отчет указанным электронным письмам и API-интерфейсам и направляет пользователя на страницу «Спасибо за отчетность», не требуя от пользователей введите действительный вариант независимо от того, что. Как я могу это исправить?

TLDR Вопрос:

Как сделать так, что ошибка возникает и останавливает пользователя от продолжая отправку отчета?

Вот мой полный код для справок:

<!DOCTYPE HTML> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="/css/main_style.css"> 
<style> 
.error {color: #FF0000;} 
table, th, td {border: 1px solid white;} 
</style> 
</head> 
<body> 

<script> 
function close_window() { 
    close(); 
} 
</script> 

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
include("includes/classes.php"); 
include("includes/classes_monitoring.php"); 
$link = open_v8_db(); 
$users = get_clocked_in_users(); 
$OperationID = @$_REQUEST['OperationID']; 

$title = ""; 
$grayedOut = false; 
$disabledInput = ""; 
$hiddenJobDiv = ""; 
$hiddenPartDiv = ""; 
$ID = ""; 
$html = ""; 

$jobid = @$_REQUEST['JobID']; 
$part_id = @$_REQUEST['PartID']; 
$machCode = @$_REQUEST['Machine']; 

if ($OperationID == 20) 
{ 
    $title = "Punching Machine"; 
    $grayedOut = true; 
} 
elseif ($OperationID == 30) 
{ 
    $title = "Folding Machine"; 
    $grayedOut = true; 
} 
elseif ($OperationID == 40 || $OperationID == 140) 
{ 
    $title = "Powder Coating"; 
    $grayedOut = true; 
} 
elseif ($OperationID == 50 || $OperationID == 150) 
{ 
    $title = "Assembly"; 
    $grayedOut = true; 
} 
elseif ($OperationID == 60 || $OperationID == 160) 
{ 
    $title = "Inspection"; 
    $grayedOut = true; 
} 
elseif ($jobid != "" && $part_id == "") 
{ 
    $title = "Job"; 
    $OperationID = 70; 
} 
else 
{ 
    $title = "General"; 
    $OperationID = 80; 
    $grayedOut = false; 
} 

if ($greyedOut = true) 
{ 
    $disabledInput = "readonly"; 
} 

function customErr($ID) 
{ 
    $html = ""; 
    $issueReport_folder = 'document/Production System/'; 
    $issueReporting = $issueReport_folder.'IssueReporting.csv'; 
    $file_handle = fopen($issueReporting, "r"); 

    if ($ID == 20) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "Punch") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    if ($ID == 30) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "Fold") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    if ($ID == 40 || $ID == 140) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "Powder") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    if ($ID == 50 || $ID == 150) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "Assembly") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    if ($ID == 60 || $ID == 160) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "Inspectoin") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    if ($ID == 70) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "Job") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    if ($ID == 80) 
    { 
     while (!feof($file_handle)) 
     { 
      $line_of_text = fgetcsv($file_handle, 1024); 
      if ($line_of_text[2] == "General") 
      { 
       $html[] = $line_of_text[1]; 
      } 
     } 
    } 
    fclose($file_handle); 
    return $html; 
} 

$jobErr = $partErr = $machErr = ""; 
$job = $part = $mach = $note = ""; 

if ($jobid == "") 
{ 
    $hiddenJobDiv = "style=\"display:none;"; 
} 
if ($part_id == "") 
{ 
    $hiddenPartDiv = "style=\"display:none;"; 
} 

function test_input($data) 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 
<div class="reportForm">                             
    <h2>Report <u><?php echo $title; ?></u> Error</h2> 
    <form action="send_form_email.php?OperationID=<?php print ($OperationID) ?>&title=<?php print ($title) ?>" method="post"> 
     <table> 
     <tr> 
      <td>Name:</td> 
      <td> 
      <select name="users"> 
      <option value=""></option> 
      <?php 
      foreach($users as $key => $value){ 
      echo "<option value=\"$key\">$key</option>"; 
      } 
      ?> 
      </select> 
      </td> 
     </tr> 
     <tr> 
      <td <?php print $hiddenJobDiv ?>>Job Number:</td> 
      <td><input type="text" name="jobid" value="<?php echo ($jobid) ?>" <?php echo $disabledInput ?>></td> 
     </tr> 
     <tr> 
      <td <?php print $hiddenPartDiv ?>>Part Number:</td> 
      <td><input type="text" name="partid" value="<?php echo ($part_id) ?>" <?php echo $disabledInput ?>></td> 
     </tr> 
      <?php if ($OperationID == 20){ ?> 
      <tr> 
       <td>Machine:</td> 
       <td><input type="text" name="mach" value="<?php echo ($machCode) ?>" <?php echo $disabledInput ?>></td> 
      <tr> 
      <?php } ?> 
     </table><br> 
     Error:<br><br><br>                                  <!-- Display of dynamic list. --> 
     <?php 
     $html = customErr($OperationID);                               
     foreach ($html as $oneError):?>                               <!-- foreach used to find the next iteration of the array. --> 
     <label>                                     <!-- Beginning of the dynamic radio button list. --> 
      <input name="category"                                 
      type="radio" 
      value="<?php echo $oneError; ?>">                              <!-- Dynamic value to be used in Slack API and email. --> 
      <?php echo $oneError; ?>                                <!-- Dynamic value as a visual representation for user. --> 
     </label><br><br><br> 
     <?endforeach;?>                                   <!-- Stops foreach and goes to next object if avaliable. --> 
     <label>                                     <!-- A permanent radio button labeled "Other" for (cont.) --> 
     <input name="category" type="radio" value="Other" checked>Other                       <!-- all report error forms. --> 
     </label><br><br><br> 
     Note:<br> <textarea name="comment" rows="10" cols="70" placeholder="More detail... (Is there a way to recreate the error? What happened?)"></textarea> <!-- Allows the user to type in a custom message/note. --> 
     <br><br> 
     <input type="submit" name="submit" value="Submit" class="userFriendly">                     <!-- A large 'submit' button for touch screen. --> 
     <a href="#" onclick="close_window();return false;"><input type="submit" name="close" value="Close" class="userFriendly"></a>        <!-- A large 'close' button for touch screens. --> 
    </form>                                      <!-- End of form. --> 
</div>                                        
</body>                                       
</html> 

Спасибо заранее.

+0

"Я знаю, как бросать сообщение об ошибке, когда параметр остается пустым, однако, когда утверждает сотрудник это пусто "... если вы можете сделать это, вы на 99% там. Похоже, вам просто нужно отменить форму отправки в этот момент. – BizzyBob

+0

@BizzyBob точно! rcpinto получил его так, чтобы он не представлял значение null. Просто получите его, чтобы он печатал ошибку. – Moms

ответ

2

Вам необходимо добавить событие onsubmit в форму, которая возвращает false, если «пользователи» пустые и недействительны в противном случае.

<form ... onsubmit="return this.users.value != ''"> 

Возможно, вы захотите добавить оповещение перед возвратом.

1

Вариант 1

Дайте одно значение параметра как «по умолчанию» и сделать проверку при нажатии на кнопку отправить, проверьте, совпадают ли это значение «по умолчанию», а затем оповещает пользователя «Plz введите действительный пользователь имя'.

Вариант 2:

Если вы войти в систему, автоматически получать пользователя из переменной сеанса и поместить его на выберите значение, а затем отключить его.

+0

Вы уже попробовали вариант 1, не работает. Нет системы входа в систему, поскольку она получает данные из базы данных M1, поэтому вариант 2 не работает. за ответ. – Moms

+0

Я написал клик и вызов ajax. Проверьте функцию $ ('input [type = submit]'). Click (function() { $ selectedValue = $ ('select.users option: selected'). (0: ') { оповещения (' Введите что-нибудь ');} еще { // сделать вызов Ajax и отправить любые данные $ .ajax ({ URL: 'send_form_email.php', метод: 'POST' , данных: данные, успех: функция (данные) { }, ошибка: функция (данные) { } });} }); – SESN

+0

Я никогда не использовал ajax, кроме некоторых предупреждений. Сможет ли я дать больше информации о том, что и как это будет реализовано? – Moms

1

Вы можете использовать простой HTML нужный вариант, если пользователь не выбрал он покажет сообщение об ошибке

+0

Вы узнаете что-то новое каждый день. Не знал, что такая вещь существует. Благодарю. – Moms

Смежные вопросы

 Смежные вопросы