#php #mysql #codeigniter
#php #mysql #codeigniter
Вопрос:
Это controller.php
<?php
class Autocomplete extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('datacomplete');
}
public function index($id)
{
echo $id;
$this->load->view('view_demo', $data);
}
public function GetCountryName()
{
$keyword = $this->input->post('keyword');
$data = $this->datacomplete->GetRow($keyword);
echo json_encode($data);
}
}
?>
Это модель
<?php
class Datacomplete extends CI_Model
{
public function GetRow($keyword)
{
$this->db->order_by('id', 'DESC');
$this->db->like("name", $keyword);
return $this->db->get('autocomplete')->result_array();
}
}
это view.php
<!DOCTYPE html>
<html>
<head>
<!-- Latest compiled and minified CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled and minified JavaScript -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js">
</script>
<script src="<?php echo base_url(); ?>assets/custom.js">
</script>
</link>
</head>
<body style="background-color: #000000;">
<?php echo $id= 1; ?>
<form action="<?php echo base_url('autocomplete/index/' .$id); ?>" method="post">
<div class="row">
<center>
<h2 style="color: #fff;">
AUTOCOMPLETE FORM FROM DATABASE USING CODEIGNITER AND AJAX
</h2>
</center>
<div class="col-md-4 col-md-offset-4" style="margin-top: 200px;">
<label class="control-lable" style="color: #fff;">
Country Name
</label>
<input autocomplete="off" class="form-control" id="country" name="country" placeholder="Type to get an Ajax call of Countries" style="height:70px" type="text">
<ul aria-labelledby="dropdownMenu" class="dropdown-menu txtcountry" id="DropdownCountry" role="menu" style="margin-left:15px;margin-right:0px;">
</ul>
<input type="submit">
</input>
</input>
</div>
</div>
</form>
</body>
</html>
Это custom.js файл
$(document).ready(function() {
$("#country").keyup(function() {
$.ajax({
type: "POST",
url: "http://localhost/codeajax/autocomplete/GetCountryName",
data: {
keyword: $("#country").val()
},
dataType: "json",
success: function(data) {
if (data.length > 0) {
$('#DropdownCountry').empty();
$('#country').attr("data-toggle", "dropdown");
$('#DropdownCountry').dropdown('toggle');
} else if (data.length == 0) {
$('#country').attr("data-toggle", "");
}
$.each(data, function(key, value) {
if (data.length >= 0)
$('#DropdownCountry').append('<li role="displayCountries" ><a role="menuitem dropdownCountryli" class="dropdownlivalue">' value['name'] '</a></li>');
});
}
});
});
$('ul.txtcountry').on('click', 'li a', function() {
$('#country').val($(this).text());
});
});
Я хочу динамически извлекать идентификатор страны в URL-адресе после нажатия кнопки отправки.
Теперь я использую статический идентификатор передачи как 1.
в таблице есть идентификатор двух столбцов и название страны.
как динамически передавать идентификатор в URL, когда я нажимаю кнопку отправки.
Мне не удается динамически извлекать идентификатор из базы данных, т.Е. Когда я нажимаю на отправку, следует перенаправить на новую страницу с идентификатором страны или echo $ id на новой странице, а также на URL-адрес, который должен показать мне идентификатор страны
Комментарии:
1. Вы получаете сообщение об ошибке? что мешает вам использовать id?
2. @M.Hemant у меня есть идентификатор, но он статичен …. но я хочу получить идентификатор страны, т.Е. Идентификатор динамически …. и я не знаю, как динамически извлекать идентификатор после нажатия кнопки отправки
3. во-первых, где находится ваша кнопка отправки? во-вторых, когда вы нажимаете отправить, куда это идет? когда вы отправляете, есть ли
$id
в этой форме?4. @M.Hemant у меня есть кнопка отправки, подобная этой <тип ввода=»отправить»>, и она находится в приведенном выше коде… когда я нажимаю на отправку, он перенаправляет на новую страницу или пустую страницу, и вы создаете новую страницу с любым именем …. и в форме у меня есть этот кодопубликовать «>
5. @M.Hemant у меня есть строка поиска, в которой я ищу Индию в поиске, и когда я нажимаю кнопку отправки, она отправляет идентификатор страны Индия на новую страницу в URL echo base_url(‘autocomplete / index /’. $id); а также отображает идентификатор на странице. Мне нужно сделать две вещи: сначала передать идентификатор Индии в URL-адресе, а затем повторить идентификатор на той же странице, т.е. echo $id;
Ответ №1:
Вы могли бы добиться этого с помощью javascript.
Сначала измените форму :
<form action="<?php echo base_url('autocomplete/index/' .$id); ?>" method="post">
Для :
<form method="post" id="countryForm">
Затем измените кнопку отправки :
<input type="submit">
Для :
<input type="submit" id="submitForm" disabled>
А затем примените следующие коды javascript :
$(document).ready(function() {
$("#country").keyup(function() {
$.ajax({
type: "POST",
url: "http://localhost/codeajax/autocomplete/GetCountryName",
data: {
keyword: $("#country").val()
},
dataType: "json",
success: function(data) {
if (data.length > 0) {
$('#DropdownCountry').empty();
$('#country').attr("data-toggle", "dropdown");
$('#DropdownCountry').dropdown('toggle');
} else if (data.length == 0) {
$('#country').attr("data-toggle", "");
}
// Assign each country id into each country list `data-` element
$.each(data, function(key, value) {
if (data.length >= 0)
$('#DropdownCountry').append('<li role="displayCountries" ><a role="menuitem dropdownCountryli" data-countryid="' value['id'] '" class="dropdownlivalue">' value['name'] '</a></li>');
});
}
});
});
$('ul.txtcountry').on('click', 'li a', function() {
$('#country').val($(this).text());
$('#countryForm').attr('action', '<?php echo base_url('autocomplete/index/'); ?>' $(this).data('countryid'); // set new form action which contain country id
$('#submitForm').removeAttr('disabled'); // enable the submit button after one country is selected
});
});