Foros del Web » Programando para Internet » PHP »

busqueda segun una variable en BD

Estas en el tema de busqueda segun una variable en BD en el foro de PHP en Foros del Web. buenas, mi problema es que estoy haciendo una busqueda en una base de datos segun una variable $opcion que me pasan de un formulario. Me ...
  #1 (permalink)  
Antiguo 09/12/2005, 06:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 139
Antigüedad: 12 años, 1 mes
Puntos: 0
busqueda segun una variable en BD

buenas,
mi problema es que estoy haciendo una busqueda en una base de datos segun una variable $opcion que me pasan de un formulario.
Me funciona pero solo si pongo el valor de la variable (p.ej:"Normal").Aqui os pongo el codigo:
<?php
//print("$opcion");
//print("$voz");
//print("$fax");
//print("$modem");
//print("$datos");
$host= "localhost";
$user="root";
$password="";
$nombreBD="proyecto";
$tabla="llamadas";

$link =mysql_connect($host, $user, $password);
mysql_select_db($nombreBD,$link);




// Conexion, seleccion de base de datos
echo '<p><br>';

// Realizar una consulta SQL
$consulta = 'SELECT * FROM `llamadas` WHERE `causadesconexion` LIKE "Normal"';
$resultado = mysql_query($consulta) or die('La consulta fall&oacute;: ' . mysql_error());

//Leemos y escribimos los registros de la página actual
echo "<table width=630 border=0 cellspacing=4 bgcolor=#FFFFFF>\n";
while($row = mysql_fetch_array($resultado)){
echo "\t<tr>\n";
echo "\t\t<td>". $row['n_desecuencia']."<td>\n";
echo "\t\t<td>". $row['duracion']."<td>\n";
echo "\t\t<td>". $row['causadesconexion']."<td>\n";
echo "\t\t<td>". $row['tipon_llamada']."<td>\n";
echo "\t\t<td>".$row['nllamado']."<td>\n";
}
echo "\t</tr>\n";
echo "</table>\n";
?>

Mi consulta es como podria hacerlo para que la busqueda sea :
$consulta = 'SELECT * FROM `llamadas` WHERE `causadesconexion` LIKE ...
y poner que sea segun la variable opcion
gracias
  #2 (permalink)  
Antiguo 09/12/2005, 06:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. esa variable "$opcion" de que formulario sale? .. con que método envias esa variable desde el formulario? POST ? GET ?

Por lo demás .. no pusistes como usas esa variable en tu $cosulta .. sólo se vé que usas comillas simples para inciar la cadena .. si no concatenas (como el ejemplo que te dejo) ... por ahí tendrías problemas, el valor de la variable no se interpretaría. De todas formas esto lo veras más claro si hacese un echo a $consulta y observas como te queda tu sentencia SQL. También no sé que tipo de busqueda estás haciendo .. pero podrías usar los comodines o wilcards "%" o en su defecto usar para ese caso campo='$opcion' ... no LIKE

Código PHP:
$consulta "SELECT * FROM `llamadas` WHERE `causadesconexion` LIKE '%".$_POST['opcion']."%'"
Te falta también controlar el coso de que realmente no exista el término a buscar en esa tabla de tu BD.

Usa mysql_num_rows() para ver si hay resultados antes de pretender mostrarlos .. así presentaras un mensaje de erro tipo "no hay resultados" en lugar de un "error en mysql_fetch_xxxx()" por intentar usar esa función sin entregarle un resultado valido de una consulta SQL ejecutada.

Un saludo,
  #3 (permalink)  
Antiguo 09/12/2005, 06:44
 
Fecha de Ingreso: noviembre-2005
Mensajes: 139
Antigüedad: 12 años, 1 mes
Puntos: 0
El formulario es este:
A continuacion elija los criterios de seleccion de llamadas:
<form action="muestra.php" method=post>
<p><br/>
Causa de desconexion:
<select name = opcion>
<option>Normal
<option>Usuario Ocupado
<option>Sin Respuesta
<option>Numero Incorrecto
<option>Sin Especificar
<option>Linea/Canal No Disponible
</select>
<br>
<br>
Tipo de llamada:
<input type=checkbox name=voz value="Voz">Voz
<input type=checkbox name=fax value="Fax">Fax
<input type=checkbox name=modem value="Modem">Modem
<input type=checkbox name=datos value="Datos">Datos
<br>
<br>
Desea que se le muestre un grafico con los porcentajes de cada tipo?:
<input type=radio name=grafico value="si">SI
<input type=radio name=grafico value="no">NO
<br>
<br>
Ordenar llamadas por:
<input type=radio name=orden value="fecha">Fecha de inicio
<input type=radio name=orden value="identificador">Identificador de llamada
<br>
<br>

<input type="submit" value="MOSTRAR" /></p>

Y lo recojo en el codigo que te he puesto antes.
gracias..funciona

Última edición por apuenco; 09/12/2005 a las 06:52
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 15:39.