Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta de varios campos BD con FORM

Estas en el tema de Consulta de varios campos BD con FORM en el foro de Bases de Datos General en Foros del Web. Hola como estan? A ver si me pueden ayudar. Tengo un Form con el que quiero hacer una consulta a una tabla "Telefonos" donde tengo ...
  #1 (permalink)  
Antiguo 17/07/2010, 17:29
 
Fecha de Ingreso: abril-2009
Mensajes: 44
Antigüedad: 15 años
Puntos: 3
Consulta de varios campos BD con FORM

Hola como estan?

A ver si me pueden ayudar.
Tengo un Form con el que quiero hacer una consulta a una tabla "Telefonos" donde tengo cargada una guía telefonica de una localidad. La idea es que poniendo alguno de los datos del Form me muestre todo lo que encuentre ordenado por usuario telefonico.

Soy novato en esto y no logro avansar con el codigo PHP y SQL me da el error en la Consulta SELECT y de ahi no avanzo.
Pego el codigo a ver que me pueden ayudar.

Código HTML:
<form action="busca_guia.php" method="post" enctype="multipart/form-data" name="guia" target="_parent">
<p>Nombres<input name="nombres" type="text" size="20" maxlength="30" />
Apellido<input name="apellido" type="text" size="20" maxlength="30" /></p>
Teléfono<select name="prefijo"> 
<option>49</option>
<option>47</option>
</select><input name="sufijo" type="text" size="6" maxlength="4" />
Calle <input name="calle" type="text" size="30" maxlength="40" />
Número <input name="puerta" type="text" size="6" maxlength="5" />
<input name="submit" type="submit" value="Buscar">
</form> 
Código PHP:
<?php 

