Я создаю таблицу, которая показывает список лекарств. И он получил функцию процесса запаса.Флажок и значение ввода в той же строке
Проблема в том, что если у меня есть 3 записи данных, я могу только проверить запись № 1 и № 2, если я проверю запись № 3 (или последнюю запись, если у меня так много записей), я получил ошибку.
Дело в том, что если я проверю данные 3 (или последнюю запись), установите флажок serialno
, но не получите значение количества.
также проблема возникает, когда я зарегистрировать новое лекарство, а затем проверить, что флажок, чтобы вставить значение и возвращает:
ВСТАВИТЬ МЕДИЦИНА КОЛИЧЕСТВА проверяемых МЕДИЦИНЫ.
Как исправить эту проблему? Я минимизировал код, насколько мог.
Форма:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" class="form-horizontal" role="form">
<div class="form-group">
<label class="col-sm-3 control-label no-padding-right" for="form-name"> Search : </label>
<div class="col-sm-9">
<span class="input-icon">
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Keyword HERE" class="col-xs-10 col-sm-12" name="search" />
<i class="ace-icon fa fa-search green"></i>
</span>
</div>
</div>
<table id="myTable" class="table table-bordered table-hover">
<thead>
<tr>
<th>Name</th><th>Serial Number</th><th>Price</th><th>Current Stock</th><th>Action</th><th>Value</th>
</tr>
</thead>
<tbody>
<?php
$sqlTable = "SELECT * FROM medicinestock";
$queryTable = $conn -> query($sqlTable);
if ($queryTable -> num_rows > 0)
{
while ($resultTable = $queryTable -> fetch_assoc())
{
$price = number_format($resultTable['price'], 2);
?>
<tr>
<td><?php echo $resultTable['name']; ?></td>
<td><?php echo $resultTable['serialNo']; ?></td>
<td>RM <?php echo $price; ?></td>
<td><?php echo $resultTable['quantity']; ?></td>
<td>
<div class="checkbox">
<label>
<input name="checkboxCheck[]" type="checkbox" class="ace" value="<?php echo $resultTable['serialNo']; ?>"/>
<span class="lbl"> Check</span>
</label>
</div>
</td>
<td>
<input type="number" name="quantity[]" style="max-width:50px" />
</td>
</tr>
<?php
}
}
else
{
$err = $conn -> error;
$status = "<b><p><font color='red'>SYSTEM ERROR : $err</font></p></b>";
}
?>
</tbody>
</table>
<div class='clearfix form-actions'>
<div class='col-md-offset-3 col-md-9'>
<button class='btn btn-info' type='submit'>
<i class='ace-icon fa fa-check bigger-110'></i>
Finish
</button>
</div>
</div>
</form>
Процесс
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$icnumber = $_POST['icnumber'];
//Check if CHECKBOX checked
if (isset($_POST['checkboxCheck']))
{
$quantity = $_POST['quantity'];
$checkboxCheck = $_POST['checkboxCheck'];
$count = count($checkboxCheck);
}
if ($count == 0)
{
$status = "<font color='red'><p><b>PLEASE CHECK AT LEAST 1 MEDICINE PRESCRIPTION</b></p></font>";
}
else
{
//Run process for each checked checkbox
for ($i = 0; $i < $count; $i++)
{
$serialNo = $checkboxCheck[$i];
$value = $quantity[$i];
if ($value == null)
{
$checker = FALSE;
}
else
{
$sqlPrescription = "INSERT INTO medicinecheckout (patientic, serialno, quantity, medicineout) VALUES ('$icnumber', '$serialNo', $value, NOW())";
$queryPrescription = $conn -> query($sqlPrescription);
if ($queryPrescription == FALSE)
{
$err = $conn -> error;
$status = "<b><p><font color='red'>SYSTEM ERROR : $err</font></p></b>";
}
}
}
}
if ($checker == FALSE)
{
$status = "<b><p><font color='red'>INSERT MEDICINE QUANTITY FOR CHECKED MEDICINE</font></p></b>";
}
}
<script type="text/javascript">
function myFunction()
{
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
for (i = 0; i < tr.length; i++)
{
td = tr[i].getElementsByTagName("td")[0];
if (td)
{
if (td.innerHTML.toUpperCase().indexOf(filter) > -1)
{
tr[i].style.display = "";
}
else
{
tr[i].style.display = "none";
}
}
}
}
</script>
Вы осматривали флажок элементы, чтобы подтвердить, что каждый из них имеет правильные значения, заданные? В вашем php-коде в цикле флажков у вас есть условный оператор: if value == null, то ничего не делайте с текущим индексом. Если последний элемент отсутствует, его значение не будет достигнуто. Вы можете использовать 'print ("
");' в вашем php-коде после '$ checkboxCheck = $ _POST ['checkboxCheck'];', чтобы увидеть, что было получено, которое покажет, будут ли получаемые данные проблемой. –@ cmp-202 Да, я уже проверил, я установил флажок checked, но не поле ввода количества. Я делаю значение $ value == null, чтобы проверять, когда строка получает значение количества или нет. Я добавляю команду печати, которая показывает Array ([0] => UBATAN100). – Asyraf
@ cmp-202 Я уже исправил проблему, но до сих пор не знаю, как ее исправить. Я пытаюсь проверить массив на количестве, которое он показывает так. Массив ( [0] => [1] => [2] => [3] => 1 [4] => 1 ) , что означает цикл читать все массивы количества , – Asyraf