Foros del Web » Programando para Internet » PHP »

Buscar en la base de datos

Estas en el tema de Buscar en la base de datos en el foro de PHP en Foros del Web. Hola a todos, tengo un problema: quiero buscar en la base de datos a traves de un campo de texto, me explico: tengo un campo ...
  #1 (permalink)  
Antiguo 18/01/2008, 09:38
 
Fecha de Ingreso: abril-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Buscar en la base de datos

Hola a todos, tengo un problema:

quiero buscar en la base de datos a traves de un campo de texto, me explico: tengo un campo de texto y dos radiobuttons (codigo, nombre) si activo el radio button CODIGO en el campo de texto tengo que poner el codigo del cliente y si activo el radiobutton NOMBRE tengo que poner cualquier parte del nombre del cliente (nombre, apellido1, apellido2, etc) pero no se como realizar la busqueda SQL (select from etc) segun que radiobutton este activado, osea que si esta activado CODIGO busque por codigo y asi... alguien me puede ayudar?

Otra duda: como hago la consulta para que en la busqueda por nombre asi no ponga el nombre completo aparezca como resultado, por ejemplo si busco 'mar' me arroje como respuesta 'maria', 'marcelo', 'mario'... etc

AYUDENMEE!!!!

Última edición por yairo_gioel; 18/01/2008 a las 09:39 Razón: mal redactado
  #2 (permalink)  
Antiguo 18/01/2008, 10:07
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Buscar en la base de datos

Para operar con los radio podrias hacer esto

tienes tus controles

Código HTML:
<input type="radio" name="criterio" value="codigo">codigo
<input type="radio" name="criterio" value="nombre">nombre
Y en tu pagina PHP de proceso algo como esto

Código PHP:
$cadena $_POST['cadena'];

