2016-10-10 3 views
0

Хорошо, мне придётся принести эту функцию под себя выше. Однако на этот раз данные будут обновляться без использования метода AJAX POST.изменить значение ячейки на кнопке submit

В моем столе у ​​меня есть минус и plus кнопка. Каждый из них действует как кнопка отправки, и когда значение добавляется в другое поле ввода, счетчик будет изменяться в зависимости от того, какая кнопка была нажата, например (+10, если плюс нажата кнопка, когда 10 находится в поле ввода)

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

<?php 
if(isset($_GET['stock_id'])) { 
    $the_stock_id = mysqli_real_escape_string($connection, $_GET['stock_id']);  
}  
$query = 'SELECT stock_id, sku_number, category, description, price, in_stock '; 
$query .= 'FROM parts_stock AS a JOIN items AS b ON a.stock_id = b.s_id '; 
$query .= "WHERE a.stock_id =".$the_stock_id; 

$edit_sku = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($edit_sku)) { 
    $stock_id = $row['stock_id'];  
    $sku  = $row['sku_number']; 
    $category = $row['category']; 
    $desc  = $row['description']; 
    $price = $row['price'];  
    $stock = $row['in_stock']; 
} 

if(isset($_POST['update_stock'])) { 
    $price  = $_POST['price']; 
    $mod_stock = $_POST['mod_stock']; 
    if(isset($_POST['rem_stock'])) { 
     $stock -= $mod_stock; 
    echo $stock; 
    }elseif(isset($_POST['add_stock'])) { 
     $stock += $mod_stock; 
    echo $stock;  
    } 
    $query = "UPDATE parts_stock, items SET "; 
    $query .= "price = '$price', ";  
    $query .= "in_stock = '$stock' "; 
    $query .= "WHERE stock_id ='$the_stock_id' "; 

    $update_stock = mysqli_query($connection, $query); 
    confirmQuery($update_stock); 

    $alert = <<<DELIMETER 
<div class='alert alert-warning alert-dismissible fade in' role='alert'> 
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> 
    <span aria-hidden="true">&times;</span> 
</button> 
<strong>Inventory Updated!</strong> <a href='inventory.php?view_all_inventory'>View All Inventory</a> 
</div> 
DELIMETER; 
} 
?> 
<div class="col-xs-12 col-sm-12 col-md-12"> 
    <h2>Edit Inventory Item</h2> 
    <?php echo $alert; ?> 
<hr> 
<table class="table table-bordered table-responsive table-striped"> 
<thead class="thead-inverse"> 
    <tr class="alert alert-success"> 
     <th>SKU #</th> 
     <th>Category</th> 
     <th>Description</th> 
     <th>Price</th> 
     <th>Current Stock</th> 
     <th>+/- Stock</th> 
     <th>Action</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
    <form role='form' action="" method="POST"> 
     <td><input value="<?php echo $sku; ?>" type="text" class="form-control" name="sku_number" readonly ></td> 
     <td><input value="<?php echo $category; ?>" type="text" class="form-control" name="category" readonly></td> 
     <td><input value="<?php echo $desc; ?>" type="text" class="form-control" name="description" readonly></td> 
     <td><input value="<?php echo $price; ?>" type="text" class="form-control" name="price" ></td> 
     <td><input value="<?php echo $stock; ?>" type="text" class="form-control" name="in_stock" readonly ></td> 
     <td><input value="" type="text" class="form-control" name="mod_stock"> </td> 
     <td class='btn-group'> 
      <button class='btn btn-danger btn-sm' type='submit' name='update_stock' value='rem_stock'><i class='glyphicon glyphicon-minus'></i></button> 
      <buton class='btn btn-success btn-sm' type='submit' name='update_stock' value='add_stock'><i class='glyphicon glyphicon-plus'></i></buton> 
     </td> 
     </form> 
    </tr>      
    </tbody>  
</table>                

</div>  
+0

использование 'если ($ _POST [ 'update_stock'] == 'rem_stock') ...' –

ответ

1

Есть несколько недостатков в вашем коде, такие как:

  • Посмотрите на следующую строку,

    <buton class=...</i></buton> 
    ^^^^^    ^^^^^ 
    

    Это должно быть button, а не buton

  • if(isset($_POST['rem_stock'])) {... и }elseif(isset($_POST['add_stock'])) { являются неправильными , Правильные if условия будут,

    if($_POST['update_stock'] == 'rem_stock') { ... 
    

    и

    }elseif($_POST['update_stock'] == 'add_stock'){ ... 
    
  • Вы получаете $the_stock_id от $_GET['stock_id'], поэтому, как только вы отправите форму, вы не будете получать какие-либо $_GET['stock_id'] хранить его в $the_stock_id переменная. Таким образом, воспользуйтесь $_POST['in_stock'] и $_POST['sku_number'] после отправки формы.

Таким образом, ваш PHP-код должен быть таким:

// your code 

if(isset($_POST['update_stock'])) { 
    $price  = $_POST['price']; 
    $mod_stock = $_POST['mod_stock']; 
    $stock = $_POST['in_stock']; 
    $the_stock_id = $_POST['sku_number']; 

    if($_POST['update_stock'] == 'rem_stock') { 
     $stock -= $mod_stock; 
    }elseif($_POST['update_stock'] == 'add_stock') { 
     $stock += $mod_stock;  
    } 
    $query = "UPDATE parts_stock, items SET "; 
    $query .= "price = '$price', ";  
    $query .= "in_stock = '$stock' "; 
    $query .= "WHERE stock_id ='$the_stock_id'"; 

    $update_stock = mysqli_query($connection, $query); 
    confirmQuery($update_stock); 

    $alert = <<<DELIMETER 
    <div class='alert alert-warning alert-dismissible fade in' role='alert'> 
     <button type="button" class="close" data-dismiss="alert" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
     </button> 
     <strong>Inventory Updated!</strong> <a href='inventory.php?view_all_inventory'>View All Inventory</a> 
    </div> 
DELIMETER; 
} 

и ваша кнопка отправить должно быть так:

<button class='btn btn-success btn-sm' type='submit' name='update_stock' value='add_stock'><i class='glyphicon glyphicon-plus'></i></button> 

Примечание (ы):

  • Всегда включайте отчет об ошибках, добавляйте эти две строки в самый верх своих скриптов PHP для отладки любых связанных с синтаксисом проблем.

    ini_set('display_errors', 1); 
    error_reporting(E_ALL); 
    
  • Узнайте о prepared statements потому что прямо сейчас ваш запрос чувствителен к инъекции SQL. Также см. how you can prevent SQL injection in PHP.

+0

Спасибо @Rajdeep. У меня $ the_stock_id определяется с $ _GET ['stock_id']. См. Мой код. Я буду определенно смотреть на редактирование моего кода здесь, чтобы предотвратить SQL-инъекцию. –

+0

@ cpt-crunchy См. Там, вы получаете идентификатор запаса от '$ _GET ['stock_id']', поэтому, как только вы отправите форму, у вас не будет никакого '$ _GET ['stock_id']', что означает после отправки формы '$ the_stock_id' будет недоступна. Как я уже сказал в своем ответе, используйте '$ _POST ['in_stock']' и '$ _POST ['sku_number']'. Я обновил свой ответ. –

+0

Я понимаю, что вы говорите. Тем не менее, мой код работает правильно, и я продолжаю получать правильное значение в $ _GET ['stock_id'] даже после отправки формы. –

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