2016-06-10 3 views
0

Утро все,PHP - Автозаполнение текстовых полей на основе выпадающего значения выбрано?

Я создаю веб-приложение в формате HTML/PHP и имею страницу редактирования, которая имеет раскрывающийся список выбора, который заполняется из продуктов, хранящихся в базе данных MySQL. Изображение формы ниже;

Edit product form

Соответствующие данные для каждого поля хранится также в базе данных, я не могу работать для жизни меня, как я получаю Textboxes, чтобы показать соответствующую информацию, когда продукт выбирается с помощью выпадающего меню , и я изо всех сил пытаюсь найти какие-либо учебники о том, как я могу заставить это работать? Я понимаю, что мне может понадобиться использовать AJAX для извлечения информации без перезагрузки страницы. Извинения для Noob quesitons Я новичок тоже это,

Как всегда, любая помощь appriciated,

Спасибо.

PHP До сих пор, который заполнит выберите выпадающее меню:

<?php 


    or die ('Cannot connect to db'); 

$result = $conn->query("select ID, NAME from PRODUCTS"); 

print "<h3>EDIT PRODUCT</h3>"; 

print "<p>&nbsp;<strong>SELECT PRODUCT: <br><br></strong>" . "<select name='ID'"; 

while ($row = $result->fetch_assoc()) { 

       unset($id, $name); 
       $id = $row['ID']; 
       $name = $row['NAME']; 
       echo '<option value="'.$id.'">'.$name.'</option>'; 

} 

?> 

ответ

0

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

Я только добавил код, чтобы предварительно заполнить одно текстовое поле после выбора продукта в поле выбора, но вы должны быть в состоянии выяснить остальное.

<?php 

$conn = new mysqli('localhost', 'bradleyb_badbrad', '20password40', 'bradleyb_testDb') 
or die ('Cannot connect to db'); 

$result = $conn->query("select ID, NAME from PRODUCTS"); 

// Build up an array of options to show in our select box. 
$productSelectOptions = array(); 
while ($row = $result->fetch_assoc()) { 
    $productSelectOptions[$row['ID']] = $row['NAME']; 
} 

?> 

<h3>EDIT PRODUCT</h3> 

<p> 
    <strong>SELECT PRODUCT:</strong> 
    <select name="ID" id="productSelect"> 
     <?php foreach ($productSelectOptions as $val => $text): ?> 
      <option value="<?= $val; ?>"><?= $text; ?></option> 
     <?php endforeach; ?> 
    </select> 
</p> 

<h3>ID:</h3> 

<p> 
    <input type="text" name="id_text" id="idText" /> 
</p> 

<!-- Include jQuery --> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 

<script> 
    var $productSelect = $('#productSelect'); 
    var $idText = $('#idText'); 

    // This should be the path to a PHP script set up to receive $_POST['product'] 
    // and return the product info in a JSON encoded array. 
    // You should also set the Content-Type of the response to application/json so as our javascript parses it automatically. 
    var apiUrl = '/getProductInfo.php'; 

    function refreshInputsForProduct(product) 
    { 
     $.post(apiUrl, {product: product}, function(r) { 
      /** 
      * Assuming your PHP API responds with a JSON encoded array, with the ID available. 
      */ 
      $idText.val(r.ID); 
     }); 
    } 

    // Listen for when a new product is selected. 
    $productSelect.change(function() { 
     var product = $(this).val(); 
     refreshInputsForProduct(product); 
    }); 
</script> 

Пример PHP API с некоторыми общими инструкциями ... /getProductInfo.php

<?php 
header('Content-Type: application/json'); 
$response = array(
    'ID' => null, 
); 

if (array_key_exists('product', $_POST)) { 
    $product = $_POST['product']; 

    // Now we fetch the product info from the database. 
    // SELECT ID FROM product_info WHERE product = $product 
    // Imagine the result is stored in $result 
    $result = null; 

    $response['ID'] = $result['ID']; 
} 

echo json_encode($response); 

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

Надеюсь, это поможет!

+0

Действительно ценю это! Я думаю, что получаю ... у вас будет игра, и вы узнаете, как это происходит. Еще раз спасибо! – boothprod

0

Существует два способа решить эту проблему через AJAX или через форму отправки. Пример через форму php submit.

<?php 
//after submitting the form you get the value of selected product 
if(isset($_GET['id'])){ 
    $product_id=$_GET['ID']; 
    $productQuery = $conn->query("select ID, NAME from PRODUCTS WHERE ID='".$."'"); 
    $productResult = $productQuery ->fetch_assoc() 
    //use the value of productResult in your textbooxes 
}else{ 
    $productResult =array(); 
} 
<form method='get' action=''> 
    <select name='ID' onchange="this.form.submit()"> 
<?php 
    while ($row = $result->fetch_assoc()) { 
     unset($id, $name); 
     $id = $row['ID']; 
     $name = $row['NAME']; 
     echo '<option value="'.$id.'">'.$name.'</option>'; 
    }?> 
</select> 
</form> 
Смежные вопросы