Foros del Web » Programando para Internet » PHP »

Buscador con formulario

Estas en el tema de Buscador con formulario en el foro de PHP en Foros del Web. Saludos a todos, Estoy intentando hacer un buscador con diferentes columnas de una tabla. Lo idela seria que pudiera rellenar los campos que quisiera y ...
  #1 (permalink)  
Antiguo 03/11/2015, 05:00
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 8 años, 7 meses
Puntos: 0
Pregunta Buscador con formulario

Saludos a todos,

Estoy intentando hacer un buscador con diferentes columnas de una tabla.

Lo idela seria que pudiera rellenar los campos que quisiera y que me salieran las coincidencias con estos.

Para hacer-lo he partido de un buscador simple, que te da coincidencias sólo de una columna.

Ya llevo bastantes horas probando diferentes combinacions y no consigo que me funcione, lo raro es que no me sale error, bueno no me sale nada a parte del header...

Culquier tipo de ayuda, se agradecerá mucho.
Gracias por su tiempo!!


CODIGO: Buscar1.php (formulario)

Código HTML:
Ver original
  1.     <head>
  2.         <title>GRUPO PREMO</title>
  3.         <META http-equiv="Content-Type" CONTENT="text/html; charset=utf-8">
  4.     </head>
  5.  
  6.  
  7.     <body bgcolor="#F75353">
  8.     <center>
  9.  
  10. <form name="buscar" action="BuscarFrm.php" method="get">
  11. <table align="center" bgcolor="#A9E2F3">
  12.                     <tr>
  13.                      
  14.            
  15.  
  16.  
  17.                         <td>IdRFQ</td>
  18.                         <td colspan="3"> <input type="text" name="IdRFQ" size="50"  /></td>
  19.            
  20.                         <td>Data</td>
  21.                         <td colspan="3"> <input type="text" name="Data" size="50"  /></td>
  22.  
  23.                          <td>Supplier</td>
  24.                         <td colspan="3"> <input type="text" name="Suppliers" size="50" /></td>
  25.  
  26.  <tr>
  27.             <tr>
  28.              <tr>
  29.             <tr>
  30.             <tr>
  31.             <tr>
  32.              <tr>
  33.             <tr>
  34.             <tr>
  35.             <tr>
  36.             <tr>
  37.             <tr>
  38.             <tr>
  39.             <tr>
  40.             <tr>
  41.             <tr>
  42.                         <td>Project Part Nombre</td>
  43.                         <td colspan="3"> <input type="text" name="Project Part Nombre" size="50" /></td>
  44.  
  45.                         <td>RM Part Number</td>
  46.                         <td colspan="3"> <input type="text" name="RM Part Number" size="50" /></td>
  47.  
  48.                         <td>Price</td>
  49.                         <td colspan="3"> <input type="text" name="Price" size="50" /></td>
  50.                      
  51.  <tr>
  52.             <tr>
  53.              <tr>
  54.             <tr>
  55.             <tr>
  56.             <tr>
  57.              <tr>
  58.             <tr>
  59.             <tr>
  60.             <tr>
  61.             <tr>
  62.             <tr>
  63.             <tr>
  64.             <tr>
  65.             <tr>
  66.             <tr>  
  67.                         <td>Cry2</td>
  68.                         <td colspan="3"> <input type="text" name="Cry2" size="50" /></td>    
  69.  
  70.                         <td>MOQ</td>
  71.                         <td colspan="3"> <input type="text" name="MOQ" size="50" /></td>  
  72.  
  73.                         <td>Volume</td>
  74.                         <td colspan="3"> <input type="text" name="Volume" size="50" /></td>              
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.                     </tr>
  82.                     <tr>
  83.                         <td colspan="4">
  84.                             <right><input type="submit" name="buscar"value="Serch"/>    
  85.                         </td>
  86.                     </tr>
  87.                 </table>
  88. </form>
  89. </center>
  90. </body>
  91. </html>



CODIGO: BuscarFrm.php (acción)

