selectbox doesn't change by ajax - ajax

I have ajax code that display the name of the cities(in selectbox) according the area that has been chosen:
<?PHP if ($_POST) { ?>
$(document).ready(function(){
$('#areaID').filter(function(){
var areaID=$('#areaID').val();
var cityID=<?PHP echo $cityID ?>;
$('#cityID').load('js/ajax/getCities.php?areaID=' + areaID+'&cityID=' + cityID);
return false;
});
});
<?PHP }else { ?>
$(function () {
function updateCitySelectBox() {
var areaID = $('#areaID').val();
$('#cityID').load('js/ajax/getCities.php?areaID=' + areaID);
return false;
}
updateCitySelectBox();
$('#areaID').change(updateCitySelectBox);
});
<?PHP } ?>
The problem is - after user submit the form and get error (i.e - forget to fill some field), user can change the area but the cities select box doesn't change according the new area.
What is wrong with the code?
<p><label>area</label>
<select name='areaID' id='areaID'>
<?PHP
$query = mysql_query("SELECT * FROM `areas` ORDER BY id ASC ");
while($index = mysql_fetch_array($query))
{
$db_area_id = $index['id'];
$db_area_name = $index['name'];
if ($db_area_id == $areaID)
echo "<option value='$db_area_id' selected>$db_area_name</option>";
else
echo "<option value='$db_area_id'>$db_area_name</option>";
}
?>
</select><span>*</span>
</p>
<p><label>City</label>
<select id='cityID' name='cityID'> </select>
</p>

Related

how to add alert in to login my login page like "login successfully"?

I have login page but i am dont know where i can take this alerts ,
i will take my script like this
echo ("<SCRIPT LANGUAGE='JavaScript'> window.alert('Your Login Succesfully ,'); window.location.href='home'; </SCRIPT>");
but i dont know how to make if else condition on my query in the model and contoller .I using num_rows but its didnt work .
my controller
public function login()
{
$u = $this->input->post('username');
$p = $this->input->post('password');
$data = $this->app_model->getlogindata($u,$p);
return $data;
}
my model
public function getlogindata($username,$password)
{
$u = $username;
$p = md5($password);
$cek_login = $this->db->get_where('login', array('username' => $u,'password'=>$p));
if(count($cek_login->result())>0)
{
foreach ($cek_login->result() as $qck)
{
if($qck->level=='puskesmas')
{
// $ambil_data = $this->db->get_where('puskesmas',array('id_puskesmas' => $u));
$this->db->select('*');
$this->db->from('puskesmas');
$this->db->join('login', 'puskesmas.id_puskesmas=login.id_puskesmas');
$this->db->where('username', $u);
$ambil_data = $this->db->get();
foreach ($ambil_data->result() as $qad)
{
$sess_data['logged_in'] = 'yes';
$sess_data['id_puskesmas'] = $qad->id_puskesmas; //
$sess_data['nama_puskesmas'] = $qad->nama_puskesmas;
$sess_data['alamat_puskesmas'] = $qad->alamat_puskesmas;
$sess_data['nama_petugas'] = $qad->nama_petugas;
$sess_data['nomor'] = $qad->nomor;
$sess_data['email'] = $qad->email;
$sess_data['level'] = $qad->level;
$this->session->set_userdata($sess_data);
}
header('location:'.base_url().'puskesmas');
} //xammp mu aktif?
elseif($qck->level=='dinas')
{
//$ambil_data = $this->db->get_where('dinas',array('id_dinas' => $u));
$this->db->select('*');
$this->db->from('dinas');
$this->db->join('login', 'dinas.id_dinas=login.id_dinas');
$this->db->where('username', $u);
$ambil_data = $this->db->get();
foreach ($ambil_data->result() as $qad)
{
$sess_data['logged_in'] = 'yes';
$sess_data['id_dinas'] = $qad->id_dinas;
$sess_data['nama_dinas'] = $qad->nama_dinas;
$sess_data['alamat_dinas'] = $qad->alamat_dinas;
$sess_data['kode_pos'] = $qad->kode_pos;
$sess_data['level'] = $qad->level;
$this->session->set_userdata($sess_data);
}
header('location:'.base_url().'dinas');
}
elseif($qck->level=='admin')
{
//$ambil_data = $this->db->get_where('admin',array('id_admin' => $u));
$this->db->select('*');
$this->db->from('admin');
$this->db->join('login', 'admin.id_admin=login.id_admin');
$this->db->where('username', $u);
$ambil_data = $this->db->get();
foreach ($ambil_data->result() as $qad)
{
$sess_data['logged_in'] = 'yes';
$sess_data['id_admin'] = $qad->id_admin;
$sess_data['nama_admin'] = $qad->nama_admin;
$sess_data['alamat_admin'] = $qad->alamat_admin;
$sess_data['status'] = $qad->status;
$sess_data['level'] = $qad->level;
$this->session->set_userdata($sess_data);
}
header('location:'.base_url().'admin');
}
else{
echo ("<SCRIPT LANGUAGE='JavaScript'> window.alert('Record Updated Successfully'); window.location.href='web'; </SCRIPT>");// i add this and still didnt work
}
}
}
}
in this script i just didnt know where i can take this alerts and what a parameter can i use to add this alerts . like if num_rows = 1 , echo = blablabla
thanks you sir
you have to use flash data in code igniter or you can use ajax callback in success you can alert what you want and redirect to whatever you like.
Controller
$this->session->set_flashdata('error_message', 'Incorrect Username or Password ! Please try again.');
redirect(URL.'backend/login');
View
<?php
if ($this->session->flashdata('error_message'))
{
?>
<div class="alert alert-danger" style="color: #fff;">
<!-- <button class="close" data-close="alert"></button> -->
<span><?php echo $this->session->flashdata('error_message'); ?></span>
</div>
<?php
}
if ($this->session->flashdata('ok_message'))
{
?>
<div class="alert alert-success">
<!-- <button class="close" data-close="alert"></button> -->
<span><?php echo $this->session->flashdata('ok_message'); ?></span>
</div>
<?php
}
?>
try this.i hope it will help you.
else{
echo '<script language="javascript">';
echo 'alert("Record Updated Successfully")';
window.location.href = 'web';
echo '</script>';
}

dependent dropdown list by using single table value

I need to to create dependent dropdown. First select the client. In the next dropdown list it will shows the listof projects that belongs to the selected client. After selecting the project third dropdown list will filter tasks belongs to that project. I need to do this with a one table in the database without primary key foreign key relationship.
My task table have
1.client name
2. project name
3. tasks name
here one client has multiple project
one project has multiple tasks
Maybe I'm asking very simple question.But I am unable to proceed with my project without doing this part.Please someone helps me.
This is my table structure
If you are using same table to store Client, Projects & Tasks, So it's possible you will create more duplicate records e.g. Might be project name duplicate or task duplicate or client name ....
Although it's up to your choice and convenient.. Basically Ajax Dropdown (Dependent dropdown) is fully action & Ajax based. So you know what and when you want through Ajax then you can build this easy..
Here is an example for CodeIgniter Lovers!! :D
CodeIgniter Controller:
<?php
// security first always....
(defined('BASEPATH') or exit('No direct script access allowed'));
/**
* Class Controller
*
* Class Dropdown Controller to handle login & logout
*/
class Dropdown extends CI_controller
{
/**
* Class Constructor
*/
public function __construct()
{
// execute parent class constructor
parent::__construct();
// load model
$this->load->model('Dropdown_model');
}
/**
* Default method to execute if method name missing
* #return [type] [description]
*/
public function index()
{
$array_data = array();
// only on Ajax Request
if ($this->input->is_ajax_request()) {
// if request for projects
if ($this->input->post('action') && $this->input->post('action') == 'project') {
// get client name
$client = $this->input->post('client', true);
// get project data by client name
$array_data = $this->Dropdown_model->get_dropdown_data(trim($client), 'project');
// AjaxPOST JSON response
echo json_encode($array_data);die();
}
// if request for task
if ($this->input->post('action') && $this->input->post('action') == 'task') {
// get project name
$project = $this->input->post('project', true);
// get task data by project
$array_data = $this->Dropdown_model->get_dropdown_data(trim($project), 'task');
// AjaxPOST JSON response
echo json_encode($array_data);die();
}
}
// else get all client data
$array_data = $this->Dropdown_model->get_dropdown_data(null, null);
// send to view
$this->load->view('dropdown', ['data' => $array_data]);
}
}
/* End of file dropdown.php */
/* Location: ./application/controllers/dropdown.php */
CodeIgniter Model:
<?php
// No direct script execution
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Class Dropdown_model to handle all related information from MySQL
*/
class Dropdown_model extends CI_Model
{
/**
* MySQL table which contains all data about users
* #var string
*/
protected $table = 'task';
/**
* Returns, User First Name by Email ID
* #param [type] $email_addres [description]
* #return [type] [description]
*/
public function get_dropdown_data($where_data = null, $type = null)
{
$query = '';
// clients only
if (is_null($type) && is_null($where_data)) {
// desire column from table
$this->db->select('client_name');
// only unique clients
$this->db->distinct('client_name');
// mysql table
$query = $this->db->get($this->table);
}
// projects by client
elseif ($type == 'project' && !is_null($where_data)) {
// desire column from table
$this->db->select('project_name');
// where clause
$this->db->where('client_name', $where_data);
// mysql table
$query = $this->db->get($this->table);
}
// task by project
elseif ($type == 'task' && !is_null($where_data)) {
// desire column from table
$this->db->select('task');
// where clause
$this->db->where('project_name', $where_data);
// mysql table
$query = $this->db->get($this->table);
}
// if record exist
if ($query->num_rows() > 0) {
// return all data as array
return $query->result_array();
} else {
// error
return false;
}
}
}
/* End of file Dropdown_model.php */
/* Location: ./application/models/Dropdown_model.php */
CodeIgniter View:
<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter: Dependent dropdown list by using single table value</title>
<!-- load bootstrap css -->
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- load jquery library -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- load bootstrap js -->
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="form-group">
<label for="name">Client</label>
<select class="form-control" id="clients" name="clients">
<option value="0">--Select Clients--</option>
<?php if (isset($data)):?>
<?php foreach ($data as $key => $value): ?>
<option value="<?=$value['client_name']?>"><?=$value['client_name']?></option>
<?php endforeach ?>
<?php endif ?>
</select>
</div>
<div class="form-group">
<label for="name">Projects</label>
<select class="form-control" id="projects" name="projects">
<option value="0">--Select Projects--</option>
</select>
</div>
<div class="form-group">
<label for="name">Tasks</label>
<select class="form-control" id="tasks" name="tasks">
<option value="0">--Select Tasks--</option>
</select>
</div>
<div class="form-group">
<input type="button" class="btn btn-primary" value="Submit">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
// client select box
var $client = $('select#clients');
// project select box
var $projects = $('select#projects');
// task select box
var $tasks = $('select#tasks');
// on change client name, get projects
$client.on('change', function () {
// get selected client name
var client = $(this).find('option:selected').val();
// post data with CSRF token
var data = {
action:'project',
client: client,
"<?=$this->security->get_csrf_token_name()?>" : "<?=$this->security->get_csrf_hash()?>"
};
// AjaxPOST to get projects
$.post('./dropdown', data, function(json) {
projects_data = '<option value="0">--Select Projects--</option>';
$.each(json, function(index, obj){
projects_data += '<option value="'+obj.project_name+'">'+obj.project_name+'</option>';
});
// append all projects in project dropdown
$projects.html(projects_data);
}, 'JSON');
});
// on change project, get task
$projects.on('change', function () {
// get selected project name
var project = $(this).find('option:selected').val();
// AjaxPOSt wit CSRF
var data = {
action:'task',
project: project,
"<?=$this->security->get_csrf_token_name()?>" : "<?=$this->security->get_csrf_hash()?>"
};
$.post('./dropdown', data, function(json) {
task_data = '<option value="0">--Select Task--</option>';
$.each(json, function(index, obj){
task_data += '<option value="'+obj.task+'">'+obj.task+'</option>';
});
// append all task data in Task dropdown
$tasks.html(task_data);
}, 'JSON');
});
});
</script>
</body>
</html>
MySQL table:
id client_name project_name task
------ ------------------- ----------------- -------------
1 Man Powers & Morans Web Micro Site Development
2 Mango vs Trees Brand Development Pitch
3 Man Powers & Morans Ecom Site Maintenance
4 Light One Ecom Site Maintenance
5 Mango vs Trees Siteground Development
MySQL table structure:
Field Type Null Key Default Extra
------------ ----------- ------ ------ ------- ----------------
id int(11) NO PRI (NULL) auto_increment
client_name varchar(85) YES (NULL)
project_name varchar(85) YES (NULL)
task varchar(85) YES (NULL)
Html View Screenshot:
that i understand from your question.
You may need to make select fields like this
<label>Clints</label>
<select name="clint" id="clint" class="form-control" onchange="return get_projects(this.value)">
<option value="">Select Clint</option>
<?php foreach($clients as $clint){?>
<option value="<?php echo $clint->id?>"><?php echo $clint->name?></option>
<?php }?>
</select>
<label>Projects</label>
<select name="projects" id="projects" class="form-control" onchange="return get_tasks(this.value)">
<option value="">All</option>
</select>
<label>tasks</label>
<select name="tasks" id="tasks" class="form-control">
<option value="">All</option>
</select>
and Script like this
function get_projects(clint_id) {
$.ajax({
url: '<?php echo base_url();?>your controllef/your function/' + clint_id,
success: function(response)
jQuery('#projects).html(response);
}
});
}
function get_tasks(project_id) {
$.ajax({
url: '<?php echo base_url();?>your controllef/your function/' +project_id,
success: function(response)
{
jQuery('#tasks).html(response);
}
});
}
then you need to make function in controller like this
public function get_projects($clint_id)
{
$project = $this->your_model->get_projects($clint_id);
echo '<option value="">Select Project</option>';
foreach($project as $row){
echo '<option value="' . $row->project . '" >' . $row->name . '</option>';
}
}
public function get_tasks($project_id)
{
$tasks = $this->your_model->get_tasks($project_id);
echo '<option value="">Select Project</option>';
foreach($tasks as $row){
echo '<option value="' . $row->task . '" >' . $row->name . '</option>';
}
}

i want to search in codeigniter and view result is which i searched

Here is my Model:
function get_search() {
$match = $this->input->post('search');
$this->db->like('p_category',$match);
$this->db->or_like('p_place',$match);
$this->db->or_like('p_price',$match);
$query = $this->db->get('tbl_property');
if($query->num_rows() > 0)
return $query->result();
else
return FALSE;
}
Here is my View:
<?php
foreach($query as $pack_details):
?>
<table class="table table-hover table-bordered">
<?php echo $pack_details->p_title?>
</table>
<?php
endforeach;?>
want to search and will show result only which i searched.
This is an old one of mine, but you may be able to adapt it to yours. Your form sends the post to the controller. The variable $art is the search item. The variable $num is the number of results. The jquery sends the form to the article class search_results
Controller
public function seek()
{
// this is the artist search display
$art = html_escape(trim($this->input->post('art')));
$this->db->like('artist', $art);
$this->db->select('artist, song, album, mix_name');
$query = $this->db->get('podcasts');
$num = $query->num_rows();
echo "<h3>We found $num $art song's</h3>";
if($query->num_rows() > 0) {
foreach ($query->result() as $row) {
echo "<li class='search_list'>Song: $row->song <br> Album: $row->album <br> Podcast: $row->mix_name</li> ";
}
}else {
echo "You searched for $art, Please check your spelling, or ensure the artists name is complete";
}
}
Jquery if you want the search to show up on the same page
$(function () {
"use strict";
$("#search").submit(function () {
var data = $('#search').serialize();
//alert(data); return false;
$.ajax({
url: "/display/seek",
data: data,
type: "POST",
success: function (msg) {
$('article.search_results').html(msg).show();
}
});
return false;
});
});
View is simply. See the last line in the jquery
<article class="search_results"></article>

How to add "route action" into response content with Ajax Zend2?

I am new to zend framework and trying to test my first app about ajax with zend2.
I want to show a link when I return a response from my controller ! I try anyways but cann't view !
I try this:
Here my HTML:
<select id="my_list" onChange="showlist(this.value);" name="my_list">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
Here my Ajax Script:
function showlist(id){
$.post("user/list", {
content: id
},function(data){
if(data.response == true){
$('#div_show').html(data['html']);
}
}, 'json');
}
And my controller:
public function listAction()
{
$request = $this->getRequest();
$response = $this->getResponse();
if ($request->isPost()) {
$post_data = $request->getPost();
$id = $post_data['content'];
if($id){
/* $html = $group; It's Ok ! I can view group value !*/
$html = 'Test !';
$response->setContent(\Zend\Json\Json::encode(array('response' => true,'html'=>$html)));
}
else{
$response->setContent(\Zend\Json\Json::encode(array('response' => false)));
}
}
return $response;
}
I can view group value when I select listbox, but I cann't see the link when I want to view its detail !
It's my first question ! Please help me.
var url = '<?php echo $this->url('user', array('action' => 'list')); ?>';
function showlist(id){
$.post(url, {
content: id
},function(data){
if(data.response == true){
$('#div_show').html(data['html']);
}
}, 'json');
}

joomla dynamic dropdown registrationform

1) I have a basic Joomla form that has three drop downs for Country, Town and Shop
2) I need to get the dropdown list based on the dropdown list provided above.
I have achieved to get the data from database and create drop down by coding in registration.xml in
usercomponent
What needs to be achieved:
I am trying to create dynamic drop downs based on the above data selected in the dropdown.
Please help me I am working hard for this I couldn't find the solution and code break through
I've created a basic non-Joomla example of this here
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<?php
$username = "USERNAME";
$password = "PASSWORD";
$hostname = "localhost";
$dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
$selected = mysql_select_db("DATABASE", $dbhandle) or die("Could not select examples");
$result = mysql_query("SELECT * FROM `values`");
$values=array();
$counter=0;
while($row = mysql_fetch_array($result))
{
$values[$counter]=$row{'country'};
$counter++;
}
mysql_close($con);
?>
<?php
$i=0;
$countries=array();
foreach($values as $value) {
$exists=false;
if(count($countries)>0) {
foreach($countries as $something) {
if($something==$value) {
$exists=true;
}
}
}
if($exists==false) {
$countries[$i]=$value;
$i++;
}
}
?>
<select id="first-choice">
<option selected value="base">Please Select</option>
<?php
$k=0;
while($k<count($countries)) {
echo "<option value='".$countries[$k]."'>" . $countries[$k] . "</option>";
$k++;
}
?>
</select>
<br />
<select id="second-choice">
<option>Please choose from above</option>
</select>
<br />
<select id="third-choice">
<option>Please choose from above</option>
</select>
<script type="text/javascript">
$("#first-choice").change(function() {
$("#second-choice").load("getter.php?country=" + $("#first-choice").val());
});
$("#second-choice").change(function() {
$("#third-choice").load("getter.php?town=" + $("#second-choice").val());
});
</script>
</body>
</html>
File called getter.php
<?php
$username = "USERNAME";
$password = "PASSWORD";
$hostname = "localhost";
$dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
$selected = mysql_select_db("DATABASE", $dbhandle) or die("Could not select examples");
if($_GET['country']) {
$countries = mysql_real_escape_string($_GET['country']);
$query = "SELECT * FROM `values` WHERE country='".$countries."'";
$result = mysql_query($query);
$values=array();
$i=0;
while($row = mysql_fetch_array($result))
{
$values[$i]=$row{'town'};
$i++;
}
$i=0;
$towns=array();
foreach($values as $value) {
$exists=false;
if(count($towns)>0) {
foreach($towns as $town) {
if($town==$value) {
$exists=true;
}
}
}
if($exists==false) {
$towns[$i]=$value;
$i++;
}
}
$k=0;
echo "<option selected value='base'>Please Select an Option</option>";
while ($k<count($towns)) {
echo "<option value=".$towns[$k].">" . $towns[$k] . "</option>";
$k++;
}
} elseif ($_GET['town']) {
$town = mysql_real_escape_string($_GET['town']);
$query = "SELECT * FROM `values` WHERE town='".$town."'";
$result = mysql_query($query);
echo "<option selected value='base'>Please Select an Option</option>";
while ($row = mysql_fetch_array($result)) {
echo "<option>" . $row{'shop'} . "</option>";
}
}
?>
Based on the tutorial here. To Joomla this up. You will need to put the getter.php file into the model and call it through JSON (with a suitable controller). Remember to replace all visable text with JText - so it can be made with a language file. You also need to add the jquery into the header with JDocument::addScript or if your using Joomla 3.0 then JHtml::_('jquery.framework'); suffices. Also you must connect to the database through Joomla using JFactory::getDBO
I've put a basic example of this here.
Some notes: You may wish to call a specific version of JQuery as its constantly being updated. 1.9.0 works fine - but I don't know what will be hosted on that link when 2.0.0 comes out and what browser compatibility will be included.
This assumes a database structure of just
id country town shop. of course I doubt your database schemes are that easy. So remember to adapt this as necessary.
Hopefully this should start you going :)

Resources