Foros del Web » Programando para Internet » PHP »

Listas desplegables y relacion de tablas

Estas en el tema de Listas desplegables y relacion de tablas en el foro de PHP en Foros del Web. Hola a todos! Tengo un problemita al relacionar tablas de una base y posteriormente pedir el resultado de las mismas en una lista. Tengo 4 ...
  #1 (permalink)  
Antiguo 05/05/2008, 13:23
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Pregunta Listas desplegables y relacion de tablas

Hola a todos! Tengo un problemita al relacionar tablas de una base y posteriormente pedir el resultado de las mismas en una lista.

Tengo 4 tablas... provincias, localidades, zonas... y la tabla empresas.
Desde un formulario envío a otra página el resultado de la consulta con las listas desplegables y los campos me aparecen así:

LISTA DE RESTAURANTES
id_empresa
1
id_provincia
1
id_localidad
1
id_zona
1
nombre-del-restaurant
Resto Marx

La página que procesa los datos del form es esta:

Código PHP:
// conexion a la base
$conexion = ......

// realizar esta función si se apretó el botón de enviar en el formulario de busqueda
if (isset($_POST['action']) && $_POST['action'] == 'submit')
//if(isset($_POST['boton']))

// declarar variables los datos del formulario
$select1 $_POST['select1'];
$select2 $_POST['select2'];
$select3 $_POST['select3'];
{

// declarar las condiciones usando la opción WHERE, dependiendo de lo enviado en el formulario (esto trabaja sobre las listas desplegables)
$condiciones "";
if (
$select1 != ""$condiciones .= "WHERE id_provincia = $select1";
if (
$select2 != "" && $condiciones != ""$condiciones .= " AND $select2 = id_localidad";
if (
$select2 != "" && $condiciones == ""$condiciones .= " WHERE $select2 = id_localidad";
if (
$select3 != "" && $condiciones != ""$condiciones .= " AND $select3 = id_zona";
if (
$select3 != "" && $condiciones == ""$condiciones .= " WHERE $select3 = id_zona";

// imprimir resultados normalmente
       
echo '<table width="90%" border="0" align="center" class="txt-verd-08">';
       echo 
'    <tr>';
       echo 
'      <td height="30" align="center"><strong>ID</strong></td>';
       echo 
'      <td height="30" align="center"><strong>PROVINCIA</strong></td>';
       echo 
'      <td height="30" align="center"><strong>LOCALIDAD</strong></td>';
       echo 
'      <td height="30" align="center"><strong>ZONA</strong></td>';
       echo 
'      <td height="30" align="center"><strong>NOMBRE</strong></td>';
       echo 
'  </tr>';

// obtener datos de la base
$sql "SELECT * FROM empresas $condiciones";
$result mysql_query($sql$conexion);
//$result = mysql_query($query) or die('Error, query failed');
while ($row mysql_fetch_array($resultMYSQL_ASSOC)) {

    echo 
'  <tr>';
    echo 
'    <td align="center">' .$row['id_empresa']. '</td>';
    echo 
'    <td align="center">' .$row['id_provincia']. '</td>';
    echo 
'    <td align="center">' .$row['id_localidad']. '</td>';
    echo 
'    <td align="center">' .$row['id_zona']. '</td>';
    echo 
'    <td align="center">' .$row['nombre']. '</td>';
    echo 
'  </tr>';

    }
            
//libero el recordset
//            mysql_free_result($result);


        // Cierro la conexion
        
mysql_close($conexion); 

       echo 
'</table>'
Como ven, la consulta me trae efectivamente el resultado pero con los id de provincias, locali9dades y zonas.
Ahora... yo quisiera que en vez de los id me aparezcan los nombres y hago esta relación:

provincias.id_provincia = restaurante.id_provincia
localidades.id_localidad = restaurante.id_localidad
zonas.id_zona = restaurante.id_zona

Esto lo probé modificando la parte de $condiciones y cambiando el echo a .$row['desc_provincia']. y así suscesivamente pero no funcionó porque me trae listados muy largos, como que se repiten los campos de provincia, en este caso.

Cuando pido que en el listado con el código 1 que es Buenos Aires, lo que hace es listarme tooooda la tabla de provincias... no sé por qué.

En esta parte lo que hice fue:

// obtener datos de la base
$sql = "SELECT * FROM empresas, provincias $condiciones";

Si lo modifico así... me trae todo el listado de las provincias y no solo el 1 (Buenos Aires)

¿Alguna sugerencia de donde podría estar el error?

Desde ya millones de gracias. Saludos. MArx
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 05/05/2008 a las 13:28 Razón: Me olvide de aclarar algo.
  #2 (permalink)  
Antiguo 05/05/2008, 17:49
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Listas desplegables y relacion de tablas

Yo no se mucho pero alguna luz puede servir:

Código PHP:
$sql "SELECT * FROM empresas, WHERE provincias = " '.$condiciones." ' "; 
que tal si resulta?
  #3 (permalink)  
Antiguo 06/05/2008, 12:09
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Re: Listas desplegables y relacion de tablas

Cita:
Iniciado por Ruben_C Ver Mensaje
Yo no se mucho pero alguna luz puede servir:

Código PHP:
$sql "SELECT * FROM empresas, WHERE provincias = " '.$condiciones." ' "; 
que tal si resulta?
Hola y gracias por responder... pero no funcionó.

Me tira este error: arse error: Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING

Como comenté antes, si no relaciono ninguna de las otras tablas funciona todo perfectamente, perome aparecen los id de los campos y no sus nombres . ¿Se puede hacer otra consulta para reemplazar esos id por las descripciones que están en sus tablas?

Gracias. Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 06/05/2008, 12:59
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Listas desplegables y relacion de tablas

Puse mal las comillas!!

Código PHP:
$sql = ("SELECT * FROM empresas, WHERE provincias =  ' ".$condiciones." ' "$tu_link_a_BD); 
. Y si no funciona, no sabria decirte, aunque tu codigo no me cuadra, pero busca una solucion con ajax, hay varios de eso.
  #5 (permalink)  
Antiguo 23/07/2008, 10:59
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Listas desplegables y relacion de tablas

Hola a todos! Reabro este hilo para no poner otro...

Pude armar una consulta a traves de listas desplegables relacionadas... hasta acá funciona todo muy bien. Pero se me ocurrió agregarle un pequeño buscador el cual directamente encuentre por el nombre, pero al presionar el boton BUSCAR... no hace nada y lo que quisiera es simplemente que envíe el ID del NOMBRE a otra página para que muestre todo su contenido. Les comento que si escribo las iniciales del nombre del restaurante, me aparece autimaticamente porque le agregue una librería de ajax para que me muestre en contenido de esa tabla... de ahi toma el NOMBRE y el ID.

Les agrego la imagen...

La consulta que funciona con los demas items (listas desplegables es este):
Código PHP:
    include('conec.php');
    
    
$CantxCol 4//Cantidad de columnas
$Cant 0// Variable para ser usada como contador

    // conexion a la base
    
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
    
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");


// realizar esta función si se apretó el botón de enviar en el formulario de busqueda
if (isset($_POST['action']) && $_POST['action'] == 'submit')


// declarar variables los datos del formulario
$select1 $_POST['select1'];
$select2 $_POST['select2'];
$select3 $_POST['select3'];
$idcocina $_POST['id_cocina'];
$idprecio $_POST['id_precio'];

{


// declarar las condiciones usando la opción WHERE, dependiendo de lo enviado en el formulario
$condiciones "";
if (
$select1 != ""$condiciones .= "AND restaurantes.id_provincia = $select1";
if (
$select2 != "" && $condiciones != ""$condiciones .= " AND restaurantes.id_localidad = $select2";
if (
$select3 != "" && $condiciones != ""$condiciones .= " AND restaurantes.id_zona = $select3";
if (
$idcocina != "" && $condiciones != ""$condiciones .= " AND restaurantes.id_cocina = $idcocina";
if (
$idprecio != "" && $condiciones != ""$condiciones .= " AND restaurantes.id_precio = $idprecio";


// obtener datos de la base

$sql "SELECT * FROM restaurantes, provincia, localidad, zona, cocina, precios WHERE restaurantes.id_provincia = provincia.id_provincia AND restaurantes.id_localidad = localidad.id_localidad AND restaurantes.id_cocina = cocina.id_cocina AND restaurantes.id_precio = precios.id_precio AND restaurantes.id_zona = zona.id_zona $condiciones ORDER BY id_resto";
$result mysql_query($sql$conexion); 
De esta forma, segun lo seleccionado me devuelve en columnas los items que correspondan a las listas desplegables, pero como les comenté antes, quisiera que al presionar BUSCAR diractamente me envie ese ID a otra página.

Espero que se pueda hacer porque en el ultimo de los casos, tendría que separarlo y hacer un buscador aparte.

Muchisimas gracias por todo y saludos.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
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 01:02.