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($result, MYSQL_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>';
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