Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Error con Buscador simple php y mysql

Estas en el tema de Error con Buscador simple php y mysql en el foro de PHP en Foros del Web. Hola a todos!!! Estoy creando un buscador interno para una pagina web, es muy sencillo pero aùn asi no me funciona, acontinuaciòn explico lo que ...
  #1 (permalink)  
Antiguo 27/07/2015, 08:46
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Error con Buscador simple php y mysql

Hola a todos!!!

Estoy creando un buscador interno para una pagina web, es muy sencillo pero aùn asi no me funciona, acontinuaciòn explico lo que sucede y muchas gracias por la atenciòn prestada!!!

esta es la tabla de la cual estan los datos a buscar:


Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `gym`.`clientes` (
  2. `idcliente` INT NOT NULL AUTO_INCREMENT,
  3. `tipo` VARCHAR(50) NOT NULL,
  4. `numero` VARCHAR(50) NOT NULL,
  5. `nombre` VARCHAR(50) NOT NULL,
  6. `apellido` VARCHAR(50) NOT NULL,
  7. `telefono` VARCHAR(45) NULL,
  8. `celular` VARCHAR(45) NULL,
  9. `correo` VARCHAR(45) NULL,
  10. `nacimiento` DATE NOT NULL,
  11. `ocupacion` VARCHAR(45) NOT NULL,
  12. `convenio` VARCHAR(50) NULL,
  13. PRIMARY KEY (`idcliente`))


el formulario y el que recibe los datos de la busqueda:


Código PHP:
Ver original
  1. <form name='formulario' action='buscarclientes.php' method='get'>
  2. Buscar: <input type='text' size='50' name='busca' />
  3. <input type='submit' name='submit' value='buscar' />
  4. </form>
  5.  
  6. <?php
  7. $busca="";
  8. $busca = $_GET['buscar'];
  9. echo $busca;
  10. $conexion=mysql_connect("localhost","root","");
  11. $busque=mysql_select_db("bd_gym");
  12.  
  13. mysql_query($busque,$conexion) or die("Error en: $busqueda: " . mysql_error());
  14.  
  15. if($busca!=" "){
  16. $busqueda=mysql_query("SELECT * FROM clientes WHERE nombre LIKE '%".$busca."%' ");
  17. while($f=mysql_fetch_array($busqueda)){
  18. echo $f['numero']." ".$f['nombre'];
  19. }
  20. }
  21.  
  22.  
  23. ?>

El caso esque me aparece este error "Error en: : Query was empty", de antemano agradezco enormemente que me puedan colaborar con esto.

Última edición por Triby; 27/07/2015 a las 18:21 Razón: Código en highlight
  #2 (permalink)  
Antiguo 27/07/2015, 08:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 7 meses
Puntos: 2658
Respuesta: Error con Buscador simple php y mysql

Bueno, el error es medio obvio...
Código PHP:
Ver original
  1. <?php
  2. $busca="";
  3. $busca = $_GET['buscar'];
  4. echo $busca;
  5. $conexion=mysql_connect("localhost","root","");
  6. $busque=mysql_select_db("bd_gym");
  7.  
  8. mysql_query($busque,$conexion) or die("Error en: $busqueda: " . mysql_error());
  9.  
  10. if($busca!=" "){
  11. $busqueda=mysql_query("SELECT * FROM clientes WHERE nombre LIKE '%".$busca."%' ");
  12. while($f=mysql_fetch_array($busqueda)){
  13. echo $f['numero']." ".$f['nombre'];
  14. }
  15. }
  16.  
  17.  
  18. ?>

¿Qué se supone que busca aquí?:
Código PHP:
Ver original
  1. mysql_query($busque,$conexion) or die("Error en: $busqueda: " . mysql_error());
Obviamente nada, porque $busque no es una query, sino el result de un mysql_select_db()...
¿Para qué se supone que estás insertando esa línea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/07/2015, 11:30
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años
Puntos: 263
Respuesta: Error con Buscador simple php y mysql

mano utiliza mysqli y cambia esa consulta que esta de locos
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 27/07/2015, 17:28
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con Buscador simple php y mysql

Hola a todos!!!

bueno, muchas gracias por sus aportes, comprenderán que solo soy un novato, pero comprometido a seguir aprendiendo. modifique el codigo y quedo asi:


Código PHP:
Ver original
  1. <?php
  2. $busca="";
  3. $busca = $_GET['buscar'];
  4.  
  5. require('clases/clientes.class.php');
  6. $objCliente=new Cliente;
  7. $consulta=$objCliente->buscar();
  8.  
  9. if($busca!=""){
  10. if($consulta) {
  11.   while( $gr = mysql_fetch_array($consulta) ){
  12.   echo $gr['numero']." ".$gr['nombre'];
  13.   }
  14. }
  15. }
  16.  
  17. ?>


