2017-02-06 3 views
1

У меня есть таблица, которая дает мне 3 столбца, код продукта, название продукта и флажок.Публикация данных, когда ввод текста не пуст PHP

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

Это мой стол:

<form id="frm-example" action="price-quote.php" method="POST">      
<table id="datatable-price" class="table table-striped table-bordered"> 
    <thead> 
     <tr> 
      <th>Product Code</th> 
      <th>Product Name</th> 
      <th>Add to quote</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php while($res = sqlsrv_fetch_array($def, SQLSRV_FETCH_ASSOC)) : ?> 
      <tr>         
       <td><?php echo $res['ItemCode']; ?></td> 
       <td><?php echo $res['ItemName']; ?></td> 
       <td> 
        <input type="checkbox" name="checkbox[]" value="<?php echo $res['ItemCode'];?>"></input> 
       </td> 
      </tr> 
     <?php endwhile; ?> 
    </tbody> 
</table> 
<input type="submit" id="submit" name="submit" class="btn btn-success pull-right" value="Quote"></input> 
</form> 

Это Javascript, чтобы пойти с ним:

<script> 
    $(document).ready(function(){ 
    var table = $('#datatable-price').DataTable({ 
    }); 

    // Handle click on "Select all" control 
    $('#datatable-price-select-all').on('click', function(){ 
     // Get all rows with search applied 
     var rows = table.rows({ 'search': 'applied' }).nodes(); 
     // Check/uncheck checkboxes for all rows in the table 
     $('input[type="checkbox"]', rows).prop('checked', this.checked); 
    }); 

    // Handle click on checkbox to set state of "Select all" control 
    $('#datatable-price tbody').on('change', 'input[type="checkbox"]', function(){ 
     // If checkbox is not checked 
     if(!this.checked){ 
      var el = $('#datatable-price-select-all').get(0); 
      // If "Select all" control is checked and has 'indeterminate' property 
      if(el && el.checked && ('indeterminate' in el)){ 
       // Set visual state of "Select all" control 
       // as 'indeterminate' 
       el.indeterminate = true; 
      } 
     } 
    }); 

    // Handle form submission event 
    $('#frm-example').on('submit', function(e){ 
     var form = this; 

     // Iterate over all checkboxes in the table 
     table.$('input[type="checkbox"]').each(function(){ 
      // If checkbox doesn't exist in DOM 
      if(!$.contains(document, this)){ 
       // If checkbox is checked 
       if(this.checked){ 
       // Create a hidden element 
       $(form).append(
        $('<input>') 
         .attr('type', 'hidden') 
         .attr('name', this.name) 
         .val(this.value) 
       ); 
       } 
      } 
     }); 
    }); 

    }); 
</script> 

И это моя страница, на которой он выполняет также:

<?php 
if(!empty($_POST['checkbox'])) { 
    foreach($_POST['checkbox'] as $check){ 
     $abc = "SELECT ItemCode, ItemName 
       FROM OITM 
       WHERE ItemCode = '$check' 
       ORDER BY ItemName"; 
     $def = sqlsrv_query($sapconn, $abc); 
     $res = sqlsrv_fetch_array($def, SQLSRV_FETCH_ASSOC); 
     $prodCode = $res['ItemCode']; 
     $prodName = $res['ItemName']; 

     echo " 
      <tr>         
       <td>$prodCode</td> 
       <td>$prodName</td> 
      </tr> 
     "; 
    } 
} 
?> 

Может кто-либо приспосабливает это, чтобы отправить текст в текстовое поле, а не флажок. Было бы здорово, очень признателен!

Заранее спасибо

+0

У меня не возник вопрос. вы измените флажки в текстовые поля, и если они будут заполнены, вы отправите их. я прав ? –

+0

Это необходимая функциональность да. – PHPNewbie

ответ

0

я не понял, что ты хочешь сделать это, но есть много способов сделать.

Во-первых, вы можете изменить значение флажков для создания многозначного поля (не рекомендуется). Работает.

Нечто подобное:

<input type="checkbox" name="checkbox[]" value="<?php echo $res['ItemCode'];?>|<?php echo $res['ItemName'];?>"></input> 

В PHP вы получаете и разделить значение.


Во-вторых, вы можете добавить скрытые поля. При отмеченном флажке вы создаете динамически скрытый со значением и желаемым текстом.


Вы можете продолжить использовать коды кодов для передачи кода. После публикации вы используете implode. Вам нужно сделать это, потому что вы можете получить более 1 элемента.

<?php 
if(!empty($_POST['checkbox'])) { 
    $in = implode(",",$_POST['checkbox']); 

    foreach($_POST['checkbox'] as $check){ 
     $abc = "SELECT ItemCode, ItemName FROM OITM WHERE ItemCode in ('. $in . ') ORDER BY ItemName"; 

    } 
} 
?> 
+0

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

+0

HI PHPNewbie, отлично! Если нужна помощь, кричите! –

+0

Да, если бы вы могли помочь, это было бы здорово! – PHPNewbie

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