Código PHP:
Ver original
  1. <?php
  2.          
  3.         include '../header.php';
  4.     ?>
  5.  
  6.     <td>
  7. <?php
  8. // conectar al servidor
  9. $server_link = mysql_connect("localhost", "root", "");
  10. if(!$server_link){
  11.     die("Fall&oacute; la Conexi&oacute;n ". mysql_error());
  12. }
  13. // seleccionamos la base de datos
  14. $db_selected = mysql_select_db("bd_ofertas_para_productos", $server_link);
  15. if(!$db_selected){
  16.     die("No se pudo seleccionar la Base de Datos ". mysql_error());
  17. }
  18. // varificamos que el formulario halla sido enviado
  19. if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
  20.    
  21.     // hacemos la consulta de busqueda
  22.     $sqlBuscar = mysql_query("SELECT idrfq, data, suppliers, Project Part Nombre, RM Part Number, Price, Cry2, MOQ, Volume  
  23.                              MATCH (idrfq, data, suppliers, Project Part Nombre, RM Part Number, Price, Cry2, MOQ, Volume)
  24.                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
  25.                              FROM rfq
  26.                              WHERE MATCH (idrfq, data, suppliers, Project Part Nombre, RM Part Number, Price, Cry2, MOQ, Volume)
  27.                              AGAINST ('$frase' IN BOOLEAN MODE)
  28.                              ORDER BY coincidencias DESC", $server_link)
  29.                               or die(mysql_error());
  30.  
  31.                                 while ($frase = mysql_fetch_assoc($sqlBuscar)) {
  32.                             echo("\n                                <tr>
  33.  
  34.                                    <td>".$frase['IdRFQ']."</td>
  35.  
  36.                                    <td>".$frase['Data']."</td>
  37.                                      
  38.                                    <td>".$frase['Suppliers']."</td>
  39.  
  40.                                    <td>".$frase['Project Part Nombre']."</td>
  41.  
  42.                                    <td>".$frase['RM Part Number']."</td>
  43.  
  44.                                    <td>".$frase['Price']."</td>
  45.  
  46.                                    <td>".$frase['Cry2']."</td>
  47.  
  48.                                    <td>".$frase['MOQ']."</td>
  49.  
  50.                                    <td>".$frase['Volume']."</td>
  51.  
  52.                                                                                        
  53.  
  54.                                    
  55.                                </tr>") ;
  56.                         }                              
  57.     $totalRows = mysql_num_rows($sqlBuscar);
  58.     // Enviamos un mensaje
  59.     // indicando la cantidad de resultados ($totalRows)
  60.     // para la frase busada ($frase)
  61.     if(!empty($totalRows)){
  62.         echo stripslashes("<p>Su busqueda arrojo; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>");        
  63.         // mostramos los resultados
  64.         while($row = mysql_fetch_array($sqlBuscar)){
  65.             echo "<strong><a href='#'>$row[suppliers]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
  66.             echo "<p>".substr(strip_tags($row['suppliers']), 0, 255)."...</p>";
  67.         }
  68.     }
  69.     // si se ha enviado vacio el formulario
  70.     // mostramos un mensaje del tipo Oops...!
  71.     elseif(empty($_GET['frase'])){
  72.         echo "Debe introducir una palabra o frase.";
  73.     }
  74.     // si no hay resultados
  75.     // otro mensaje del tipo Oops...!
  76.     elseif($totalRows == 0){
  77.         echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
  78.     }
  79. }
  80. ?>
  #2 (permalink)  
Antiguo 03/11/2015, 06:07
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Buscador con formulario

Disculpad,

Me equivoqué en el segundo script, seria este:

Código PHP:
Ver original
  1. <?php
  2.          
  3.         include '../header.php';
  4.     ?>
  5.  
  6.     <td>
  7. <?php
  8. // conectar al servidor
  9. $server_link = mysql_connect("localhost", "root", "");
  10. if(!$server_link){
  11.     die("Fall&oacute; la Conexi&oacute;n ". mysql_error());
  12. }
  13. // seleccionamos la base de datos
  14. $db_selected = mysql_select_db("bd_ofertas_para_productos", $server_link);
  15. if(!$db_selected){
  16.     die("No se pudo seleccionar la Base de Datos ". mysql_error());
  17. }
  18. // varificamos que el formulario halla sido enviado
  19. if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
  20.             $IdRFQ = $_GET['IdRFQ'];
  21.             $Data = $_GET['data'];          
  22.             $Suppliers = $_GET['suppliers'];  
  23.             $Price = $_GET['price'];    
  24.             $Cry2 = $_GET['cry2'];
  25.             $MOQ = $_GET['moq'];
  26.             $Volume = $_GET['volume'];        
  27.             $Investment = $_GET['investment'];
  28.             $Cry = $_GET['cry'];        
  29.             $Timing = $_GET['timing'];
  30.              
  31.             $Incoterms = $_GET['incoterms'];
  32.             $Comments = $_GET['comments'];
  33.  
  34.     // hacemos la consulta de busqueda
  35.     $sqlBuscar = mysql_query("SELECT idrfq, data, suppliers, Project Part Nombre, RM Part Number, Price, Cry2, MOQ, Volume  
  36.                              MATCH (idrfq, data, suppliers, Project Part Nombre, RM Part Number, Price, Cry2, MOQ, Volume)
  37.                              AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
  38.                              FROM rfq
  39.                              WHERE MATCH (idrfq, data, suppliers, Project Part Nombre, RM Part Number, Price, Cry2, MOQ, Volume)
  40.                              AGAINST ('$frase' IN BOOLEAN MODE)
  41.                              ORDER BY coincidencias DESC", $server_link)
  42.                               or die(mysql_error());
  43.  
  44.                                                        
  45.     $totalRows = mysql_num_rows($sqlBuscar);
  46.     // Enviamos un mensaje
  47.     // indicando la cantidad de resultados ($totalRows)
  48.     // para la frase busada ($frase)
  49.     if(!empty($totalRows)){
  50.         echo stripslashes("<p>Su busqueda arrojo; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>");        
  51.         // mostramos los resultados
  52.         while($row = mysql_fetch_array($sqlBuscar)){
  53.             echo "<strong><a href='#'>$row[suppliers]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
  54.             echo "<p>".substr(strip_tags($row['suppliers']), 0, 255)."...</p>";
  55.         }
  56.     }
  57.     // si se ha enviado vacio el formulario
  58.     // mostramos un mensaje del tipo Oops...!
  59.     elseif(empty($_GET['frase'])){
  60.         echo "Debe introducir una palabra o frase.";
  61.     }
  62.     // si no hay resultados
  63.     // otro mensaje del tipo Oops...!
  64.     elseif($totalRows == 0){
  65.         echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
  66.     }
  67. }
  68. ?>
  #3 (permalink)  
Antiguo 05/11/2015, 03:03
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Buscador con formulario

Por favor echar-le un vistazo aunque se rápido, estoy atascado en este tema, ya no sé que más cambiar ni probar.

Muchas gracias de antemano!!
  #4 (permalink)  
Antiguo 05/11/2015, 04:31
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Buscador con formulario

1: Pasalo todo a MYSQLI
2: Mira si cada una de las variables tiene algo cogido o no, si no tiene ponle un valor por defecto.
3: Haz la query con un WHERE sobre todas las variables, si no han puesto nada en una, cogerá la que hay por defecto.

De esta manera controlas todos los errores y solo necesitas una query.

Saludos
  #5 (permalink)  
Antiguo 05/11/2015, 05:02
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Buscador con formulario

Gracias por la aportación,

Pero no entiendo porqué debo pasar-lo a MySQLI, si no tengo el php 5.

Y a la query que tengo echa ya tiene un WHERE MATCH.

Saludos y gracias!
  #6 (permalink)  
Antiguo 05/11/2015, 05:44
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Buscador con formulario

Pues usa el PHP5+, mas que nada porque es como si ahora yo me pongo a estudiar la primera versión que salió de un lenguaje, de que me sirve para la vida real? Hay que adaptarse, eso además, facilita las cosas.

Yo no veo que en el match estés utilizando las variables "$", no sé si sin poner el $ el match te las está cogiendo pero de todas maneras no tienes nada puesto por si alguna de las variables falla, tener algo por defecto, ese es el quid de la cuestión.
  #7 (permalink)  
Antiguo 05/11/2015, 06:04
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Buscador con formulario

Buenas,

Tienes toda la razón con lo del PHP5+, pero la cosa es que no he empezado des de cero a estudiar lenguaje php. Es decir hace unos años hice algunas clases de php en la universidad, pero muy basico y ahora estoy de prácticas en una empresa y se me ocurrió la idea que con el apache podria solucionar-les un problema y aqui estoy recordando cosas, y me ha ido saliendo bien hasta ahora, que estoy atascado en el busador y en como descargar un archivo.

Es por eso que no lo he hecho con php5, porqué no tenia tiempo de empezar de cero, ya que no voy sobrado de tiempo...


Siguiendo con el tema, he puesto "$" delante de cada variable después del match y sigui sin funcionar, eso quiere decir que alguna variable falla no? Por lo que has dicho y como pongo que me salga algo por defecto si falla la variable?


Muchas gracias hechicerd0!
  #8 (permalink)  
Antiguo 05/11/2015, 06:11
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Buscador con formulario

Yo lo que haría ya que no entiendo tu forma de hacer lo es la siguiente:

where a = $a and b = $b and c= $c and d = $d etc..

es decir, borra todo el match y solo deja una query simple con el where y las variables.

Estas variables si no tienen valor ponles uno por defect:

Código PHP:
Ver original
  1. if(empty($_GET['a']))
  2. {
  3. $a = "aaaa";
  4. }
  #9 (permalink)  
Antiguo 06/11/2015, 06:56
 
Fecha de Ingreso: octubre-2015
Ubicación: Barcelona
Mensajes: 66
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Buscador con formulario

Muchas gracias hechicerd0,

Pero no conseguí que me funcionara con tu propuesta.

Cambié el Buscar por Serch: <right><input type="submit" name="buscar"value="Serch"/>, y ahora como mínimo me salen errores, que antes no habia nada.

Errores:

Notice: Undefined index: IdRFQ in C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\premo\BuscarFrm.php on line 21

Notice: Undefined index: Data in C:\Archivos de programa\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\premo\BuscarFrm.php on line 22

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH (data, suppliers) AGAINST ('','â€



A ver si alguien sabe el por qué me salen.

Muchas gracias. Saludos!

Última edición por ommmm; 06/11/2015 a las 06:57 Razón: Errores
  #10 (permalink)  
Antiguo 06/11/2015, 08:15
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Buscador con formulario

Notice: Undefined index: IdRFQ <-- Esto significa que no has echo:

Código PHP:
Ver original
  1. if(empty($_GET['a']))
  2. {
  3. $a = "aaaa";
  4. }

Y como no lo cambias por mysqli pues no se como arreglarte el error de MATCH. Ya te he dicho como se ha de hacerlo, a partir de ahí ya no se como mas ayudarte, lo siento.

Etiquetas: buscador, formulario, html, 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




La zona horaria es GMT -6. Ahora son las 07:36.