Вход

Просмотр полной версии : автозаполнение input зависимо от другого


texasx
27.06.2017, 08:07
Здравствуйте, как можно автозаполнить input (proc_sn) после заполнение input (proc_inv)
INDEX.PHP
<label color="blue">-----ПРОЦЕССОР----------</label></br>
<label>Модель</label>
<select name="proc_model" id="proc_model" class="form-control" >
<option></option>
<?php
$stmt = $DB_con->prepare("SELECT DISTINCT name_comp FROM comp");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['name_comp']; ?>"><?php echo $row['name_comp']; ?></option>
<?php
}
?>
</select>


<label>Инвентарный номер</label>
<input type="text" name="proc_inv" id="proc_inv" class="form-control" >

<label>Серийный номер</label>
<input type="text" name="proc_sn" id="proc_sn" class="form-control" >

<script type="text/javascript" language="javascript" >
$(document).ready(function(){
$(document).ready(function(){
$('#proc_inv').typeahead({
source: function(query, result)
{
$.ajax({
url:"comp/inv_comp.php",
method:"POST",
data:{query:query},
dataType:"json",
success:function(data)
{
result($.map(data, function(item){
return item;
}));
}
})
}
});
});
});
</script>

inv_comp.php
<?PHP
$connect = mysqli_connect("localhost", "root", "", "inver");
$request = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
SELECT * FROM comp WHERE inv_comp LIKE '".$request."%'
";

$result = mysqli_query($connect, $query);

$data = array();

if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
$data[] = $row["inv_comp"];
}
echo json_encode($data);
}
?>

ksa
27.06.2017, 08:21
Вложенные
$(document).ready(function(){...}
это уже явно перебор! :nono:

как можно автозаполнить input (proc_sn) после заполнение input (proc_inv)
Например сделать это внутри обработчика
success:function(data){...}

texasx
27.06.2017, 08:27
Вложенные

это уже явно перебор! :nono:

:write:



Например сделать это внутри обработчика

вот это не мог сделать :cray:

ksa
27.06.2017, 08:34
вот это не мог сделать
Показал бы как делал...

texasx
27.06.2017, 11:05
Показал бы как делал...
если не затруднить

ksa
27.06.2017, 14:50
texasx, я говорю тебе:
- Покажи как ты делал, дабы понять чего у тебя не получается.

texasx
28.06.2017, 05:41
texasx, я говорю тебе:
- Покажи как ты делал, дабы понять чего у тебя не получается.

Здравствуйте

http://savepic.ru/14633436.jpg

После ввода значение в input (proc_inv) чтобы автоматом заполнялся значение input (proc_sn) с таблицы comp (столбец sn_comp) и select (proc_model) с столбика name_comp

laimas
28.06.2017, 05:59
То есть, Инвентарный номер, это не уникальное значение?

texasx
28.06.2017, 06:14
То есть, Инвентарный номер, это не уникальное значение?
нет, они уникальные и серийные, а name_comp повторяются

texasx
28.06.2017, 06:24
может сюда как та, но не получается


<script type="text/javascript">
//index.php
$(document).ready(function()
{

$(".proc_inv").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "get_proc_sn.php",
data: dataString,
cache: false,
success: function(html)
{
$(".proc_sn").html(html);
$(".proc_model").html(html);
}
});
});
});
</script>



<?php
//get_prog_sn.php
include('dbconfig.php');
if($_POST['id'])
{
$id=$_POST['id'];

$stmt = $DB_con->prepare("SELECT * FROM comp WHERE inv_comp=:id");
$stmt->execute(array(':id' => $id));
?><option selected="selected">Select City :</option><?php
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['name_comp']; ?>"><?php echo $row['name_comp']; ?></option>
<input value="<?php echo $row['sn_comp']; ?>">
<?php
}
}
?>

laimas
28.06.2017, 06:28
нет, они уникальные и серийные, а name_comp повторяются

Если они уникальны, то это что такое?

SELECT * FROM comp WHERE inv_comp LIKE '".$request."%'
......
while($row = mysqli_fetch_assoc($result))

texasx
28.06.2017, 06:48
эти динамические связанные списки были

laimas
28.06.2017, 07:08
эти динамические связанные списки были

Это как?

texasx
28.06.2017, 08:21
на данный момент не использую связанные списки

ksa
28.06.2017, 08:33
может сюда как та, но не получается


<script type="text/javascript">
//index.php
$(document).ready(function()
{

$(".proc_inv").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "get_proc_sn.php",
data: dataString,
cache: false,
success: function(html)
{
$(".proc_sn").html(html);
$(".proc_model").html(html);
}
});
});
});
</script>


Нужно все делать относительно обрабатываемого элемента... ;)
Если я правильно понял твою структуру, что-то такое нужно

$(document).ready(function()
{

$(".proc_inv").change(function()
{
var id=$(this).val();
var parent=$(this).parents('tr').eq(0);
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "get_proc_sn.php",
data: dataString,
cache: false,
success: function(html)
{
parent.find(".proc_sn").html(html);
parent.find(".proc_model").html(html);
}
});
});
});

laimas
28.06.2017, 10:05
texasx,
вы чужой код под себя пытаетесь изменить или это ваше изобретение?

Допустим в базе есть записи моделей процессоров, инвентарные и серийные их номера. Без учета идентификатора записей этой таблицы, который уникален, знаем, что инвентарный номер также уникален.

