Foros del Web » Programando para Internet » PHP »

autocompletar ya no me funciona

Estas en el tema de autocompletar ya no me funciona en el foro de PHP en Foros del Web. Hola, anteriormente postee, que estoy cambiando una aplicación web que tengo a mysqli. Uno de los problemas que me ha surgido, es que antes tenía ...
  #1 (permalink)  
Antiguo 09/08/2017, 05:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años, 7 meses
Puntos: 2
autocompletar ya no me funciona

Hola, anteriormente postee, que estoy cambiando una aplicación web que tengo a mysqli. Uno de los problemas que me ha surgido, es que antes tenía una función para autocompletar que ahora no funciona y no se porqué, os muestro los codigos que utilizo:

primero llamo a la función
Código HTML:
<script type="text/javascript">
 $(function(){
	$('#numfactura').autocomplete({source: 'ajax_fras.php'});
});
</script> 
esto llama a ajax_fras.php que contiene lo siguiente:

Código PHP:
include_once 'fras.class.php';

$factura = new Facturas();

echo 
json_encode($factura->buscarFactura($_GET['term'])); 
y que para acabar llama a la clase fras.class.php, que contiene esto:

Código PHP:
class Facturas
{
    public function 
__construct() {
        
$dbuser 'usuario';
        
$dbpwd 'contraseña';
        
$dbhost 'localhost';
        
$dbname 'basededatos';
        
        
        
$conn mysqli_connect($dbhost$dbuser$dbpwd,$dbname);

    }
public function 
buscarFactura($numfactura) {
$datos = array();
$sql "SELECT num_factura FROM facturas WHERE num_factura LIKE '%$numfactura%' ";

$resultado mysqli_query($conn$sql);

while (
$row mysqli_fetch_array($resultadoMYSQLI_NUM)) {
$datos[] = array("value" => $row[0]);
}
return 
$datos;
}

cuando en el cuadro de texto voy a insertar un numero de factura que sé que existe, me pone "No search results" esto, en mysql me funcionaba perfectame
  #2 (permalink)  
Antiguo 09/08/2017, 14:58
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: autocompletar ya no me funciona

Saludo

Eso es falta de vitamina POO (Programación orientada a objetos)

El asunto es que en la clase Facturas, en la función buscarFactura
se hace uso de la variable $conn pero esta es nula.

Esto a su vez, es debido a que esa variable toma valor al momento
de instanciar el objeto, pero no es contenido su valor para usarlo
en las demás funciones.

Esto es causado porque la variable no esta definida como un atributo
de la clase para ser usado donde se necesite.

Solución?
1. Hacer que la variable $conn este en el ámbito correcto de atributo
(definiendola private por ejemplo)
2. Hacer uso de esta variable con el prefijo this (informando que es un atributo)

Y ya con eso debería funcionar.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 10/08/2017, 04:12
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: autocompletar ya no me funciona

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo

Solución?
1. Hacer que la variable $conn este en el ámbito correcto de atributo
(definiendola private por ejemplo)
2. Hacer uso de esta variable con el prefijo this (informando que es un atributo)

Y ya con eso debería funcionar.
gracias por la información, pero sigue sin funcionar, de todas formas, ya te digo, que antes me funcionaba, ha sido al cambiar a mysqli cuando ha dejado de funcionar y no comprendo porque, ya que he cambiado el lenguaje y no veo donde puede estar el fallo.
  #4 (permalink)  
Antiguo 10/08/2017, 12:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: autocompletar ya no me funciona

Cita:
Iniciado por kidinshell Ver Mensaje
gracias por la información, pero sigue sin funcionar, de todas formas, ya te digo, que antes me funcionaba, ha sido al cambiar a mysqli cuando ha dejado de funcionar y no comprendo porque, ya que he cambiado el lenguaje y no veo donde puede estar el fallo.
Hola, de nada.

Pues yo he tomado tu clase, hice los cambios que mencione y funciona.

En cuyo caso te invito a que pongas los cambios que has hecho
para revisar cual es el inconveniente ahora.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 11/08/2017, 03:23
 
Fecha de Ingreso: marzo-2013
Mensajes: 79
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: autocompletar ya no me funciona

Cita:
Iniciado por mortiprogramador Ver Mensaje

En cuyo caso te invito a que pongas los cambios que has hecho
para revisar cual es el inconveniente ahora.
Probablemente no lo haya entendido bién, lo he cambiado de esta manera y no me funciona

Código PHP:
class Facturas
{
    public function 
__construct() {
        
$dbuser 'usuario';
        
$dbpwd 'contraseña';
        
$dbhost 'localhost';
        
$dbname 'basededatos';
        
        private 
$conn;
        
$this->conn mysqli_connect($dbhost$dbuser$dbpwd,$dbname);

    }
public function 
buscarFactura($numfactura) {
$datos = array();
$sql "SELECT num_factura FROM facturas WHERE num_factura LIKE '%$numfactura%' ";

$resultado mysqli_query($this->conn$sql);

while (
$row mysqli_fetch_array($resultadoMYSQLI_NUM)) {
$datos[] = array("value" => $row[0]);
}
return 
$datos;
}

  #6 (permalink)  
Antiguo 11/08/2017, 07:54
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: autocompletar ya no me funciona

Hola kidinshell,

Yo no estoy muy puesto en POO, pero esto ¿no será así?:

Código PHP:
Ver original
  1. $this->$conn = mysqli_connect($dbhost, $dbuser, $dbpwd,$dbname);
  #7 (permalink)  
Antiguo 11/08/2017, 14:16
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: autocompletar ya no me funciona

Saludo.

Casí perfecto.
Lo único que hay que mejorar es que la declaración de private
no va dentro de la función, pues pasaría lo mismo,
la siguiente función no podría hacer uso de esa variable.

Se debe declarar como atributo de la clase como tal,
es decir, fuera de las funciones, y ya con eso el resto debería funcionar.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: mysql, select, sql
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 21:53.