Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: General Dmitry Vergadoski en 25 Septiembre 2015, 15:07 pm



Título: ayuda autocompletar
Publicado por: General Dmitry Vergadoski en 25 Septiembre 2015, 15:07 pm
hola amigos aqui les coloco mi codigo para autocompletar una busqueda:



Título: Re: ayuda autocompletar en php
Publicado por: 0roch1 en 25 Septiembre 2015, 19:57 pm
El código es tuyo?, es un poco extraño que no puedas implementar esa parte cuando básicamente ya lo tienes.

Además hay algunos errores.

functions.js

Código
  1. html+='<a href="#" onclick="info('+json.data[datos].id+',\''+json.data[datos].nombre+'\')" class="list-group-item">';
  2.  

De dónde tomas id y nombre si en la consulta no están indicados?.

autocompletar.class.php
Código
  1. $query = $this->dbh->prepare("SELECT art_des FROM medi WHERE art_des LIKE :search");
  2.  

Cuando llamas a la función info en la etiqueta a pasas dos parámetros pero solo recibes uno.

functions.js
Código
  1. function info(art_des)
  2. {
  3.  
  4. }
  5.  

Respondiendo a tu duda.
Puedes crear otra clase (Depende de cómo sea la estructura de tus tablas) o crear una función en la clase Autocompletar para consultar el stock.

Sugerencias:
- Crea una clase por cada tabla
- Separa la conexión a la base de datos en otra clase
- Coloca nombres apropiados a tus clases, Autocompletar no es un nombre apropiado para una clase donde tienes información sobre medicamentos.


Coloca el código completo de la parte donde consultas el Stock para poder ayudarte con esa parte.

Saludos.


Título: Re: ayuda autocompletar en php
Publicado por: General Dmitry Vergadoski en 25 Septiembre 2015, 20:45 pm
El código es tuyo?, es un poco extraño que no puedas implementar esa parte cuando básicamente ya lo tienes.

Además hay algunos errores.

functions.js

Código
  1. html+='<a href="#" onclick="info('+json.data[datos].id+',\''+json.data[datos].nombre+'\')" class="list-group-item">';
  2.  

De dónde tomas id y nombre si en la consulta no están indicados?.

autocompletar.class.php
Código
  1. $query = $this->dbh->prepare("SELECT art_des FROM medi WHERE art_des LIKE :search");
  2.  

Cuando llamas a la función info en la etiqueta a pasas dos parámetros pero solo recibes uno.

functions.js
Código
  1. function info(art_des)
  2. {
  3.  
  4. }
  5.  

Respondiendo a tu duda.
Puedes crear otra clase (Depende de cómo sea la estructura de tus tablas) o crear una función en la clase Autocompletar para consultar el stock.

Sugerencias:
- Crea una clase por cada tabla
- Separa la conexión a la base de datos en otra clase
- Coloca nombres apropiados a tus clases, Autocompletar no es un nombre apropiado para una clase donde tienes información sobre medicamentos.


Coloca el código completo de la parte donde consultas el Stock para poder ayudarte con esa parte.

Saludos.

no me sirve fijate coloco:

Código
  1. <?php
  2. class Autocompletar
  3. {
  4.  
  5. private $dbh;
  6.  
  7. public function __construct()
  8. {
  9. $this->dbh = new PDO("mysql:host=localhost;dbname=medicinas", "root", "123456");
  10. }
  11.  
  12. public function findData($search)
  13. {
  14. $query = $this->dbh->prepare("SELECT art_des FROM medi WHERE art_des LIKE :search");
  15.        $query->execute(array(':search' => '%'.$search.'%'));
  16.        $this->dbh = null;
  17.        if($query->rowCount() > 0)
  18.        {
  19.         echo json_encode(array('res' => 'full', 'data' => $query->fetchAll()));
  20.        }
  21.        else
  22.        {
  23.         echo json_encode(array('res' => 'empty'));
  24.  
  25.                 if($row['stock_act'] > 0 ) {
  26.  
  27. echo 'Disponible';
  28.  
  29. } else {
  30.  
  31. echo 'No hay Disponible';
  32.  
  33. }
  34.  
  35.        }
  36. }
  37. }

