Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2008, 13:23
marx-pola
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años
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.