if(isset($_POST))
{
$nombres $_POST["nombres"];
$apellido $_POST["apellido"];
$prefijo $_POST["prefijo"];
$sufijo $_POST["sufijo"];
$calle $_POST["calle"];
$puerta $_POST["puerta"];

$connection=mysql_connect("localhost","root","")or die("Error conectando a la base de datos");
 
mysql_select_db("db_coop",$connection)or die ("Error seleccionando la base de datos");

// Buscar registros
$consulta "SELECT * FROM telefonos WHERE nombres LIKE %$nombres% AND apellido LIKE %$apellido% AND prefijo LIKE %$prefijo% AND sufijo LIKE %$sufijo% AND calle LIKE %$calle% AND puerta LIKE %$puerta%";

$result mysql_query($consulta) or die('Error, query failed');

if(
mysql_num_rows($result) == 0)
{
    echo 
"No se encontraron RESULTADOS <br>";

else
{   while (
$row mysql_fetch_array($result)){
    
echo 
$row['nombres'];
echo 
$row['apellido'];
echo 
$row['prefijo'];
echo 
$row['sufijo'];
echo 
$row['calle'];
echo 
$row['puerta'];
    }
    }

}

?>

Última edición por Juampix; 17/07/2010 a las 17:39
  #2 (permalink)  
Antiguo 17/07/2010, 18:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta de varios campos BD con FORM

El bloque de comparación usado en LIKE debe estar encerrado entre apóstrofes, y además LIKE opera con cadenas de texto, por lo que si una de esas comparaciones está afectando un campo numérico, eso es incorrecto, porque los números se evalúan con operadores matemáticos o funciones matemáticas, no con operadores de cadena.
Código MySQL:
Ver original
  1. FROM telefonos
  2.    nombres LIKE '%$nombres%' AND
  3.    apellido LIKE '%$apellido%' AND
  4.    prefijo LIKE '%$prefijo%' AND
  5.    sufijo LIKE '%$sufijo%' AND
  6.    calle LIKE '%$calle%' AND
  7.    puerta LIKE '%$puerta%';
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/07/2010, 19:47
 
Fecha de Ingreso: abril-2009
Mensajes: 44
Antigüedad: 15 años
Puntos: 3
Respuesta: Consulta de varios campos BD con FORM

Muchisimas gracias Amigo gnzsoloyo por tu Velocisima respuesta.
Te cuento que tu aporte funciono perfecto. sin embargo sucede que por ejemplo si en Form pongo por nombre Juan, me da todos los Juanes que existen en la Tabla de la BD; ¿Que me estaria faltando para que me cargue ordenadamente los demas datos de cada miembro?

Por ejemplo si hay varios juanes, que me ponga con cada uno los otros datos que corresponden a cada uno:

1. Juan Carlos, Apellido , Numero TEl, Calle, Numero
2. Juan Manuel, Apellido , Numero TEl, Calle, Numero
3. Juan Pablo, Apellido , Numero TEl, Calle, Numero
  #4 (permalink)  
Antiguo 17/07/2010, 19:54
 
Fecha de Ingreso: abril-2009
Mensajes: 44
Antigüedad: 15 años
Puntos: 3
Respuesta: Consulta de varios campos BD con FORM

Cita:
Iniciado por Juampix Ver Mensaje
Muchisimas gracias Amigo gnzsoloyo por tu Velocisima respuesta.
Te cuento que tu aporte funciono perfecto. sin embargo sucede que por ejemplo si en Form pongo por nombre Juan, me da todos los Juanes que existen en la Tabla de la BD; ¿Que me estaria faltando para que me cargue ordenadamente los demas datos de cada miembro?

Por ejemplo si hay varios juanes, que me ponga con cada uno los otros datos que corresponden a cada uno:

1. Juan Carlos, Apellido , Numero TEl, Calle, Numero
2. Juan Manuel, Apellido , Numero TEl, Calle, Numero
3. Juan Pablo, Apellido , Numero TEl, Calle, Numero
PERDON ya esta resuelto es solo que en mi DREAMWEAVER tenia solo
Código PHP:
echo $row['nombres']; 
en el Post lo escribi mas completo. Bueno pego todo el Codigo como corresponde con la correccion del amigo gnzsoloyo. Que funciona perfecto. Solo habria que comodar los resultados en una tabla para que salgan mas ordenados.

Código PHP:
<?php 

if(isset($_POST))
{
$nombres $_POST["nombres"];
$apellido $_POST["apellido"];
$prefijo $_POST["prefijo"];
$sufijo $_POST["sufijo"];
$calle $_POST["calle"];
$puerta $_POST["puerta"];

$connection=mysql_connect("localhost","root","")or die("Error conectando a la base de datos");
 
mysql_select_db("db_coop",$connection)or die ("Error seleccionando la base de datos");

// Buscar registros
$consulta "SELECT * FROM telefonos WHERE 
   nombres LIKE '%$nombres%' AND
   apellido LIKE '%$apellido%' AND
   prefijo LIKE '%$prefijo%' AND
   sufijo LIKE '%$sufijo%' AND
   calle LIKE '%$calle%' AND
   puerta LIKE '%$puerta%';"
;

$result mysql_query($consulta) or die('Error, query failed');

if(
mysql_num_rows($result) == 0)
{
    echo 
"No se encontraron RESULTADOS <br>";

else
{   while (
$row mysql_fetch_array($result)){
    
    echo 
$row['nombres'];
echo 
$row['apellido'];
echo 
$row['prefijo'];
echo 
$row['sufijo'];
echo 
$row['calle'];
echo 
$row['puerta'];
    }
    }
}
?>
  #5 (permalink)  
Antiguo 17/07/2010, 20:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta de varios campos BD con FORM

Si es en la consulta, simplemente ponle un ORDER BY al final, y el conjunto de campos por los que ordenará:
Código MySQL:
Ver original
  1. SELECT * FROM telefonos WHERE
  2.    nombres LIKE '%$nombres%' AND
  3.    apellido LIKE '%$apellido%' AND
  4.    prefijo LIKE '%$prefijo%' AND
  5.    sufijo LIKE '%$sufijo%' AND
  6.    calle LIKE '%$calle%' AND
  7.    puerta LIKE '%$puerta%'
  8. ORDER BY nombres, apellido, prefijo, sufijo, calle, puerta;
Si quieres ordenar uno de los parámetros en forma específica, indica si es ascendente (ASC) o descendente en ese parámetro. Por ejemplo, empezando al revés los nombres, quedaría:
Código MySQL:
Ver original
  1. SELECT * FROM telefonos WHERE
  2.    nombres LIKE '%$nombres%' AND
  3.    apellido LIKE '%$apellido%' AND
  4.    prefijo LIKE '%$prefijo%' AND
  5.    sufijo LIKE '%$sufijo%' AND
  6.    calle LIKE '%$calle%' AND
  7.    puerta LIKE '%$puerta%'
  8. ORDER BY nombres DESC, apellido ASC, prefijo, sufijo, calle, puerta;
Si omites alguno, ese parámetro lo pondrá según orden de aparición.

Nota: Por default, usa el orden de la PK para listar, y si en el ORDER BY no se indica algo distinto, es siempre por orden ascendente.
__________________
¿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 18/07/2010, 10:55
 
Fecha de Ingreso: abril-2009
Mensajes: 44
Antigüedad: 15 años
Puntos: 3
De acuerdo Respuesta: Consulta de varios campos BD con FORM

Una vez mas excelente lo tuyo amigo.
Lo hice de forma que no importa el criterio de busqueda que empleen en el Form; que los resultados se ordenaran de manera Ascendente por apellido como en toda Guia Telefonica.
El Codigo quedo así:
Código PHP:
// Buscar registros
$consulta "SELECT * FROM telefonos WHERE 
   nombres LIKE '%$nombres%' AND
   apellido LIKE '%$apellido%' AND
   prefijo LIKE '%$prefijo%' AND
   sufijo LIKE '%$sufijo%' AND
   calle LIKE '%$calle%' AND
   puerta LIKE '%$puerta%' ORDER BY apellido ASC"

Mil GRACIAS otra vez. Saludos

Etiquetas: bd, campos, formulario
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 04:03.