if (
$_POST['criterio'] == "codigo")
{
    
$consulta "SELECT * FROM tabla WHERE codigo = '$cadena'"// $cadena es el valor de tu cuadro de texto
}
elseif (
$_POST['criterio'] == "nombre")
{
    
$consulta "SELECT * FROM tabla WHERE nombre LIKE '%$cadena%'";

Tendrias que validar cuando selecciones la opcion nombre que el contenido del cuadro de texto sean letras y no numeros.

Espero haber entendido bien lo que deseas.

Saludos.

Última edición por Carlojas; 18/01/2008 a las 10:18
  #3 (permalink)  
Antiguo 18/01/2008, 10:12
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Buscar en la base de datos

Ahora mismo no recuerdo cómo daba los resultados un radio button, creo que era con un índice... pero no estoy seguro.
Asegurate que tiene nombre y valor en el formulario. Luego, en el script que recoja los datos haz un print_r($_POST); para ver cómo te devuelve el valor del radio button.

En cuando a la consulta es más o menos sencilla. Si los radiobuttons te devuelve 0 ó 1 puedes tener un par de variables así:

$campo[0] = 'nombre';
$campo[1] = 'codigo';

Si para devolver el valor del radiobutton se usa lo que tengan definido en value, es más fácil, llamas a uno "nombre" y al otro "codigo" (o como se llamen los campos de tu tabla).

Luego sería un select normal: "SELECT campos_que_te_interesan FROM tabla WHERE $campo = $valor"

Y para que te aparezcan los que comienzen por la cadena que tú quieras la condición sería: LIKE "mar%"
  #4 (permalink)  
Antiguo 18/01/2008, 10:14
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Buscar en la base de datos

Se me han adelantado... pero básicamente la idea es la misma.
  #5 (permalink)  
Antiguo 18/01/2008, 10:23
 
Fecha de Ingreso: abril-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Re: Buscar en la base de datos

Muchas gracias! voy a probarlo ahora mismo... y les aviso.
  #6 (permalink)  
Antiguo 23/01/2008, 15:11
 
Fecha de Ingreso: abril-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Re: Buscar en la base de datos

BUENO, NO FUNCIONA, LES EXPLICO: TENGO UNA PAGINA DE BUSQUEDA:

buscar_socio.php

<?php
session_start();
if($_SESSION['nivel']==1){
}else{
//header("Location: bebidas.php?error=No tiene acceso al club de socios");
}
?>
<? include("../conexion.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="69%" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td><div align="center"><a href="socios.php">Agregar socio </a> | <span class="Estilo3">Modificar datos</span> </div></td>
</tr>
</table>
<hr>
<h1 align="center">Buscar</h1>
<form action="datos_socios.php" method="get" name="form1" target="Socio:">
<table width="40%" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="15%"><div align="center"><strong>Socio:</strong></div></td>
<td width="85%"><label>
<input name="valorsocio" type="text" id="nombebida2" size="31">
</label></td>
</tr>
<tr>
<td height="27" colspan="2"><div align="center">
<input name="tipobusqueda" type="radio" value="codigo" checked>
Codigo
<label>
<input name="tipobusqueda" type="radio" value="nombre">
</label>
Nombre </div> <div align="center"></div></td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<label>
<input name="Submit" type="submit" id="Submit" value="Enviar dato">
</label>
</div></td></tr>
</table>
</form>
<hr>
</body>
</html>


Y UNA PAGINA DONDE SE MUESTRA Y SE PROCESA:

datos_socios.php

<?php
session_start();
if($_SESSION['nivel']==1){
}else{
//header("Location: bebidas.php?error=No tiene acceso al club de socios");
}
?>
<? include("../conexion.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="69%" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td><div align="center"><a href="socios.php">Agregar socio </a> | <a href="buscar_socio.php">Modificar datos</a> </div></td>
</tr>
</table>
<hr>
<?php
$valorsocio=$_GET['valorsocio'];
$tipobusqueda=$_GET['tipobusqueda'];
$link=Conectarse();
if ($_GET['tipobusqueda'] == "codigo"){
$datos_socio = mysql_query("SELECT textsocio,codsocio,nombsocio,appatsocio,apmatsocio FROM socios WHERE codsocio='$valorsocio'",$link); ?>
<?php while($row=mysql_fetch_array($datos_socio)){ ?>
<table width="100%" border="1" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="26%"><div align="center" class="Estilo1 ">
<h3><u>CODIGO</u></h3>
</div></td>
<td width="74%"><input name="hiddenField6" type="hidden" value="<?php echo $row[0] ?>"> <input name="hiddenField32" type="hidden" value="<?php echo $row[1] ?>"></td>
</tr>
<form name="form1" method="get" action="actualizar_socio.php">
<tr>
<td height="48"><div align="center">
<label> </label>
<div align="center" class="Estilo1">
<h3><u>NOMBRE</u></h3>
</div>
<label> </label>
</div></td>
<td>
<div align="left">
<label>
<input name="hiddenField2" type="hidden" value="<?php echo $row[2] ?>">
<input name="hiddenField4" type="hidden" value="<?php echo $row[3] ?>">
<input name="hiddenField5" type="hidden" value="<?php echo $row[4] ?>">
</label>
</div></td>
</tr>
<tr>
<td height="48"><div align="center">
<h3 class="Estilo2">
<label> <u><em><strong>MODIFICAR DATOS:</strong></em></u> </label>
</h3>
</div></td>
<td><div align="center">
<label> </label>
</div>

<div align="center">
<label>
<input name="codsocio" type="hidden" id="codsocio">
| <a href="actualizar_socio_personales.php">Personales</a> | <a href="actualizar_socio_domicilio.php">Domicilio</a> | <a href="actualizar_socio_generales.php">Generales</a> | <a href="actualizar_socio_preferencias.php">Preferenc ias</a> | <a href="actualizar_socio_envios.php">Envios</a> | <a href="actualizar_socio_observaciones.php">Observac iones</a> | ELIMINAR </label>
</div>
<div align="center"></div></td>
</tr>
</form>
<? } mysql_close($link)?>
</table>
<?php }elseif ($_GET['tipobusqueda'] == "nombre"){
$datos_socio = mysql_query("SELECT textsocio,codsocio,nombsocio,appatsocio,apmatsocio FROM socios WHERE nombsocio like '%$valorsocio%' or apmatsocio like '%$valorsocio%' or apmatsocio like '%$valorsocio%'",$link); ?>
<?php while($row=mysql_fetch_array($datos_socio)){ ?>
<table width="100%" border="1" align="center" cellpadding="2" cellspacing="2">
<tr>
<td width="26%"><div align="center" class="Estilo1 ">
<h3><u>CODIGO</u></h3>
</div></td>
<td width="74%"><input name="hiddenField" type="hidden" value="<?php echo $row[0] ?>">
<input name="hiddenField3" type="hidden" value="<?php echo $row[1] ?>"></td>
</tr>
<tr>
<td height="48"><div align="center">
<label> </label>
<div align="center" class="Estilo1">
<h3><u>NOMBRE</u></h3>
</div>
<label> </label>
</div></td>
<td>
<div align="left">
<label>
<input name="hiddenField2" type="hidden" value="<?php echo $row[2] ?>">
<input name="hiddenField4" type="hidden" value="<?php echo $row[3] ?>">
<input name="hiddenField5" type="hidden" value="<?php echo $row[4] ?>">
</label>
</div></td>
</tr>
<tr>
<td height="48"><div align="center">
<h3 class="Estilo2">
<label> <u><em><strong>MODIFICAR DATOS:</strong></em></u> </label>
</h3>
</div></td>
<td><div align="center">
<label> </label>
</div>

<div align="center">
<label>
<input name="codsocio" type="hidden" id="codsocio22">
| <a href="actualizar_socio_personales.php">Personales</a> | <a href="actualizar_socio_domicilio.php">Domicilio</a> | <a href="actualizar_socio_generales.php">Generales</a> | <a href="actualizar_socio_preferencias.php">Preferenc ias</a> | <a href="actualizar_socio_envios.php">Envios</a> | <a href="actualizar_socio_observaciones.php">Observac iones</a> | ELIMINAR </label>
</div>
<div align="center"></div></td>
</tr>
<? } mysql_close($link)?>
</table>
<?php }?>


<hr>
</body>
</html>


PORQUE NO MUESTRA LAS TABLAS? NO ESTA RECOGIENDO LOS VALORES ENTONCES?...

EN LA PAGINA BUSQUEDA LOS RADIOBUTTONS TIEnES VALORES: CODIGO Y NOMBRE Y NOMBRE: TIPOBUSQUEDA... Y LA CAJA DE TEXTO: VALORSOCIO... AYUDENME!

Última edición por yairo_gioel; 23/01/2008 a las 16:43 Razón: Error de redaccion
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 02:47.