Foros del Web » Programando para Internet » PHP »

Ampliar Buscador

Estas en el tema de Ampliar Buscador en el foro de PHP en Foros del Web. Hola a todos tengo un buscador sencillo asi: Código HTML: <form id= "form1" name= "form1" method= "get" action= "buscar.php" > <td valign= "middle" > <font ...
  #1 (permalink)  
Antiguo 16/07/2012, 19:29
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Ampliar Buscador

Hola a todos tengo un buscador sencillo asi:
Código HTML:
<form id="form1" name="form1" method="get" action="buscar.php">
 <td valign="middle"> <font size="2">Nombre:  </font></td>
    <input type="text" name="nombre" id="nombre" />
    </label>
  <label>
    <input type="submit" name="buscar2" id="buscar2" value="Buscar" />
    </label>
</form> 
Código PHP:
$colname_alumnos "1";
if (isset(
$_GET['nombre'])) {
  
$colname_alumnos $_GET['nombre'];
}




$query_alumnos sprintf("SELECT
*
FROM alumnos

where Nombre like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"), 
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos); 
Funciona perfecto



Ahora estoy tratando de implementar lo siguiente
Código HTML:
<form id="form1" name="form1" method="get" action="buscar.php">
 <td valign="middle"> <font size="2">Buscar por:  </font><select name="buscarpor"  style="width:135px">
        <option value="Matricula">Matricula</option>
        <option value="Nombre">Nombre</option>
        <option value="ApellidoPaterno">Apellido Paterno</option>
       
         
</select></td>
    <input type="text" name="nombre" id="nombre" />
    </label>
  <label>
    <input type="submit" name="buscar2" id="buscar2" value="Buscar" />
    </label>
</form> 

Pero no tengo idea de como expresar en mi consulta la variabe que se eligio en el select


Gracias otra vez :)

Última edición por Briss; 18/07/2012 a las 12:42
  #2 (permalink)  
Antiguo 18/07/2012, 12:43
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

es posible pasar el valor del select en una variable????
  #3 (permalink)  
Antiguo 18/07/2012, 13:12
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Ampliar Buscador

Lo que quieres hacer es un select combinado? que según el valor de un select te carge otros valores en otro? Explicate un poco mejor plis
  #4 (permalink)  
Antiguo 18/07/2012, 14:19
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Cita:
Iniciado por cronosmen Ver Mensaje
Lo que quieres hacer es un select combinado? que según el valor de un select te carge otros valores en otro? Explicate un poco mejor plis
Hola gracias por responder... veras tengo un buscador sencillo donde ingreso un nombre y me arroja el o los resultados que conincidan, todo bien hasta ahi...
pero necesito que se buscador atraves de un select pida buscar por
matricula, nombre, o apellido paterno...

lo que no sé es como en la consulta tomar el valor del secle en una variable...

por ejemplo
si se elige matricula

select * from alumnos where matricula=


si se elige nombre

select * from alumnos where nombre=


si se elige apellido paterno

select * from alumnos where apellidopaterno=


