Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Crear Buscador web y mysql

Estas en el tema de Crear Buscador web y mysql en el foro de PHP en Foros del Web. Aprovecho este nuevo tema para desearos ¡¡¡Feliz navidad a tod@s!!!! jeje espero que tengais unas buenas fiestas y lo paseis muy bien todos! Bien como ...
  #1 (permalink)  
Antiguo 26/12/2013, 09:51
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Crear Buscador web y mysql

Aprovecho este nuevo tema para desearos ¡¡¡Feliz navidad a tod@s!!!! jeje espero que tengais unas buenas fiestas y lo paseis muy bien todos!

Bien como algunos ya sabeis me encuentro en mi lucha por crear mi propia web!

Ahora me he puesto a crear un buscador

Para ello necesito que compare y encuentre las palabras introducidas en el espacio de Buscar, en una casilla determinada de una de mis tablas de mi Base de Datos e imprima el contenido entero de ese id de la base de datos donde se enuentra...

para ello e decidido hacer:

1º EL BUSCADOR

Código PHP:
<input name="busca" type="text" id="busca" size="15">&nbsp;&nbsp;<input type="submit" value="Buscar"
2º CÓDIGO DE BUSQUEDA

Código PHP:
<?php
  $busca
"";
  
$busca=$_POST['busca'];
  if (
$busca!= ""){
    
$busqueda=mysql_query ("SELECT * FROM 'xxxx' WHERE xxxxxx LIKE '%".$busca."%'" );
    while (
$datos=mysql_fetch_array($busqueda)){
        
        echo 
$busca;
    }
  }
  
?>

...Pues bien me temo que no encuentra o no muestra nada de nada es mas se queda igualito....¿?

Se que me faltaría exponer algo más pero nose como hacerlo....


gracias
  #2 (permalink)  
Antiguo 26/12/2013, 09:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Crear Buscador web y mysql

Obvio que hacen falta cosas.

Para que los campos de un formulario se puedan procesar con PHP necesitas un formulario, ¿dónde está el formulario?

Sería muy inteligente de tu parte mostrar el código real y completo, de otra forma casi nos estás pidiendo adivinar el problema con nada de información útil.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/12/2013, 10:02
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Crear Buscador web y mysql

cuando introduzco algo en el buscador me dice:


mysql_fetch_array() expects parameter 1 to be resource, boolean given in line:

while ($datos=mysql_fetch_array($busqueda)){
  #4 (permalink)  
Antiguo 26/12/2013, 10:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Crear Buscador web y mysql

Cita:
Iniciado por angel_xx_1990 Ver Mensaje
cuando introduzco algo en el buscador me dice:


mysql_fetch_array() expects parameter 1 to be resource, boolean given in line:

while ($datos=mysql_fetch_array($busqueda)){
Eso es porque la consulta está mal escrita, pero eso ya no es tema de PHP sino de SQL.

Suponiendo que tu código lo tienes tal cual:
Cita:
// MAL
SELECT * FROM 'xxxx' WHERE xxxxxx LIKE '%x%'

// BIEN
SELECT * FROM xxxx WHERE xxxxxx LIKE '%x%'
Los nombres de tablas y campos no llevan comillas porque sencillamente no son cadenas de texto.

Por favor estudia algo de SQL también.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/12/2013, 10:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Crear Buscador web y mysql

Primera regla: No confundas PHP con MySQL. Cada sintaxis se debe evaluar en su contexto de funcionamiento, y el SQL sólo se puede verificar en la base.
1. Los nombres de los objetos de base de datos pueden encerrarse entre acentos agudos (`), pero no entre apóstrofos ('). No son lo mismo.
2. Verifica siempre si la consulta devuelve datos o errores. No asumas que la query está bien escrita, o que existan datos en la base.
3. Antes de hacer la prueba con PHP, realiza la query a mano en phpMyadmin, por lo menos, para asegurarte que efectivamente debe devovler algo, o está correctamente escrita.
4. No generes la sentencia en la misma llamada. Cárgala en una variable para poder verificarla antes.

Código PHP:
 <?php
  $busca
"";
  
$busca=$_POST['busca'];
  if (
$busca!= ""){
    
$qry "SELECT * FROM xxxx WHERE xxxxxx LIKE '%".$busca."%'";
    
// Verifica lo que queda armado.
    
echo $qry;
    
$busqueda=mysql_query ($qry);
    if(
$busqueda)
       {echo 
"Error: ".mysql_error();}
    else
    {while (
$datos=mysql_fetch_array($busqueda)){
        
        echo 
$busca;
     }
    }
  }
  
?>
Por cierto, no te conviene usar la librería MYSQL, sino la MYSQLI o bien PDO, ya que esa es una obsoleta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/12/2013, 10:06
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Crear Buscador web y mysql

el formulario entero??

Código PHP:
Ver original
  1. <form method="post" enctype="multipart/form-data" name="seleccionform" id="seleccionform">
  2.     <div class="fluid divselectores">
  3.       <p style="text-align: left"><img  src="http://www.forosdelweb.com/xxx/lxxxxxxx.png"  alt="" id="xxxxxx"/>Categoría de búsqueda
  4.         <label for="selectapar">:&nbsp;&nbsp;</label>
  5.         <select name="selectapar" autofocus id="selectapar" onchange="this.form.submit()">
  6.             <option value="selecc"selected disabled>Seleccionar...</option>
  7.             <?php
  8.             foreach($opciones as $opcion) {
  9.                 echo "<option value=\"".$opcion."\"";
  10.                 if(!strcmp($selectapar, $opcion)) {
  11.                     echo " selected";
  12.                 }
  13.                 echo ">".$opcion."</option>";
  14.             }
  15.             ?>
  16.       </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="busca" type="text" id="busca" size="15">&nbsp;&nbsp;<input type="submit" value="Buscar">
  17.   <p style="text-align: right; font-size: 30px"><?php echo $selectapar;?></form>
  18.   <?php
  19.   $busca= "";
  20.   $busca=$_POST['busca'];
  21.   if ($busca!= ""){
  22.     $busqueda=mysql_query ("SELECT * FROM xxxxxx WHERE xxxxxxx LIKE '%".$busca."%'" );
  23.     while ($datos=mysql_fetch_array($busqueda)){
  24.        
  25.         echo $busca;
  26.     }
  27.   }
  28.   ?>
  #7 (permalink)  
Antiguo 26/12/2013, 10:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Crear Buscador web y mysql

Cita:
Iniciado por angel_xx_1990 Ver Mensaje
el formulario entero??
No, ya quedó claro que si se procesa el formulario como debe por el error al hacer la consulta.

Ahora te toca leer las demás respuestas, ahí tienes soluciones.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 26/12/2013, 10:11
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Crear Buscador web y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso es porque la consulta está mal escrita, pero eso ya no es tema de PHP sino de SQL.

Suponiendo que tu código lo tienes tal cual:


Los nombres de tablas y campos no llevan comillas porque sencillamente no son cadenas de texto.

Por favor estudia algo de SQL también.
Gracias por el consejo estoy intentando aprender poco a poco y sí que me habia liado con las comillas ahora al cambiarlo no me da ese error simplemente no me muestra nada se queda la pagina igual!
  #9 (permalink)  
Antiguo 26/12/2013, 10:18
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Exclamación Respuesta: Crear Buscador web y mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje

Código PHP:
 <?php
  $busca
"";
  
$busca=$_POST['busca'];
  if (
$busca!= ""){
    
$qry "SELECT * FROM xxxx WHERE xxxxxx LIKE '%".$busca."%'";
    
// Verifica lo que queda armado.
    
echo $qry;
    
$busqueda=mysql_query ($qry);
    if(
$busqueda)
       {echo 
"Error: ".mysql_error();}
    else
    {while (
$datos=mysql_fetch_array($busqueda)){
        
        echo 
$busca;
     }
    }
  }
  
?>

Tras modificar mi código y adaptarlo al que me recomiendas me da el siguiente error:

SELECT * FROM xxx WHERE xxxx LIKE '%comple%'Error:


  #10 (permalink)  
Antiguo 26/12/2013, 10:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Crear Buscador web y mysql

Creo que la comparación debía ser negativa al verificar si hay error (porque no lo hay):

Código PHP:
Ver original
  1. if (!$busqueda) // ...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 26/12/2013, 10:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Crear Buscador web y mysql



Trampa de Copy+Paste

Nunca copies un código sin analizar lo que se te pone...

La sentencia está sintácticamente correcta, pero si no verificas que lo que buscas exista realmente (devuelva datos), siempre te fallará.

Verifica a mano los datos (usa phpMyadmin para ejecutar la query). mysql_fetch_array() necesita que al menos haya devuelto un (1) registro, o disparará error.

Por cierto: No creo que tu tabla y su campo se llamen "xxxx"... ¿Tienes miedo de que te copien alguna idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/12/2013 a las 10:45
  #12 (permalink)  
Antiguo 26/12/2013, 10:48
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Crear Buscador web y mysql

parece que funciona pero veréis...

Os pongo en antecedentes de que es una pagina de anuncios...en la cual e realizado consultas a la base de datos y las consultas que se me devuelven pues tienen un estilo un formato, etc... todas las consultas se seleccionan a través de un select. ahora bien las consultas que se hagan a a través del Buscador quiero que por supuesto mantengan el mismo formato al imprimirlas que las que se realizan a través del select.

.(Aviso que estoy empezando con todo esto de la programación web jejej)


Por ejemplo en las consultas con el select tengo lo siguiente:

Código PHP:
Ver original
  1. if ($selectapar=="seleccion del usuario")
  2. {
  3.  
  4.     $rst_form=mysql_query("SELECT * FROM xxx WHERE xxxxx='seleccion del usuario'");
  5.     $num_rows=mysql_num_rows($rst_form);
  6.  
  7.     if ($num_rows==0)
  8.  
  9.     {
  10.    
  11.         echo "No hay artículos disponibles para mostrar";
  12.         exit();
  13.    
  14.         }

y luego en el formato (o en la forma de imprimirlas, la estética me refiero) tengo lo siguiente:

Código PHP:
Ver original
  1. while ($fila=mysql_fetch_array($rst_form))
  2.    {       
  3.    ?>
  4.   <tr>
  5.     <td rowspan="2" style="background-image: url(backanun.png); border-top-left-radius: 10px; text-align:center; vertical-align:middle;"><a href="<?php echo $fila[7];?>"rel="shadowbox[<?php echo $contador;?>]"><img src=<?php echo $fila[7];?> width="180"></a>.....etc..

En el buscador tengo lo siguiente:


Código PHP:
Ver original
  1. <?php
  2.   $busca= "";
  3.   $busca=$_POST['busca'];
  4.   if ($busca!= ""){
  5.       $qry = "SELECT * FROM form WHERE descripcion LIKE '%".$busca."%'";
  6.       echo $qry;
  7.      $busqueda=mysql_query ($qry);
  8.     if(!$busqueda)
  9.        {echo "Error: ".mysql_error();}
  10.     else
  11.     {while ($datos=mysql_fetch_array($busqueda)){
  12.        
  13.         echo $busca;
  14.      }
  15.     }
  16.   }
  17.   ?>


Si cambiara en el buscador while ($datos=mysql_fetch_array($busqueda)) por while ($fila=mysql_fetch_array($busqueda))

y donde comienza el estilo o la estetica

cambiara esto -> while ($fila=mysql_fetch_array($rst_form)) por esto -> while ($fila=mysql_fetch_array($rst_form or $busqueda))

¿Tendría que imprimirlo con el formato que yo deseo, es decir al igual que en las otras consultas?

A lomejor lo que acabo de pensar es una autentica burrada (es lo mas probable) perdon si lo és...jejej
  #13 (permalink)  
Antiguo 26/12/2013, 10:51
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Crear Buscador web y mysql

Ya os digo que no funciona...¿pero me comprendeis lo que quiero hacer? esque no se si es algo así lo que debo hacer o no tiene nada que ver....
  #14 (permalink)  
Antiguo 26/12/2013, 11:36
 
Fecha de Ingreso: diciembre-2013
Mensajes: 21
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Crear Buscador web y mysql

Hola, yo encontre un buscador en internet que busca en una base de datos y muestra los resultados de forma automática:


Index.php
Código PHP:
Ver original
  1. <head>
  2. <style>
  3. b{color:blue;}
  4. </style>
  5. <style>
  6.  
  7. #myDiv
  8. {
  9. margin-top: 10px;
  10. border-style:dashed;
  11. width: 954px;
  12. height: auto;
  13. text-align: left;
  14. color:#000;
  15. padding:10px 10px;
  16. border-radius:0 0 20px 20px;
  17. }
  18. #myDiv > a {
  19.     color:#000;
  20.    
  21.    
  22. }
  23. #prod-busq{
  24.     margin-top:0px;
  25.     width:100%;
  26.     height:460px;
  27.     display:inline-block;
  28.     }
  29.    
  30. #bus{
  31. background-image:url(input.png);
  32.  padding-left:40px;
  33.  padding-top:10px;
  34.  padding-bottom:10px;
  35.  border:solid 1px #33FF33;
  36. border-radius:5px;
  37.  width:700px;
  38.  height:30px;
  39.  font-size:26px;
  40.  }
  41.  #bus:focus{
  42. box-shadow:0 0 15px #00FF00;
  43. }
  44.  
  45. </style><script type="text/javascript" src="ajax.js"></script>
  46. </head>
  47. <body>
  48. <div style="min-height:700px;">
  49.  
  50. <h1><b style="color:#000; font-family:Allan, cursive; font-size:60px;">Busqueda personalizada:</b></h1>
  51.  
  52. <input type="text" id="bus" name="bus" onkeyup="loadXMLDoc()" required />
  53.  
  54. <div id="myDiv" style="min-height:700px;">
  55. </body>



proc.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. include 'conexion.php';
  4.  
  5. $q=$_POST['q'];
  6. $con=conexion();
  7.  
  8. $sql="select * from productos where clase LIKE '".$q."%' or titulo LIKE '".$q."%'";
  9.  
  10. $res=mysql_query($sql,$con);
  11.  
  12. if(mysql_num_rows($res)==100){
  13.  
  14. echo '<b>No hay sugerencias</b>';
  15.  
  16. }else{
  17.  
  18. echo '<h2 style=" text-decoration:underline;font-family:Allan;">Resultados de la búsqueda</h2><br />';
  19.  
  20. while($fila=mysql_fetch_array($res)){
  21.  
  22. echo'
  23.  
  24. <div id="prod-busq" style="display:inline-block;"> <h3>Nombre:'.$fila['titulo'].'</h3> <h3>Clase:'.$fila['clase'].'</h3>  <p> <b><i><u>Colores disponibles=</u></i></b>   '.$fila['color-1'].', '.$fila['color-2'].', '.$fila['color-3'].', '.$fila['color-4'].' ----- <b><i><u>Tamaño=</u></i></b>   '.$fila['tamano'].'</p> <a href="http://www.forosdelweb.com/f18/Productos/ver.php?Prod='.$fila['prod-id'].'" rel="facebox[.bolder]">Ver el producto</a> <br/><img src="http://www.forosdelweb.com/f18/productos/imagenes/'.$fila['prod-id'].'.jpg" width="130px" height="160px" style="display: inline-block; border: #000 5px double;"/> <hr width="75%"> <hr width="50%"> <hr width="25%">  <hr width="12%"><br /> <br /> <br />
  25.  
  26. ';
  27.  
  28.  
  29. }
  30.  
  31. }
  32.  
  33. ?>


ajax.js

Código Javascript:
Ver original
  1. function loadXMLDoc()
  2. {
  3. var xmlhttp;
  4.  
  5. var n=document.getElementById('bus').value;
  6.  
  7. if(n==''){
  8.  document.getElementById("myDiv").innerHTML="";
  9.  return;
  10. }
  11.  
  12. if (window.XMLHttpRequest)
  13.   {// code for IE7+, Firefox, Chrome, Opera, Safari
  14.   xmlhttp=new XMLHttpRequest();
  15.   }
  16. else
  17.   {// code for IE6, IE5
  18.   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  19.   }
  20. xmlhttp.onreadystatechange=function()
  21.   {
  22.   if (xmlhttp.readyState==4 && xmlhttp.status==200)
  23.     {
  24.     document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  25.     }else{ document.getElementById("myDiv").innerHTML='<img src="load.gif" width="50" height="50" />'; }
  26.   }
  27. xmlhttp.open("POST","proc.php",true);
  28. xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  29. xmlhttp.send("q="+n);
  30. }



conexion.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. function conexion(){
  4.  
  5. $con = mysql_connect("localhost","root","");
  6.  
  7. if (!$con){
  8.  
  9. die('Could not connect: ' . mysql_error());
  10. }
  11.  
  12. mysql_select_db("productos", $con);
  13.  
  14. return($con);
  15.  
  16. }
  17.  
  18. ?>

Etiquetas: buscador, mysql, select, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:26.