le puse el if($busca!=""){} por que de lo contrario me muestra todos los datos que tengo en la BD, pero ahora con esa condición ya no aparecen resultados; por otro lado hice una clase aparte con la petición query y quedo asi:


Código PHP:
Ver original
  1. function buscar(){
  2.         if($this->con->conectar()==true){
  3.             return mysql_query("SELECT * FROM clientes WHERE nombre LIKE '%".$busca."' ");
  4.         }
  5.     }


Disculpen lo rudimentario y poco ortodoxo que pueda ser este script, me estoy informando acerca de misqli, de antemano muchas gracias por sus aportes!!!

Última edición por Triby; 27/07/2015 a las 18:22 Razón: Código en highlight
  #5 (permalink)  
Antiguo 27/07/2015, 17:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años
Puntos: 263
Respuesta: Error con Buscador simple php y mysql

prueba asi mano:
Código PHP:
Ver original
  1. <?php
  2. $usuario = "USUARIO";
  3. $pass = "CLAVE";
  4. $host = "HOST";
  5. $base = "BASE";
  6.  
  7. $db = new MySQLi($host, $usuario, $pass, $base);
  8. if($db->connect_error) {
  9.     die('Error de conexion ('.$db->connect_errno.')'
  10.         .$db->connect_errno);
  11. }
  12.  
  13. if($_GET['buscar']==""){
  14. } else{
  15.  
  16. $busca = $_GET['buscar'];
  17.  
  18. $query = $db->query("SELECT * FROM clientes WHERE nombre = '$busca'");
  19. $total = mysqli_num_rows($query);
  20.  
  21. if($total >=1){
  22.    
  23.     while($f = $busca->fetch_array())
  24.         {
  25.             echo $f['numero']." - ".$f['nombre']."<br>";
  26.  
  27.         }
  28. } else {
  29.     echo "No hay registros";
  30. }
  31. }
  32. ?>
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 27/07/2015, 20:31
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con Buscador simple php y mysql

Hola a todos!!!

acabo de probar exactamente el script que publicaste {obvio cambiandole el pull de conexiones} y me sale este error:

Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 'localhost:3307' (11004) in C:\xampp\htdocs\universal\buscarclientes.php on line 86
Error de conexion (2005)2005

según he leido un poco, al parecer es que no tengo php actualizado, pero no se que tan cierto sea eso, de antemano gracias por la atención prestada!!!
  #7 (permalink)  
Antiguo 28/07/2015, 04:29
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años
Puntos: 263
Respuesta: Error con Buscador simple php y mysql

coloca esto y ejecuta el archivo para ver la respuesta y luego muestra el codigo completo para revisarlo:

saber si mysqli esta instalado:
Código PHP:
Ver original
  1. <?PHP
  2. if (function_exists('mysqli_connect')) {
  3. //mysqli está instalado
  4. echo "Si";
  5. } else {
  6.     echo "no";
  7. }
  8. ?>
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 28/07/2015, 18:33
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con Buscador simple php y mysql

Hola a todos!!!

pues coloque el script e imprime el "si", acontinuacion pongo el script tal cual como esta:


Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = "root";
  4. $pass = "";
  5. $host = "localhost:3307";
  6. $base = "gym";
  7.  
  8. $db = new MySQLi($host, $usuario, $pass, $base);
  9. if($db->connect_error) {
  10.     die('Error de conexion ('.$db->connect_errno.')'
  11.         .$db->connect_errno);
  12. }
  13.  
  14.  
  15. if($_GET['buscar']==""){
  16. } else{
  17.  
  18. $busca = $_GET['buscar'];
  19.  
  20. $query = $db->query("SELECT * FROM clientes WHERE nombre = '$busca'");
  21. $total = mysqli_num_rows($query);
  22.  
  23. if($total >=1){
  24.    
  25.     while($f = $busca->fetch_array())
  26.         {
  27.             echo $f['numero']." - ".$f['nombre']."<br>";
  28.  
  29.         }
  30. } else {
  31.     echo "No hay registros";
  32. }
  33. }
  34.  
  35. ?>

aclaro que lo del "localhost:3307" es en mi caso normal, desde la instalacion lo he venido manejando asi sin problema alguno, de antemano gracias por la ayuda prestada!!!

Última edición por Triby; 28/07/2015 a las 20:12 Razón: Código en highlight
  #9 (permalink)  
Antiguo 28/07/2015, 20:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 11 meses
Puntos: 2237
Respuesta: Error con Buscador simple php y mysql

Por favor usa el highlight (el selector de la derecha en la barra de herramientas) para encerrar tu código.

Creo que precisamente el puerto es tu problema, porque mysqli tiene un parámetro específico para esto:

Código PHP:
Ver original
  1. $usuario = "root";
  2. $pass = "";
  3. $host = "localhost";
  4. $base = "gym";
  5. $puerto = '3307';
  6.  
  7. $db = new MySQLi($host, $usuario, $pass, $base, $puerto);

