Добрый день гуру программирования.
Столкнулся со следующей проблемой :
1. Выполняю "живой" поиск в mysql при нахождении необходимого нажимаю на данное поле в выпадающем списке и оно записывается в input, тут все хорошо.
2. После записи значения должен происходить новое обращение к бд и вывод уточняющих полей по записи.
Добился подобного с перезагрузкой страницы, но пытаюсь реализовать через ajax и тут поплыл.
Вот код:
index.html
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<style>
.search{
position:relative;
}
.search_result{
background: #FFF;
border: 1px #ccc solid;
width: 100px;
border-radius: 4px;
max-height:100px;
overflow-y:scroll;
display:none;
}
.search_result li{
list-style: none;
padding: 5px 10px;
margin: 0 0 0 -40px;
color: #0896D3;
border-bottom: 1px #ccc solid;
cursor: pointer;
transition:0.3s;
}
.search_result li:hover{
background: #F9FF00;
}
</style>
</head>
<body>
<input type="text" name="referal" placeholder="Судно" class="who" autocomplete="off">
<ul class="search_result"></ul>
<p>
<input type="text" name="Tsud" placeholder="Тип судна" class="who1" autocomplete="off" id = 'a'>
<p>
<input type="text" name="ImoSud" placeholder="IMO" class="who2">
<p>
<input type="text" name="GTSud" placeholder="GT" class="who3">
<p>
<input type="text" name="FlagSud" placeholder="Flag" class="who4">
</p></p></p></p>
</body>
</html>
<script type="text/javascript">
$(function(){
$('.who').bind("change keyup input click", function() {
if(this.value.length >= 3){
$.ajax({
type: 'post',
url: "search.php",
data: {'referal':this.value,'dt':'1'},
response: 'text',
success: function(data){
$(".search_result").html(data).fadeIn();
}
})
}
})
$(".search_result").hover(function(){
$(".who").blur();
})
выбранный результат в input
$(".search_result").on("click", "li", function(){
s_user = $(this).text();
$(".who").val(s_user);
$(".search_result").fadeOut();
$.ajax({
type: 'post',
url: "search.php",
data: {'vvvvv':s_user,'dt':'2'},
response: 'text',
success: function(data){
$("#a").html(data.a);
$(".who1").val($(".type.")).text();
$(".who2").val($(".Flag."));
$(".who3").val($(".imo."));
$(".who4").val($(".GT."));
}
})
})
})
</script>
search.php
<?php
global $tutorial_db;
$db_referal = new mysqli();
$db_referal->connect($dbhost, $dbuser, $dbpass, $dbname);
$db_referal->set_charset("utf8");
if ($db_referal->connect_errno) {
printf("Connect failed: %s\n", $db_referal->connect_error);
exit();
}
$search_string = $_POST['referal'];
$search_string = $db_referal->real_escape_string($search_string);
if (strlen($search_string) >= 1 && $search_string !== ' ') {
$query = 'SELECT * FROM cydno2 WHERE Name LIKE "%'.$search_string.'%" OR IMO LIKE "%'.$search_string.'% LIMIT 10"';
$search_string = $db_referal->real_escape_string($search_string);
$result = $db_referal->query($query);
if ($_POST['dt'] == '1') {
echo "<script type=\"text/javascript\"> alert(\" №1 \");</script>";
while ($row = $result -> fetch_array()) {
// $row->set_charset("cp1251");
$str = $row['Name'];
$str = iconv('UTF-8','CP1251' ,$str);
echo "\n<li>".$str."</li>"; }
}
if ($_POST['dt'] == '2') {
echo "<script type=\"text/javascript\"> alert(\" №2 \");</script>";
$search_str = $_POST['vvvvv'];
$search_str = iconv('CP1251','UTF-8' ,$search_str);
$query2 = "SELECT typesydno.Naumenovanie as type , Flag2.Name as flag, cydno2.IMO as imo, cydno2.GT as gt FROM `cydno2`, typesydno, Flag2 WHERE (cydno2.Name = '".$search_str."') AND (cydno2.Type = typesydno.Kod) and (cydno2.Flag = Flag2.Kod)";
$search_str = $db_referal->real_escape_string($search_str);
$result2 = $db_referal->query($query2);
while ($row = $result2 -> fetch_array()) {
$type = $row['type'];
}
}
}
?>
И вот тут весь затык.
Тема первая, прошу не судить сильно за оформление.