Запросом индексного файла из выборки уникальных значений моделей процессоров строится их список. Для чего?

Пусть зная начальное из инвентарного номера ищем что-то в базе, тогда запрос WHERE field LIKE понятен, и возврат набора значений тоже. Но в таком случае этот запрос не для того чтобы как вы просите "заполнил поле такое, такое да еще и список". Этот список для выбора в нем инвентарного номера, после которого запрос в базу уже по этому номеру вернет запись: модель, серийный номер. Инвентарный уже выбран из писка, серийный получили и в поле (зачем это правда нужно не понять), а в уже построенном списке можно выбрать опцию соответствующей модели, о каком заполнении списка может идти речь?

texasx
28.06.2017, 11:10
ksa, что то не получается, или не так делаю ((


<?php
include_once 'dbconfig.php';
?>

<html>
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Данные по технике</title>
<script type="text/javascript">
//index.php
$(document).ready(function()
{

$(".proc_inv").change(function()
{
var id=$(this).val();
var parent=$(this).parents('tr').eq(0);
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "get_proc_sn.php",
data: dataString,
cache: false,
success: function(html)
{
parent.find(".proc_sn").html(html);
parent.find(".proc_model").html(html);
}
});
});
});
</script>
</head>
<body>
<label>Модель</label>
<select name="proc_model" id="proc_model">
<option></option>
<?php
$stmt = $DB_con->prepare("SELECT DISTINCT name_comp FROM comp");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name_comp']; ?></option>
<?php
}
?>
</select>


<label>Инвентарный номер</label>
<input type="text" name="proc_inv" id="proc_inv" class="proc_inv">

<label>Серийный номер</label>
<input type="text" name="proc_sn" id="proc_sn">
</body>
</html>



<?php
//get_prog_sn.php
include('dbconfig.php');
if($_POST['id'])
{
$id=$_POST['id'];

$stmt = $DB_con->prepare("SELECT * FROM comp WHERE proc_inv=:id");
$stmt->execute(array(':id' => $id));
?><
<?php
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name_comp']; ?></option>
<input value="<?php echo $row['sn_comp']; ?>">
<?php
}
}
?>


limas, да так и есть... изменяю другой код под свою, так как первый код у меня по php+ajax

ksa
28.06.2017, 11:20
что то не получается, или не так делаю
На картинке у тебя таблица была... И все инпуты были в строке.

Кто общий "ближайший" родитель у этих инпутов?
Вот его и нужно указать перед вызовом запроса.

ksa
28.06.2017, 11:22
У твоих примеров нет класса proc_model... :no:

texasx
28.06.2017, 11:22
texasx,
Запросом индексного файла из выборки уникальных значений моделей процессоров строится их список. Для чего?


есть модели которые нет списке инвен. номера (списанные и т.д.)
когда такие встречаются я просто пишу место инвентарного списан

laimas
28.06.2017, 11:23
изменяю другой код под свою, так как первый код у меня по php+ajax
Значит надо писать свое, а то что представлено, и попытки получения совсем не того что требуется, и не понятно во что вставляется и зачем, никуда не годится.

texasx
28.06.2017, 11:30
У твоих примеров нет класса proc_model... :no:

добавил класс для моделей и серийника


<?php
include_once 'dbconfig.php';
?>

<html>
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Данные по технике</title>
<script type="text/javascript">
//index.php
$(document).ready(function()
{

$(".proc_inv").change(function()
{
var id=$(this).val();
var parent=$(this).parents('tr').eq(0);
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "get_proc_sn.php",
data: dataString,
cache: false,
success: function(html)
{
parent.find(".proc_sn").html(html);
parent.find(".proc_model").html(html);
}
});
});
});
</script>
</head>
<body>
<div class="modal">
<label>Модель</label>
<select name="proc_model" id="proc_model" class="proc_model">
<option></option>
<?php
$stmt = $DB_con->prepare("SELECT DISTINCT name_comp FROM comp");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name_comp']; ?></option>
<?php
}
?>
</select>


<label>Инвентарный номер</label>
<input type="text" name="proc_inv" id="proc_inv" class="proc_inv">

<label>Серийный номер</label>
<input type="text" name="proc_sn" id="proc_sn" class="proc_sn">
</div>
</body>
</html>


родитель у этих инпутов?

<div class="modal"> такой подойдет?

texasx
28.06.2017, 11:32
Значит надо писать свое, а то что представлено, и попытки получения совсем не того что требуется, и не понятно во что вставляется и зачем, никуда не годится.
ну видите я вообще новичок по javascript, php

laimas
28.06.2017, 12:01
ну видите я вообще новичок по javascript, php

Все мы родились не в штанишках. Это не проблема. Не проблема со временем выучить и язык (мы же не сразу говорить можем). Но если не научится представлять задачу в целом и ее отдельные узлы, понимать и находить ее решение от общего к частному, то знание языка не поможет.

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

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

Чтобы эта задача была решаема, данные в базе не просто валяются, а хранятся в ней определенной структурой, которая описывается связанными таблицами.

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

Из того что у вас написано вообще не понятно что вы хотите получить от сервера и зачем.

ksa
28.06.2017, 13:33
<div class="modal"> такой подойдет?
Любой подойдет...