Siempre es bueno consultar el manual para aclarar estas pequeñas dudas: http://php.net/manual/es/mysqli.construct.php
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 28/07/2015, 23:18
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con Buscador simple php y mysql

Hola a todos!!!

bueno, solucione el problema anterior gracias a sus aportes y comentarios, aún asi el bucador sigue sin funcionar, ya que al ingresar alguna palabra o numero, no arroja resultados, dejo el codigo que tengo hasta ahora [los cambios son minimos] y de antemano muchisimas gracias por la ayuda brindada:
__________________________________________________ _____________________
Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = "root";
  4. $pass = "";
  5. $host = "localhost";
  6. $base = "gym";
  7. $puerto = "3307";
  8.  
  9. $db = new MySQLi($host, $usuario, $pass, $base, $puerto);
  10. if($db->connect_error) {
  11.     die('Error de conexion ('.$db->connect_errno.')'
  12.         .$db->connect_errno);
  13. }
  14.  
  15.  
  16. if($_GET['buscar']==""){
  17. } else{
  18.  
  19. $busca = $_GET['buscar'];
  20.  
  21. $query = $db->query("SELECT * FROM clientes WHERE numero = '%".$busca."'");
  22. $total = mysqli_num_rows($query);
  23.  
  24. if($total >=1){
  25.    
  26.     while($f = $busca->fetch_array())
  27.         {
  28.             echo $f['numero']." - ".$f['nombre']."<br>";
  29.  
  30.         }
  31. } else {
  32.     echo "No hay registros";
  33. }
  34. }
  35.  
  36. ?>
__________________________________________________ ____________________
con "%" o sin ellos igual no funciona.
  #11 (permalink)  
Antiguo 29/07/2015, 01:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 11 meses
Puntos: 2237
Respuesta: Error con Buscador simple php y mysql

Tu consulta está mal realizada, debes usar LIKE en lugar de =

Código PHP:
Ver original
  1. $query = $db->query("SELECT * FROM clientes WHERE numero LIKE '%$busca'");
  2.  
  3. // Si la columna numero es numérica, tienes que "convertirla" en cadena:
  4. $query = $db->query("SELECT * FROM clientes WHERE CAST(numero as CHAR) LIKE '%$busca'");
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 29/07/2015, 16:39
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con Buscador simple php y mysql

Hola a todos!!!

cambie un poco el codigo y probandolo muchas veces me he topado con lo siguiente:
__________________________________________________ ____________________

Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = "root";
  4. $pass = "AAaa.,.,";
  5. $host = "localhost";
  6. $base = "gym";
  7. $puerto = "3307";
  8.  
  9. $db = new MySQLi($host, $usuario, $pass, $base, $puerto);
  10. if($db->connect_error) {
  11.     die('Error de conexion ('.$db->connect_errno.')'
  12.         .$db->connect_errno);
  13. }
  14. $v_busca=$_GET['buscar'];
  15.  
  16. if($v_busca==""){
  17.   echo "ingresa un nombre";
  18. }else{
  19.  
  20. $busca = $_GET['buscar'];
  21.  
  22. $query = $db->query("SELECT nombre FROM clientes  WHERE nombre LIKE '%".$v_busca."%' ");
  23. $total = mysqli_num_rows($query);
  24.  
  25. if($total >= 1){
  26.    
  27.     while($f = $v_busca->fetch_array())
  28.         {
  29.             echo $f['numero']." - ".$f['nombre']."<br>";
  30.  
  31.         }
  32. } else {
  33.     echo "Este nombre no Existe en la Base de datos";
  34. }
  35. }
  36.  
  37. ?>
__________________________________________________ ___________________

Cuando no ingreso ningún dato imprime correctamente el mensaje, tambien lo hace cuando ingreso un valor que no existe en la BD, pero a la hora de ingresar un dato que corresponde a la BD me aparece esto:

Fatal error: Call to a member function fetch_array() on a non-object in C:\xampp\htdocs\universal\buscarclientes.php on line 105


la linea 105 corresponde a:
Código PHP:
Ver original
  1. while($f = $v_busca->fetch_array()){

Ya intente cambiandole el feth_array() por mysli_fetch_array() sin resultado alguno, de antemano muchas gracias por sus aportes!!!
  #13 (permalink)  
Antiguo 29/07/2015, 18:23
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años
Puntos: 263
Respuesta: Error con Buscador simple php y mysql

aqui:
Código PHP:
Ver original
  1. while($f = $v_busca->fetch_array())

cambia por:
Código PHP:
Ver original
  1. while($f = $query->fetch_array())
__________________
[email protected]
HITCEL
  #14 (permalink)  
Antiguo 29/07/2015, 19:50
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Respuesta: Error con Buscador simple php y mysql

Hola a todos!!!

FUNCIONA DE PERLAS, a todos muchisimas gracias por sus amables aportes y hasta la próxima :D

Etiquetas: buscador, formulario, mysql, select, simple, sql, tabla
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 06:40.