creo que debe existir alguna formula para englobar a estos en una solo opcion (a eso me refiero cachar el seclet en una variable creo...


  #5 (permalink)  
Antiguo 18/07/2012, 14:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 8 meses
Puntos: 2135
Respuesta: Ampliar Buscador

Lee lo siguiente: http://www.php.net/variables.external

Saludos.
  #6 (permalink)  
Antiguo 18/07/2012, 14:27
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Cita:
Iniciado por GatorV Ver Mensaje
Lee lo siguiente: http://www.php.net/variables.external

Saludos.
Gracias se que es con Post o Get...
mi duda es solo expresaria asi la consulta

select * from alumnos where $select (suponiendo es la variable)=a mi input
??????????????????????????????????
  #7 (permalink)  
Antiguo 18/07/2012, 14:33
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Seria algo asi
Código HTML:
<form action="consulta.php" method="post">
Tipo de Búsqueda:<br>
<select name="tipobusqueda">
<option value="a">Búsqueda A 
<option value="b">Búsqueda B 
<option value="c">Búsqueda C 
<option value="d">Búsqueda D 
</select>
<br>
¿Qué deseas buscar?:<br>
<input name="busqueda" type=text>
<br>
<input type=submit value="Buscar">
</form> 
Código PHP:
$consulta "select * from tabla where ".$tipobusqueda." like '%".$busqueda."%' ";
$resultado mysql_query($consulta); 
supongo
  #8 (permalink)  
Antiguo 18/07/2012, 14:36
Avatar de xpapachox  
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: Ampliar Buscador

Podrias hacer algo asi..
$nombre=$_POST['nombre'];

$query = "SELECT*FROM alumnos where";

//Debes fijarte bien en los espacios.

if($_GET['buscarpor']=='Matricula'){
$query .= " matricula ";
}else if($_GET['buscarpor']=='Nombre'){
$query .= " nombre ";
}else{
$query .=" apellido_paterno ";
}

$query . = " like %'$nombre'% ";


$alumnos = mysql_query(query , $connection)

.
.
.
Todo lo demas.
  #9 (permalink)  
Antiguo 18/07/2012, 16:48
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

la deje asi

Código PHP:
$colname_alumnos "1";
if (isset(
$_GET['nombre'])) {
  
$colname_alumnos $_GET['nombre'];
}

if(
$_GET['buscarpor']=='Matricula'){
$query .= sprintf("SELECT
*
FROM alumnos

where rfcalumno like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"));
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);
}else if(
$_GET['buscarpor']=='Nombre'){
$query .= sprintf("SELECT
*
FROM alumnos

where Nombre like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"));
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);
}else{
$query .= sprintf("SELECT
*
FROM alumnos

where ApellidoPaterno like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"));
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);


Pero me arroja
Query was empty
  #10 (permalink)  
Antiguo 18/07/2012, 16:56
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 8 años, 9 meses
Puntos: 76
Respuesta: Ampliar Buscador

hola

lo podrias hacer asi:

Código HTML:
Ver original
  1. form action="consulta.php" method="post">
  2. Tipo de Búsqueda:<br>
  3. <select name="tipobusqueda">
  4. <option value="nom">Nombre
  5. <option value="mat">Matricula
  6. <option value="ape">Apellido
  7. <option value="cc">Cedula
  8. <br>
  9. ¿Qué deseas buscar?:<br>
  10. <input name="busqueda" type=text>
  11. <br>
  12. <input type=submit value="Buscar">
  13. </form>

consulta.php
Código PHP:
Ver original
  1. extract($_POST);
  2.  
  3. switch($tipobusqueda)
  4. {
  5.    case 'nom' :
  6.             $sentencia = "nombre";
  7.             break;
  8.    case 'mat' :
  9.             $sentencia = "matricula";
  10.              break;
  11.                      
  12. }
  13. //.....
  14. $query = sprintf("SELECT * FROM alumnos WHERE '%s' = '%s' ",$sentencia,$busqueda);

espero y te sea de ayuda.

Última edición por informacionsys; 18/07/2012 a las 17:03
  #11 (permalink)  
Antiguo 18/07/2012, 17:12
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Código PHP:
$colname_alumnos "1";
if (isset(
$_GET['nombre'])) {
  
$colname_alumnos $_GET['nombre'];
}
extract($_GET);
switch(
$buscarpor)
{
   case 
'Nombre' 
            
$sentencia "Nombre";
            break;
   case 
'rfcalumno' 
            
$sentencia "rfcalumno";
             break;
                      
}
mysql_select_db($database_connection$connection);
$query_alumnos =  sprintf("SELECT * from alumnos where '%s' = '%s'
 "
,$sentencia,$nombre);
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos); 
LO hice asi

pero en mi ruta me queda asi

http://localhost/.../alumnos/buscar....buscar2=Buscar entonces no me arroja nada
  #12 (permalink)  
Antiguo 18/07/2012, 17:13
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Tambien probe asi

Código PHP:
if($_GET['buscarpor']=='Matricula'){
$query .= sprintf("SELECT
*
FROM alumnos

where matricula like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"));
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);
}else if(
$_GET['buscarpor']=='Nombre'){
$query .= sprintf("SELECT
*
FROM alumnos

where Nombre like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"));
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);
}else{
$query .= sprintf("SELECT
*
FROM alumnos

where ApellidoPaterno like %s
     
 "
GetSQLValueString("%" $colname_alumnos "%""text"));
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);

Pero lo mismo la liga se muestra con muchas cosas
  #13 (permalink)  
Antiguo 18/07/2012, 17:24
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 8 años, 9 meses
Puntos: 76
Respuesta: Ampliar Buscador

Código PHP:
Ver original
  1. $colname_alumnos = "1";
  2.  
  3. if (isset($_GET['nombre']))
  4. {
  5.   $colname_alumnos = $_GET['nombre'];
  6. }
  7.  
  8. extract($_GET);
  9.  
  10. switch($buscarpor)
  11. {
  12.    case 'Nombre' :  
  13.             $sentencia = "Nombre";
  14.             break;
  15.    case 'rfcalumno' :  
  16.             $sentencia = "rfcalumno";
  17.              break;
  18.                        
  19. }
  20.  
  21.  
  22. mysql_select_db($database_connection, $connection);
  23.  
  24. echo $query_alumnos =  sprintf("SELECT * from alumnos where '%s' = '%s' ",$sentencia,$nombre);
  25. $alumnos = mysql_query($query_alumnos, $connection) or die(mysql_error());
  26. $row_alumnos = mysql_fetch_assoc($alumnos);
  27. $totalRows_alumnos = mysql_num_rows($alumnos);

Prueba esto asi , pero ten encuenta, como se llama el campo de texto nombre o busqueda ??? , es como en el ejemplo que diste decia busqueda, lo cambiaste ???
  #14 (permalink)  
Antiguo 18/07/2012, 17:43
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Cita:
Iniciado por informacionsys Ver Mensaje
Código PHP:
Ver original
  1. $colname_alumnos = "1";
  2.  
  3. if (isset($_GET['nombre']))
  4. {
  5.   $colname_alumnos = $_GET['nombre'];
  6. }
  7.  
  8. extract($_GET);
  9.  
  10. switch($buscarpor)
  11. {
  12.    case 'Nombre' :  
  13.             $sentencia = "Nombre";
  14.             break;
  15.    case 'rfcalumno' :  
  16.             $sentencia = "rfcalumno";
  17.              break;
  18.                        
  19. }
  20.  
  21.  
  22. mysql_select_db($database_connection, $connection);
  23.  
  24. echo $query_alumnos =  sprintf("SELECT * from alumnos where '%s' = '%s' ",$sentencia,$nombre);
  25. $alumnos = mysql_query($query_alumnos, $connection) or die(mysql_error());
  26. $row_alumnos = mysql_fetch_assoc($alumnos);
  27. $totalRows_alumnos = mysql_num_rows($alumnos);

Prueba esto asi , pero ten encuenta, como se llama el campo de texto nombre o busqueda ??? , es como en el ejemplo que diste decia busqueda, lo cambiaste ???

si mi input es nombre
ejecutando esto me da

SELECT * from alumnos where '' = 'irma'

no pasa el tipo de busqueda
  #15 (permalink)  
Antiguo 18/07/2012, 17:59
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 8 años, 9 meses
Puntos: 76
Respuesta: Ampliar Buscador

hola

ok, y como se llama el select , se llama $buscarpor ?? porque el switch esta evaluando esa variable
  #16 (permalink)  
Antiguo 18/07/2012, 18:12
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Cita:
Iniciado por informacionsys Ver Mensaje
hola

ok, y como se llama el select , se llama $buscarpor ?? porque el switch esta evaluando esa variable
si se llama asi
  #17 (permalink)  
Antiguo 18/07/2012, 18:16
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Código PHP:
$colname_alumnos "1";

 
if (isset(
$_GET['nombre'])) 

  
$colname_alumnos $_GET['nombre']; 

 
extract($_GET); 
 
switch(
$buscarpor

   case 
'Nombre' :  
            
$sentencia "Nombre"
            break; 
   case 
'rfcalumno' :  
            
$sentencia "rfcalumno"
             break; 
                       

 
 

 
mysql_select_db($database_connection$connection);
echo 
$query_alumnos sprintf("SELECT * from alumnos where '%s' = '%s' ",$sentencia,$nombre);
$alumnos mysql_query($query_alumnos$connection) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos); 
quedo asi y ya respeta el select pero no me muestra ningun resultado
  #18 (permalink)  
Antiguo 18/07/2012, 18:18
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

falta el like?===?????
  #19 (permalink)  
Antiguo 18/07/2012, 18:35
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

sprintf("SELECT * from alumnos where '%s' = '%s' ",$sentencia,$nombre);

Asi no me arroja nada
en cambio asi
$query_alumnos = sprintf("SELECT

FROM alumnos
where Nombre like %s", GetSQLValueString("%" . $colname_alumnos . "%", "text"));

Muestra por busqueda de nombre


  #20 (permalink)  
Antiguo 18/07/2012, 19:42
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

Checando creo que di porque no arroja ningun resultado

Código PHP:
$query_alumnos sprintf("SELECT * from alumnos where  %s = '%s'" ,$sentencia,$nombre); 

Muestra algo asi
SELECT * from alumnos where 'Nombre' = 'Irma'

el campo Nombre esta entre comillas simples... si edito la consulta y las quito
me muestra el resultado (al actualizar la pagina )

Pero si me salgo y despues regreso a Buscar me mando el sig error

SELECT * from alumnos where = ''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 '= ''' at line 1

Al final creo que las comillas simples si son necesarias...
Pero como hago para que no afecten al campo que elijo es decir
si elijo Nombre o AP o rfc
salgan sin comillas simples
  #21 (permalink)  
Antiguo 23/07/2012, 18:42
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.278
Antigüedad: 8 años, 7 meses
Puntos: 10
Respuesta: Ampliar Buscador

No logro que funcione alguien me puede ayudar por fa

Etiquetas: mysql, sql, buscadores
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 10:42.