Foros del Web » Programando para Internet » PHP »

jquery + json_encode - No me saleeee!!

Estas en el tema de jquery + json_encode - No me saleeee!! en el foro de PHP en Foros del Web. He estado estudiando y viendo unos tutoriales, sigo el ej de estos pero no me quieren andar, ya llevo una semana buscandole la vuelta. Lo ...
  #1 (permalink)  
Antiguo 24/02/2011, 19:37
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
jquery + json_encode - No me saleeee!!

He estado estudiando y viendo unos tutoriales, sigo el ej de estos pero no me quieren andar, ya llevo una semana buscandole la vuelta. Lo unico que uso diferente es que uso firebird y no mysql. Paso a mostrar y espero sus valiosisimas sugerencias. Se que entendiendo esto se me aclara el panorama para otras cosas. bueno , ahi va:

jqi.php

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<link type="text/css" rel="stylesheet" href="jquery-ui-1.8.9.custom.css" />
<script type="text/javascript" src="jquery-1.5.min.js"> </script>
<script type="text/javascript" src="jquery-ui-1.8.9.custom.min.js"> </script>

<script type="text/javascript">
$(function(){
$('#buscar_usuario').autocomplete({
source : 'ajax.php'
});
});
</script>

<title>Documento sin t&iacute;tulo</title>

</head>

<body>
<div id="busqueda" ><input type="text" id="buscar_usuario"
name="buscar_usuario" /> </div>

<div id="resultado" > </div>

</body>
</html>


ajax.php

<?php
include_once 'usuarios.class.php';
$usuario = new Usuarios();
echo json_encode($usuario->buscarUsuario($_GET['term']));
?>


usuarios.class.php

<?php
class Usuarios
{

public function __construct(){
$host = 'f:\sistemas\encomiendas\BASE.GDB';
$base = ibase_connect($host, 'SYSDBA', 'masterkey');
}

public function buscarUsuario($nombreUsuario){
$datos = array();
$sql = "SELECT * FROM USUARIOS
WHERE USUARIOS.NOMBRE
CONTAINING '".$nombreUsuario."' ORDER BY USUARIOS.NOMBRE";

$base_sql = ibase_query($base, $sql);

while ($row = ibase_fetch_assoc($base_sql)) {
$datos["value"] = $row["NOMBRE"];
$datos["NRO"] = $row["USUARIOS_NRO"];
$datos["CLAVE"] = $row["CLAVE"];
}
return $datos;
}
}

?>
  #2 (permalink)  
Antiguo 25/02/2011, 10:01
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

por si no se entendio, deberia mostrarme los nombres de los usuarios que extraigo de la base de datos en el input de jqi.php, no me lo muestra.

Si yo a los datos de usuarios.class.php los veo en otro php (sin class y sin funciones) se ven correctamente.

Última edición por pmfras; 25/02/2011 a las 13:03
  #3 (permalink)  
Antiguo 26/02/2011, 08:33
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 2 meses
Puntos: 998
Respuesta: jquery + json_encode - No me saleeee!!

y porque preguntas esto en el foro de html??
muevo a php
__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #4 (permalink)  
Antiguo 26/02/2011, 09:00
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: jquery + json_encode - No me saleeee!!

Código PHP:
<?php
include_once 'usuarios.class.php';
$usuario = new Usuarios();
echo 
json_encode($usuario->buscarUsuario($_GET['term'])); 
?>
¿De donde sacas $_GET['term']?
Porque en tu codigo no veo que estes pasando dicha variable ni nada por el estilo
  #5 (permalink)  
Antiguo 26/02/2011, 19:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

antes que nada aclaro como en otra pregunta que hice que empeze con esto en noviembre, pero una cosa sugiere otra y me he metido en esto de jquery

cinco cosas:

1- Antes que nada infinitas gracias por contestar, pense que estaba solo en el mundo.

2- perdon por haberlo puesto en html, es una torpeza de mi parte,soy muy nuevo en el foro y no me he dado cuenta, no volvera a ocurrir.

3- si a alguien le puede interesar se lo mando a email privado que me pasen.

4- la variable term la envia el autocomplete del jquery, y eso son las letra que vamos poniendo en la variable input

5- el error creo que esta en la forma que creo el arreglo en USUARIOS.CLASS.PHP

luego de investigar he modificado a USUARIOS.CLASS.PHP a:

<?php
class Usuarios
{

public function __construct(){
$host = 'f:\sistemas\encomiendas\BASE.GDB';
$base = ibase_connect($host, 'SYSDBA', 'masterkey');
}

public function buscarUsuario($nombreUsuario){
$datos = array(); // array vacio

$sql = "SELECT * FROM USUARIOS";
$base_sql = ibase_query($base, $sql);

while ($row = ibase_fetch_assoc($base_sql)) {
$datos[]= array("value"] => $row['NOMBRE'],
"usuarios_nro"] => $row['USUARIOS_NRO'],
"clave"] => $row['CLAVE']);
}
$datos = array_slice($datos, 0, 5);

return $datos;
}
}
?>


pero sigue sin andar!!
  #6 (permalink)  
Antiguo 26/02/2011, 21:04
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: jquery + json_encode - No me saleeee!!

Fíjate si te sirve de algo esto:
http://www.marcofbb.com.ar/autocompletar-con-ajax/

Mañana a la mañana lo reviso bien tu código
  #7 (permalink)  
Antiguo 27/02/2011, 17:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

gracias marcosfbb, espero tus observaciones del codigo. Una cosa nomas, podra ser algun error que estoy haciendo con las clases de USUARIOS.CLASS.PHP????
  #8 (permalink)  
Antiguo 27/02/2011, 18:16
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: jquery + json_encode - No me saleeee!!

$host = 'f:\sistemas\encomiendas\BASE.GDB'; ¿?

tu web esta montada en windows o linux ?
  #9 (permalink)  
Antiguo 27/02/2011, 20:14
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

windows

yo creo que el error lo cometo en las clases, pero no me alcanzo a dar cuenta. probe ha hacer un ej mas rudimentario sin clases y anda barbaro. Te re-agradezco tu atencion, cualquier cosa sera muy bien venida

saludos.

pd. si queres te en envio los .php a alguna cuenta que me indiques.
  #10 (permalink)  
Antiguo 27/02/2011, 20:21
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: jquery + json_encode - No me saleeee!!

Ojo tambien que tu estas presentando la pagina con codificacion iso (o en latin desde la base de datos) y el javascript los lee en utf8 por lo tanto debes pasarselos en utf8 a javascript y el se encarga de darlos vuelta en una pagina iso.

Si tus datos vienen con acentos el json_encode no los va a codificar... por lo tanto tienes que cambiar cualquier valor de texto con utf8_encode().
Ejemplo:
Código PHP:
$datos["value"] = utf8_encode($row["NOMBRE"]);
$datos["NRO"] = $row["USUARIOS_NRO"];
$datos["CLAVE"] = $row["CLAVE"]; 
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #11 (permalink)  
Antiguo 27/02/2011, 20:38
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

gracias marvin por responder, pero vuelvo sobre algo, hize un ej sin clases y andubo barbaro, el autocomplete me lo dio correctamente, pero con clases no me responde el input. En algun lugar estoy cometiendo el error (soy novato en esto) seguro que uds me podran aportar algo.
  #12 (permalink)  
Antiguo 27/02/2011, 20:54
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: jquery + json_encode - No me saleeee!!

Mmm... y hiciste lo siguiente:
Código PHP:
//archivo test.php
include_once 'usuarios.class.php';
$usuario = new Usuarios();
echo 
json_encode($usuario->buscarUsuario("go")); 
Ve si este archivo imprime algo... si imprime algo, puede ser que tu variable no la estes enviando por $_GET sino por $_POST

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #13 (permalink)  
Antiguo 27/02/2011, 21:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

amigos del foro, tengo el problema totalmente acorralado:

en USUARIOS.CLASS.PHP, si saco el comentario a la coneccion de la base de datos en BUSCARUSUARIO, anda todo bien, si esta comentariado no anda, conclusion, no me toma el constructor, la funcion __construc() que se deberia generar cuando hago el NEW, o me equivoco?? que me sugieren?



USUARIOS.CLASS.PHP

<?php
class Usuarios
{

public function __construct(){
$host = 'f:\sistemas\encomiendas\BASE.GDB';
$base = ibase_connect($host, 'SYSDBA', 'masterkey');
}

public function buscarUsuario($nombreUsuario){

/// $host = 'f:\sistemas\encomiendas\BASE.GDB';
/// $base = ibase_connect($host, 'SYSDBA', 'masterkey');


$datos = array(); // array vacio

$sql = "SELECT * FROM USUARIOS
WHERE USUARIOS.NOMBRE CONTAINING '".$nombreUsuario."' ORDER BY USUARIOS.NOMBRE";

$base_sql = ibase_query($base, $sql);


while ($row = ibase_fetch_assoc($base_sql)) {
$row['value'] = $row['NOMBRE'];
$row['label'] = "{$row['USUARIOS_NRO']}, {$row['NOMBRE']}, {$row['CLAVE']}";
$datos[]=$row;
}

$datos = array_slice($datos, 0, 5);
return $datos;
}
}

?>


les recuerdo que es llamado desde un archivo AJAX.PHP que detalle mas arriba.
  #14 (permalink)  
Antiguo 27/02/2011, 21:06
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: jquery + json_encode - No me saleeee!!

Si tienes php un poco desactualizado ponle function Usuarios() y ve que pasa.

Si no ponle cualquier nombre y llamala antes de hacer cualquier cosa.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #15 (permalink)  
Antiguo 28/02/2011, 05:10
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

El siguiente ej si anda, es extremo basico, pero indudable que tengo un problema dentro de la clase donde hago un __construct abriendo la base de datos(es como que pierde la coneccion con la base, porque en este ej sencillo si anda pero no usa base), probe lo que me sugeris Marvin y no quiere, o sea le cambie de nombre de __construct por crea y agregue una linea haciendo $usuario->crea()



CLASE_0.PHP

<?php
include_once 'clase_1.php';

$cliente1 = new cliente("Pepe", 1);

echo "El identificador del cliente 1 es: " . $cliente1->dame_numero();

?>


CLASE_1.PHP

<?php
class cliente{
var $nombre;
var $numero;
var $peliculas_alquiladas;

function __construct($nombre,$numero){
$this->nombre=$nombre;
$this->numero=$numero;
$this->peliculas_alquiladas=array();
}

function dame_numero(){
return $this->numero;
}
}

?>
  #16 (permalink)  
Antiguo 28/02/2011, 11:33
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: jquery + json_encode - No me saleeee!!

A todo esto... trata de poner los codigos de esta manera:
[PHP]
//tu codigo
[/PHP]

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #17 (permalink)  
Antiguo 21/07/2012, 13:55
 
Fecha de Ingreso: julio-2012
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: jquery + json_encode - No me saleeee!!

Tienes un error en la llamada al constructor de la conexion, si quieres usar un constructor deberias susar un metodo para eso, puesto que si estas usando :

<?php
class Usuarios
{
public $base// aqui la variable global

public function __construct(){//Aqui estas declarando un constructor
$host = 'f:\sistemas\encomiendas\BASE.GDB';
$this->base = ibase_connect($host, 'SYSDBA', 'masterkey');

//si quieres declarar una variable que funcione con esto deberias antes declarar una variable global

}

public function buscarUsuario($nombreUsuario){
$datos = array(); // array vacio

$sql = "SELECT * FROM USUARIOS";
$base_sql = ibase_query($base, $sql);//aqui $base nunca entra en el juego

while ($row = ibase_fetch_assoc($base_sql)) {
$datos[]= array("value"] => $row['NOMBRE'],
"usuarios_nro"] => $row['USUARIOS_NRO'],
"clave"] => $row['CLAVE']);
}
$datos = array_slice($datos, 0, 5);

return $datos;
}
}
?>

Mas que todo creo que tus errores son por la conexion :) saludos

Etiquetas: jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:56.