AJAX - mostrar consulta tras seleccion opcion en combobox

 
Vista:
sin imagen de perfil

mostrar consulta tras seleccion opcion en combobox

Publicado por zafra (1 intervención) el 12/05/2010 03:44:38
hola amigos, mi problema es el siguinete:

tengo una lista menu que optiene los valores de una tabla mysql, eso lo hace bien, una vez que la seleccion no consigo mostrar nada justamente debajo, no consigo enocntrarle el fallo, iexplorer me da un error en el .js en la linea 9, que ahi un document.getElementById() el error siguiente, por lo que deduzco que lo que no le llega son los datos a esa funcion, pero no consigo solucionarlo:

Mensaje: Se esperaba un objeto
Línea: 9
Carácter: 1
Código: 0
URI: http://localhost/form_div/ajax/

añado los archivos que tengo menos el de conexiones.php que ese no falla:
ajax.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function objetoAjax(){
	var xmlhttp=false;
	try {		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
	try {
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) {
	xmlhttp = false;
	}
	}
 
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
		}
		return xmlhttp;
}
 
function pedirDatos(){	//donde se mostrará el resultado	
divResultado = document.getElementById('resultado');	//tomamos el valor de la lista desplegable	
nom=document.formulario.lista.value;
 
//instanciamos el objetoAjax	
ajax=objetoAjax();
//usamos el medoto POST	
//archivo que realizará la operacion
//datoscliente.php
 
ajax.open("POST", "datoscliente.php",true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4){
//mostrar resultados en esta capa			
divResultado.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");	//enviando los valores 
ajax.send("nombres="+nom)}


lista.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require('conexion.php');
//seleccionamos solo el nombre de los clientes
$sql=mysql_query("SELECT id_sector, nombre_sector FROM sectores",$con);
?>
<select name="lista" id="resultado" onchange="pedirDatos()">
<?php
while($row = mysql_fetch_array($sql)){
 
	echo '<option value="'.$row["id_sector"].'" >'.$row["id_sector"].'</option>';
}
?>
</select>
datosclientes.php:
<?php
require('conexion.php');
//capturar el nombre del cliente
 echo $id=$_POST['id_sector'];//seleccionamos los datos del cliente por su nombre
$sql=mysql_query("SELECT nom FROM empresas WHERE sector='".$id."'",$con);
echo sql;
$row = mysql_fetch_array($sql);//mostrando el resultadoecho 	
echo "<p><strong>Direccion</strong></p><p>".$row['nom']."</p>";
//echo 	"<p><strong>Telefono</strong></p><p>".$row['telefono']."</p>";
//echo 	"<p><strong>Email</strong></p><p>".$row['email']."</p>";
?>


index.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<title>Consulta de datos</title>
<script language="JavaScript" type="text/javascript" xsrc="ajax.js" mce_src="ajax.js"     ></script>
</head>
<body>
<p>Este ejemplo muestra como realizar una consulta de los registros de una tabla usando un control de lista.</p>
<form name="formulario" action="">
<?php
include('lista.php');
?>
</form>
<div id="resultado" style="border:1px solid #FF0000; color:#000099;width:400px;">
</div>
</body>
</html>


muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

RE:mostrar consulta tras seleccion opcion en combo

Publicado por Pepe (15 intervenciones) el 22/06/2010 23:38:23
lo que tienes aqui

lista.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
require('conexion.php');
//seleccionamos solo el nombre de los clientes 
$sql=mysql_query("SELECT id_sector, nombre_sector FROM sectores",$con);
?>
<select name="lista" id="resultado" onchange="pedirDatos()">
<?php
while($row = mysql_fetch_array($sql)){
 
echo '<option value="'.$row["id_sector"].'" >'.$row["id_sector"].'</option>';
}
?>
</select>


reemplazalo por el include de PHP que tienes en tu archivo datosclientes.php, de tal manera que el combo lo tengas en ese archivo y una ves seleccionado te aparescan los datos que mandas de lista.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

mostrar consulta tras seleccion opcion en combobox

Publicado por Fer (1 intervención) el 02/04/2012 21:38:14
Ok, a alguien le puede funcionar, vamos por pasos:

1.- Archivo ajax.js
Lo unico aqui que no debemos perder de vista es que el archivo que llamas en esta linea:
ajax.open("POST", "datoscliente.php",true);
Debe de llamarse igual que el archivo php que creaste por lo que veo en lo que posteas el archivo php al que llamas no es el mismo que el describes despues el cual llamas datosclientes.php

Los que vas a enviar al archivo datoscliente.php por el metodo que deseas (POST o GET) recuerda que lo estas instanciando en esta linea:

ajax.send("nombres="+nom)

ese quiere decir que en datoscliente.php lo que vas a recibir por POST es nombres


2.- Archivo lista.php
Recuerda que el id es lo que referenciara a tu objeto
Asi que cambia esta linea
<select name="lista" id="resultado" onchange="pedirDatos()">
Por esta:
<select name="lista" id="lista" onchange="pedirDatos();">

3.- Archivo datoscliente.php

Como te explique anteriormente vas a recibir nombres y no 'id_sector'
En tu consulta evita usar comillas dobles y puntos solo usa comillas sencillas

Asi que cambia tu codigo por esto:

require('conexion.php');
//capturar el nombre del cliente
echo $id=$_POST['nombres'];//seleccionamos los datos del cliente por su nombre
$sql=mysql_query("SELECT nom FROM empresas WHERE sector='$id',$con);
//echo $sql;
$row = mysql_fetch_array($sql);//mostrando el resultadoecho
echo "<p><strong>Direccion</strong></p><p>".$row['nom']."</p>";
//echo "<p><strong>Telefono</strong></p><p>".$row['telefono']."</p>";
//echo "<p><strong>Email</strong></p><p>".$row['email']."</p>";

Bueno seguramente a ti no te servira el comentario por que tu post tiene algunos años ya pero seguro le servira a alguien en la red.

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

mostrar consulta tras seleccion opcion en combobox

Publicado por Andres (1 intervención) el 27/08/2012 06:03:13
Hola estoy muy interesado en este codigo, ya lo puse en practica pero no me salen impresos los datos al hacer la consulta, este es mi codigo:

conexion.php

1
2
3
4
5
6
7
8
9
<?php
//Configuracion de la conexion a base de datos
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "12345";
$bd_base = "ribosomatic";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>



datoscliente.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
require('conexion.php');
?>
<?php
//capturar el nombre del cliente
echo $nom=$_POST['nombres'];
//seleccionamos los datos del cliente por su nombre
$sql=mysql_query("SELECT * FROM clientes WHERE nombres='".$nom."'",$con);
$row = mysql_fetch_object($sql);
//mostrando el resultado
echo 	"<p><strong>Direccion</strong></p><p>$row->direccion </p>";
echo 	"<p><strong>Telefono</strong></p><p>$row->telefono</p>";
echo 	"<p><strong>Email</strong></p><p>$row->email</p>";
echo $nom=$_POST['direccion'];
?>



index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Consulta de datos</title>
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
</head>
<body>
<p>Este ejemplo muestra como realizar una consulta de los registros de una tabla usando un control de lista.</p>
<form name="formulario" action="">
<?php
	include('lista.php');
?>
</form>
<div id="resultado" style="border:1px solid #FF0000; color:#000099;width:400px;">
</div>
</body>
</html>



lista.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
require('conexion.php');
 
//seleccionamos solo el nombre de los clientes
$sql=mysql_query("SELECT * FROM clientes",$con);
 
?>
<select name="lista" id="lista" onchange="pedirDatos();">
<?php
while($row = mysql_fetch_object($sql)){
	echo "<option value=".$row->nombres.">".$row->nombres."</option> \n";
}
?>
</select>


Solo me imprime el primer nombre del cliente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 90
Oro
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

mostrar consulta tras seleccion opcion en combobox

Publicado por xve (222 intervenciones) el 27/08/2012 08:41:36
Hola Andres, te recomiendo poner el value entre comillas y utilizar un identificador, no un nombre...
Cuando visualices la página con un solo registros, date a ver el código fuente de la pagina y si nos lo puedes mostrar aquí...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

mostrar consulta tras seleccion opcion en combobox

Publicado por marcelo (1 intervención) el 22/10/2012 23:11:35
hola estoy utilizando el código y no me corre my consulta es que este código funciona solo con la librería ajax.js o se puede realizar con jquery-1.8.2.min.js he estado probando con jquery-1.8.2.min.js y no corre , al parecer no hace llegar el valor de "nombres" se le pasa al archivo datoscliente.php si alguien me podría pasar la libreia ajax.js o de donde le descargo le agradeceria ... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

mostrar consulta tras seleccion opcion en combobox

Publicado por Gerardo (1 intervención) el 04/06/2015 17:38:18
Necesitaba consultar si la respuesta que entrega ajax puede ser en un textbox en vez de un div , agradecería mucho si pudieran explicar como realizarlo, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar