Programación Web y Scripting > PHP
Obtener resultados de tabla mysql a traves de PHP Y formular
gisela87:
Hola!Soy novata en PHP Y Mysql y necesitaria ayuda con respecto al codigo PHP para crear una cartilla medica.
Tengo una base de datos con tres tablas. Ellas son:
ZONAS:
-cod_zona (primary key)
-desc_zona (es el nombre de la zona)
CATEGORIAS
-cod_cat(primary key)
-desc_cat(es el nombre de la categoria)
MEDICOS
cod_med (primary key)
nombre_med
direccion_med
telefono_med
cod_zona (index)
cod_cat (index)
Lo primero que he hecho es crear un formulario simple que contiene dos listas desplegables y un boton de busqueda.
En la primera lista desplegable aparecen las zonas y en la segunda lista desplegable las categorias.
La idea es que en base a la zona que se halla elegido (como por ejemplo, Capital Federal) y en base a la categoria (como por ejemplo, Sanatorios y Clinicas), me de como resultado al presionar el boton de busqueda, todos los sanatorios y clinicas de Capital Federal que se encuentran contenidos en la tabla medicos.
Pero la verdad es que no se como hacerlo.
Aca les dejo el codigo php de las listas desplegables de las categorias y zonas.
--- Código: Text ---<?php$servidor= "localhost";$root= "root";$contraseña= "***";$db= "****"; $coneccion = mysql_connect('localhost', 'root', '***');if (!$db) { echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde."; exit; }@ mysql_select_db("****"); $sql="select * from zonas order by desc_zona ";$result= mysql_query($sql, $coneccion); ?> <form method="post" action="ultimores2.php"> <p>Elige la Zona:<br> <select name="select1"> <?php while ($myrow=mysql_fetch_array($result)) { echo "<option value=$myrow[cod_zona]>$myrow[desc_zona]</option>"; } ?> </select> <?php $sql="select * from categorias order by desc_cat ";$result= mysql_query($sql, $coneccion); ?> </p> <p> Elige la Categoria:<br> <select name="select2"> <?php while ($myrow=mysql_fetch_array($result)) { echo "<option value=$myrow[cod_cat]>$myrow[desc_cat]</option>"; } ?> </select> </p> <br> <input type="submit" value="Buscar"name="B1" /> </form> Bueno, por favor si alguien me puede ayudar se lo agredezco mucho!!
Saludos!!
RadicalEd:
--- Código: PHP ---//Son simples consultas SQL donde les diras:WHERE medicos.cod_zona=$_POST['select1'] AND medicos.cod_cat=$_POST['select2'] //Y en la consulta de concatenaciónmedicos.cod_zona=zona.cod_zona AND medicos.cod_cat=categoria.cod_cat
gisela87:
Hola! Gracias por responder... esta tarde estuve tratando de resolver el problema y he conseguido algo... logre que en base a lo elegido en las listas desplegables, me muestre el registro corespondiente a la tabla medicos. Es decir, si en la lista zona selecciono Capital federal.. y en la de categorias Clinicas y Sanatorios.. me muestra los registros que coinciden con la busqueda... pero ahora me surgio otro problema...y es que si en la lista de zonas selecciono "todas las zonas" y en la de catagerias "clinicas y sanatorios" o cualquier otra.. no me aparece nada. Lo mismo sucede si en las dos listas elijo "todas las zonas" y "todas las categorias".. es decir, siempre que en una de las listas (o en las dos) seleccione la opcion "todas" no me aparece nada...
Cambie el formulario por este:
--- Código: PHP ---<?php$servidor= "localhost";$root= "root";$contraseña= "****";$db= "***"; $coneccion = mysql_connect('localhost', 'root', '***');if (!$db)//ERROR QUE SE MUESTRA SI NO SE CONECTA A LA BASE DE DATOS { echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde."; exit; }@ mysql_select_db("***");//SELECCIONA LA BASE DE DATOS A UTILIZAR $res= mysql_query ("select * from zonas order by desc_zona ");while ($row=mysql_fetch_array($res))$select1 .= "<option value=$row[cod_zona]>$row[desc_zona]</option>"; $res= mysql_query ("select * from categorias order by desc_cat ");while ($row=mysql_fetch_array($res))$select2 .= "<option value=$row[cod_cat]>$row[desc_cat]</option>"; ?> <form method="post" action="ultimores3.php"> <table> <tr> <td>Elige la Zona:</td> <td> <?php echo '<select name="selNZ"><option value=0 selected>Todas las Zonas</option>'.$select1.'</select>'; ?> </td> </tr> <tr> <td>Elige la Categoria:</td> <td> <?php echo '<select name="selNC"><option value=0 selected>Todas las Categorias</option>'.$select2.'</select>'; ?> </td> </tr> <tr> <td colspan="2"><input type="submit" value="Buscar" name="subbuscar" /></td> </tr> </table> </form>
y la pagina en la que muestro los resultados es esta:
--- Código: PHP ---<?php$servidor= "localhost";$root= "root";$contraseña= "****";$db= "**"; $coneccion = mysql_connect('localhost', 'root', '****');if (!$db)//ERROR QUE SE MUESTRA SI NO SE CONECTA A LA BASE DE DATOS { echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde."; exit; }@ mysql_select_db("***");//SELECCIONA LA BASE DE DATOS A UTILIZAR?><?php $sql = "SELECT * FROM medicos, zonas, categorias where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat "; // realizar esta función si se apretó el botón de enviar en el formulario de busquedaif ($HTTP_POST_VARS[subbuscar]){ if($HTTP_POST_VARS[selNZ]){$sql.=" and medicos.cod_zona ='$HTTP_POST_VARS[selNZ]'";}if($HTTP_POST_VARS[selNC]){$sql.=" and medicos.cod_cat ='$HTTP_POST_VARS[selNC]'";}} // obtener datos de la base $result = mysql_query($sql, $coneccion);//$result = mysql_query($query) or die('Error, query failed'); // imprimir resultados normalmente echo '<table width="90%" border="0" align="center" class="txt-verd-08">'; echo ' <tr>'; echo ' <td height="30" align="center"><strong>NOMBRE</strong></td>'; echo ' <td height="30" align="center"><strong>DIRECCION</strong></td>'; echo ' <td height="30" align="center"><strong>TELEFONO</strong></td>'; echo ' </tr>'; while ($row = mysql_fetch_array($result)) { echo ' <tr>'; echo ' <td align="center">' .$row['nombre_med']. '</td>'; echo ' <td align="center">' .$row['direccion_med']. '</td>'; echo ' <td align="center">' .$row['telefono_med']. '</td>'; echo ' </tr>'; } //libero el recordset// mysql_free_result($result); // Cierro la conexion mysql_close($coneccion); echo '</table>'; ?>
Bueno gracias por haberme respondido y si puedes ayudame con esto!
Saludos!! :hola:
RadicalEd:
Gestiona eso por medio de desiciones, si el campo=='' entonces ejecute un query, si tiene datos, entonces ejecute este otro query.
Así lo hago yo; si ya son muchos puedes utilizar sentencias switch
gisela87:
Hola Gracias por responder! podrias darme un ejemplo? xq no me doy cuenta.. Gracias!!!
Navegación
[#] Página Siguiente
Ir a la versión completa