y no me funciona


Título: Re: ayuda autocompletar en php
Publicado por: 0roch1 en 25 Septiembre 2015, 20:54 pm
Por lo que entiendo la aplicación debería funcionar así.

Buscas el nombre de un medicamento
Si se encuentran coincidencias con el nombre se despliega una lista con estos.
Al hacer clic sobre un medicamento este deberá mostrar un mensaje cuantos hay en stock

Corrígeme si estoy mal con los pasos.

Podrías colocar exactamente que campos tiene la tabla medi.




Título: Re: ayuda autocompletar en php
Publicado por: General Dmitry Vergadoski en 25 Septiembre 2015, 21:28 pm
Por lo que entiendo la aplicación debería funcionar así.

Buscas el nombre de un medicamento
Si se encuentran coincidencias con el nombre se despliega una lista con estos.
Al hacer clic sobre un medicamento este deberá mostrar un mensaje cuantos hay en stock

Corrígeme si estoy mal con los pasos.

Podrías colocar exactamente que campos tiene la tabla medi.




exactamente asi como dices es que deberia ser, la tabla donde dice la cantidad de medicinas que hay disponibles se llama "stock_act" la tabla "art_des" es la que tiene el nombre de las medicinas.


Título: Re: ayuda autocompletar en php
Publicado por: 0roch1 en 25 Septiembre 2015, 23:56 pm
Código
  1. if($query->rowCount() > 0)
  2.        {
  3.         echo json_encode(array('res' => 'full', 'data' => $query->fetchAll()));
  4.        }
  5.        else
  6.        {
  7.         echo json_encode(array('res' => 'empty'));
  8.  
  9.                 if($row['stock_act'] > 0 ) {
  10.  
  11. echo 'Disponible';
  12.  
  13. } else {
  14.  
  15. echo 'No hay Disponible';
  16.  
  17. }
  18.  
  19.        }
  20.  
:huh:
Por esa parte del código presiento que no es tu código.

Si el contador es igual a cero o menor que cero (casos contrarios a count > 0) por qué deberías mostrar el stock en este caso?.
Además en ningún momento estás realizando la consulta a la tabla del stock_act

Primero necesitas sabes que es lo que estás haciendo, comprenderlo, corregir el código en las partes que te indiqué y verificar que funcione, si no no tiene caso continuar.

Después deberás crear una función muy parecida a findData la llamaré findStock por ejemplo, en dónde tu consulta deberá ser algo así.

Código
  1. $query = $this->dbh->prepare("SELECT stock FROM stock_act WHERE med_id LIKE :med_id");
  2.  

Todo lo demás es muy parecido.

Intenta y comenta si tienes más dudas.


Título: Re: ayuda autocompletar en php
Publicado por: General Dmitry Vergadoski en 26 Septiembre 2015, 00:32 am
Código
  1. if($query->rowCount() > 0)
  2.        {
  3.         echo json_encode(array('res' => 'full', 'data' => $query->fetchAll()));
  4.        }
  5.        else
  6.        {
  7.         echo json_encode(array('res' => 'empty'));
  8.  
  9.                 if($row['stock_act'] > 0 ) {
  10.  
  11. echo 'Disponible';
  12.  
  13. } else {
  14.  
  15. echo 'No hay Disponible';
  16.  
  17. }
  18.  
  19.        }
  20.  
:huh:
Por esa parte del código presiento que no es tu código.

Si el contador es igual a cero o menor que cero (casos contrarios a count > 0) por qué deberías mostrar el stock en este caso?.
Además en ningún momento estás realizando la consulta a la tabla del stock_act

Primero necesitas sabes que es lo que estás haciendo, comprenderlo, corregir el código en las partes que te indiqué y verificar que funcione, si no no tiene caso continuar.

Después deberás crear una función muy parecida a findData la llamaré findStock por ejemplo, en dónde tu consulta deberá ser algo así.

Código
  1. $query = $this->dbh->prepare("SELECT stock FROM stock_act WHERE med_id LIKE :med_id");
  2.  

Todo lo demás es muy parecido.

Intenta y comenta si tienes más dudas.
no me sirve ya coloque tu codigo y no hizo nada:

Código
  1. <?php
  2. class Autocompletar
  3. {
  4.  
  5. private $dbh;
  6.  
  7. public function __construct()
  8. {
  9. $this->dbh = new PDO("mysql:host=localhost;dbname=medicinas", "root", "123456");
  10. }
  11.  
  12. public function findData($search)
  13. {
  14. $query = $this->dbh->prepare("SELECT art_des FROM medi WHERE art_des LIKE :search");
  15.        $query->execute(array(':search' => '%'.$search.'%'));
  16.        $this->dbh = null;
  17.        if($query->rowCount() > 0)
  18.        {
  19.         echo json_encode(array('res' => 'full', 'data' => $query->fetchAll()));
  20.        }
  21.        else
  22.        {
  23.         echo json_encode(array('res' => 'empty'));
  24.  
  25.                 if($row['stock_act'] > 0 ) {
  26.  
  27. echo 'Disponible';
  28.  
  29. } else {
  30.  
  31. echo 'No hay Disponible';
  32.  
  33.  
  34.  
  35.        }
  36.  
  37.        }
  38. }
  39. }

el javascript que dice id no existe ninguna tabla llamada id ni nada solo existen las tablas que te dije


Título: Re: ayuda autocompletar en php
Publicado por: 0roch1 en 26 Septiembre 2015, 00:45 am
no me sirve ya coloque tu codigo y no hizo nada:

el javascript que dice id no existe ninguna tabla llamada id ni nada solo existen las tablas que te dije


exactamente asi como dices es que deberia ser, la tabla donde dice la cantidad de medicinas que hay disponibles se llama "stock_act" la tabla "art_des" es la que tiene el nombre de las medicinas.

Claro que no te va a servir solo coloqué un nombre de campo cualquiera (por eso te pedí que pusieras la estructura de tu tabla) debes de colocar los nombres de tus campos y tablas.

Creo que no haz comprendido nada de lo que expliqué.

Al final de corregir y seguir los pasos que te indiqué deberías tener algo así.

(http://imgur.com/I6GvPkr)

Saludos.


Título: Re: ayuda autocompletar en php
Publicado por: General Dmitry Vergadoski en 26 Septiembre 2015, 01:05 am

Claro que no te va a servir solo coloqué un nombre de campo cualquiera (por eso te pedí que pusieras la estructura de tu tabla) debes de colocar los nombres de tus campos y tablas.

Creo que no haz comprendido nada de lo que expliqué.

Al final de corregir y seguir los pasos que te indiqué deberías tener algo así.

(http://imgur.com/I6GvPkr)

Saludos.

no me sirve ya lo coloque como dices:

Código
  1.    <?php
  2.    class Autocompletar
  3.    {
  4.  
  5.     private $dbh;
  6.  
  7.     public function __construct()
  8.     {
  9.     $this->dbh = new PDO("mysql:host=localhost;dbname=medicinas", "root", "123456");
  10.     }
  11.  
  12.     public function findData($search)
  13.     {
  14.     $query = $this->dbh->prepare("SELECT art_des FROM medi WHERE art_des LIKE :search");
  15. $query = $this->dbh->prepare("SELECT stock_act FROM stock_act WHERE stock_act LIKE :stock_act");
  16.            $query->execute(array(':search' => '%'.$search.'%'));
  17.            $this->dbh = null;
  18.            if($query->rowCount() > 0)
  19.            {
  20.             echo json_encode(array('res' => 'full', 'data' => $query->fetchAll()));
  21.            }
  22.            else
  23.            {
  24.             echo json_encode(array('res' => 'empty'));
  25.  
  26.                     if($row['stock_act'] > 0 ) {
  27.  
  28.    echo 'Disponible';
  29.  
  30.    } else {
  31.  
  32.    echo 'No hay Disponible';
  33.  
  34.  
  35.  
  36.            }
  37.  
  38.            }
  39.     }
  40.    }