• Domingo 5 de Mayo de 2024, 16:44

Autor Tema:  Obtener resultados de tabla mysql a traves de PHP Y formular  (Leído 4225 veces)

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Obtener resultados de tabla mysql a traves de PHP Y formular
« en: Domingo 26 de Julio de 2009, 00:51 »
0
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
  1. <?php
  2. $servidor= "localhost";
  3. $root= "root";
  4. $contraseña= "***";
  5. $db= "****";
  6.  
  7. $coneccion = mysql_connect('localhost', 'root', '***');
  8. if (!$db)
  9.   {
  10.      echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
  11.      exit;
  12.   }
  13. @ mysql_select_db("****");
  14.  
  15. $sql="select * from zonas order by desc_zona ";
  16. $result= mysql_query($sql, $coneccion);
  17.  
  18. ?>
  19.  
  20. <form method="post" action="ultimores2.php">
  21.   <p>Elige la Zona:<br>
  22.     <select name="select1">
  23.  
  24. <?php
  25.      while ($myrow=mysql_fetch_array($result))
  26.      {
  27.      echo "<option value=$myrow[cod_zona]>$myrow[desc_zona]</option>";
  28.      }
  29.      ?>  
  30.  
  31.   </select>  
  32.    
  33.  
  34. <?php
  35.  
  36. $sql="select * from categorias order by desc_cat ";
  37. $result= mysql_query($sql, $coneccion);
  38.  
  39. ?>
  40.  
  41. </p>
  42.   <p>  Elige la Categoria:<br>
  43.     <select name="select2">      
  44.  
  45. <?php
  46.      while ($myrow=mysql_fetch_array($result))
  47.      {
  48.      echo "<option value=$myrow[cod_cat]>$myrow[desc_cat]</option>";
  49.      }
  50.      ?>  
  51.  
  52. </select>
  53.     </p>
  54.     <br>
  55.    <input type="submit" value="Buscar"
  56. name="B1" />
  57.      
  58. </form>
  59.  
Bueno, por favor si alguien me puede ayudar se lo agredezco mucho!!
Saludos!!

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #1 en: Domingo 26 de Julio de 2009, 07:44 »
0
Código: PHP
  1. //Son simples consultas SQL donde les diras:
  2. WHERE medicos.cod_zona=$_POST['select1'] AND medicos.cod_cat=$_POST['select2']
  3.  
  4. //Y en la consulta de concatenación
  5. medicos.cod_zona=zona.cod_zona AND medicos.cod_cat=categoria.cod_cat
  6.  
El pasado son solo recuerdos, el futuro son solo sueños

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #2 en: Domingo 26 de Julio de 2009, 08:26 »
0
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
  1. <?php
  2. $servidor= "localhost";
  3. $root= "root";
  4. $contraseña= "****";
  5. $db= "***";
  6.  
  7. $coneccion = mysql_connect('localhost', 'root', '***');
  8. if (!$db)//ERROR QUE SE MUESTRA SI NO SE CONECTA A LA BASE DE DATOS
  9.   {
  10.      echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
  11.      exit;
  12.   }
  13. @ mysql_select_db("***");//SELECCIONA LA BASE DE DATOS A UTILIZAR
  14.  
  15. $res= mysql_query ("select * from zonas order by desc_zona ");
  16. while ($row=mysql_fetch_array($res))
  17. $select1 .= "<option value=$row[cod_zona]>$row[desc_zona]</option>";
  18.  
  19. $res= mysql_query ("select * from categorias order by desc_cat ");
  20. while ($row=mysql_fetch_array($res))
  21. $select2 .= "<option value=$row[cod_cat]>$row[desc_cat]</option>";
  22.  
  23. ?>
  24.  
  25. <form method="post" action="ultimores3.php">
  26.   <table>
  27.   <tr>
  28.   <td>Elige la Zona:</td>
  29.   <td>
  30.     <?php
  31.     echo '<select name="selNZ"><option value=0 selected>Todas las Zonas</option>'.$select1.'</select>';
  32.      ?>  
  33.    </td>
  34.    </tr>
  35.    <tr>
  36.     <td>Elige la Categoria:</td>
  37.   <td>
  38.     <?php
  39.     echo '<select name="selNC"><option value=0 selected>Todas las Categorias</option>'.$select2.'</select>';
  40.      ?>  
  41.    </td>
  42.    </tr>
  43.    <tr>
  44.    <td colspan="2"><input type="submit" value="Buscar" name="subbuscar" /></td>
  45.      </tr>
  46.      </table>
  47.      
  48. </form>
  49.  



y la pagina en la que muestro los resultados es esta:


Código: PHP
  1. <?php
  2. $servidor= "localhost";
  3. $root= "root";
  4. $contraseña= "****";
  5. $db= "**";
  6.  
  7. $coneccion = mysql_connect('localhost', 'root', '****');
  8. if (!$db)//ERROR QUE SE MUESTRA SI NO SE CONECTA A LA BASE DE DATOS
  9.   {
  10.      echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
  11.      exit;
  12.   }
  13. @ mysql_select_db("***");//SELECCIONA LA BASE DE DATOS A UTILIZAR
  14. ?>
  15. <?php
  16.  
  17.  
  18. $sql = "SELECT * FROM medicos, zonas, categorias where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat ";
  19.  
  20.  
  21. // realizar esta función si se apretó el botón de enviar en el formulario de busqueda
  22. if ($HTTP_POST_VARS[subbuscar]){
  23.  
  24. if($HTTP_POST_VARS[selNZ]){
  25. $sql.=" and medicos.cod_zona ='$HTTP_POST_VARS[selNZ]'";
  26. }
  27. if($HTTP_POST_VARS[selNC]){
  28. $sql.=" and medicos.cod_cat ='$HTTP_POST_VARS[selNC]'";
  29. }
  30. }
  31.  
  32. // obtener datos de la base
  33.  
  34. $result = mysql_query($sql, $coneccion);
  35. //$result = mysql_query($query) or die('Error, query failed');
  36.  
  37.  
  38.  
  39. // imprimir resultados normalmente
  40.        echo '<table width="90%" border="0" align="center" class="txt-verd-08">';
  41.        echo '    <tr>';
  42.        echo '      <td height="30" align="center"><strong>NOMBRE</strong></td>';
  43.        echo '      <td height="30" align="center"><strong>DIRECCION</strong></td>';
  44.        echo '      <td height="30" align="center"><strong>TELEFONO</strong></td>';
  45.        echo '  </tr>';
  46.  
  47. while ($row = mysql_fetch_array($result)) {
  48.  
  49.     echo '  <tr>';
  50.     echo '    <td align="center">' .$row['nombre_med']. '</td>';
  51.     echo '    <td align="center">' .$row['direccion_med']. '</td>';
  52.     echo '    <td align="center">' .$row['telefono_med']. '</td>';
  53.     echo '  </tr>';
  54.  
  55. }
  56.  
  57.    
  58.             //libero el recordset
  59. //            mysql_free_result($result);
  60.  
  61.  
  62.         // Cierro la conexion
  63.         mysql_close($coneccion);
  64.  
  65.        echo '</table>';  
  66.  
  67. ?>
  68.  


Bueno gracias por haberme respondido y si puedes ayudame con esto!
Saludos!!
:hola:

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #3 en: Domingo 26 de Julio de 2009, 19:19 »
0
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
El pasado son solo recuerdos, el futuro son solo sueños

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #4 en: Domingo 26 de Julio de 2009, 22:03 »
0
Hola Gracias por responder! podrias darme un ejemplo? xq no me doy cuenta.. Gracias!!!

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #5 en: Lunes 27 de Julio de 2009, 18:21 »
0
Código: PHP
  1. if ($_POST['select1']!='') //Si el valor entregado por select1 es diferente a nada
  2. {
  3.   //Haga algo
  4. }
  5. else
  6. {
  7.   //Haga otra cosa
  8. }
  9.  
El pasado son solo recuerdos, el futuro son solo sueños

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #6 en: Martes 28 de Julio de 2009, 06:25 »
0
Hola!! muchas gracias!! solucione el problema de esta forma:

Código: PHP
  1. <?php
  2. $servidor= "localhost";
  3. $root= "root";
  4. $contraseña= "";
  5. $db= "empresa
  6.  
  7. $coneccion = mysql_connect('localhost', 'root', ' ');
  8. if (!$db)//ERROR  SI NO SE CONECTA A LA BASE DE DATOS
  9.  {
  10.     echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
  11.     exit;
  12.  }
  13. @ mysql_select_db("empresa");//SELECCIONA LA BASE DE DATOS A UTILIZAR
  14. ?>
  15.  
  16. <?php
  17. $sql = "SELECT * FROM medicos, zonas, categorias where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat ";
  18. if ($HTTP_POST_VARS['selZona'])
  19.     $sql .= " AND medicos.cod_zona = " .$_POST['selZona'];
  20.  
  21. if ($HTTP_POST_VARS['selCat'])
  22.     $sql .= " AND medicos.cod_cat = "  .$_POST['selCat'];
  23.  
  24.  
  25. $sql .= " ORDER BY nombre_med ASC";
  26. $tabla = mysql_query($sql);
  27.  
  28. if(mysql_num_rows($tabla)==0) {
  29. echo "No se encontraron resultados.";
  30. }
  31.  
  32. // imprimir resultados normalmente
  33.        echo '<table width="90%" border="0" align="center" class="txt-verd-08">';
  34.        echo '    <tr>';
  35.        echo '      <td height="30" align="center"><strong>ID</strong></td>';
  36.        echo '      <td height="30" align="center"><strong>PROVINCIA</strong></td>';
  37.        echo '      <td height="30" align="center"><strong>LOCALIDAD</strong></td>';
  38.        echo '  </tr>';
  39.  
  40.  
  41. while ($row = mysql_fetch_array($tabla)) {
  42. ?>
  43. <?php
  44.  echo '  <tr>';
  45.     echo '    <td align="center">' .$row['nombre_med']. '</td>';
  46.     echo '    <td align="center">' .$row['direccion_med']. '</td>';
  47.     echo '    <td align="center">' .$row['telefono_med']. '</td>';
  48.     echo '  </tr>';
  49. ?>
  50. <?php
  51. }
  52.  
  53. mysql_close($coneccion);
  54. ?>
  55. </table>
  56.  


Muchas gracias por tu ayuda!  :D
Saludos!  :hola:

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #7 en: Martes 28 de Julio de 2009, 20:17 »
0
Fue un placer, espero verte pronto por acá.
El pasado son solo recuerdos, el futuro son solo sueños

anibal_j25

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #8 en: Miércoles 19 de Agosto de 2009, 19:58 »
0
/*
Lo puedes hacer en mas paginas, cons esiones de usuario u otros.
PD: No te olvides de relacionar las tablas si no de que serviria, ok espero me confirmes una respuesta soy nuevo en esto de los foros, bye
anibalj25@gmail.com
*/

<?php
$accion=false;
$cn = mysql_connect("localhost", "root", "");
$db=mysql_select_db("cartilla", $cn);

$sql= "select * from zonas order by cod_zona";
$rs = mysql_query($sql, $cn);
mysql_close();

if(isset($_REQUEST['btnEnviar'])){
$accion=true;

}

?>



<form method="post" action="conexion1.php">
    <input type="submit" name="btnEnviar" ><br>
  <select name="zona">
        <?php
        $tabla1=array();
        while ($rec=mysql_fetch_array($rs)){
            $tabla1[]=$rec;
        }
        foreach($tabla1 as $var){
          echo "<option value='".$var[0]."'>".$var[1]."</option> ";

        }

       ?>
  </select>
    <br>
    <select name ="categoria">
        <?php
        $sql="select * from categorias order by cod_cat";
        $rs = mysql_query($sql, $cn);
        mysql_close();
        while($rec=mysql_fetch_array($rs)){

            echo "<option value=".$rec[0] .">".$rec[1]."</option>";

        }


        ?>


    </select>
    <br><hr><br>
    <?php
   
        if ($accion=true){
        $zona = $_REQUEST['zona'];
        $categoria = $_REQUEST['categoria'];

        $sql="select * from medicos where cod_zona = '".$zona."' and cod_cat ='".$categoria."'";
        $rs = mysql_query($sql, $cn);
        mysql_close();
        while($rec=mysql_fetch_array($rs)){

            echo $rec[0] ." - ".$rec[1]." - ".$rec[2];

        }

        }

        ?>


</form>

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #9 en: Viernes 21 de Agosto de 2009, 06:27 »
0
Hola!Gracias por responder.. He modificado mi base de datos y mi pagina php.. pero tengo otro problema..Tengo una base de datos con cuatro 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)


ESPECIALIDADES
cod_esp (primary key)
desc_esp (es el nombre de la especialidad)
cod_cat (index)

MEDICOS
cod_med (primary key)
nombre_med
direccion_med
telefono_med
cod_zona (index)
cod_cat (index)
cod_esp (index)


He creado una lista desplegable en la cual aparecen las zonas recogiendo los datos de la tabla zonas.

Luego hice dos listas desplegables mas que son dependientes.
La primera lista dependiente recoge los datos de la tabla categorias
La segunda lista dependiente recoge los datos de la tabla especialidades en base a lo elegido a la tabla categorias.
Lo que quiero hacer es que en base a lo elegido en las tres listas se muestren los resultados utilizando la tabla medicos y asi poder mostrar como resultado nombre_med, direccion_med,telefono_med que pertenencen a la tabla medicos.


El problema es que al probar las listas en el navegador me aparece el siguiente error:

Unknown column 'Guardias' in 'where clause'    donde 'Guardias' es uno de los datos que se encuentran en la  tabla especialidades y  que, por lo tanto, se muestra en la lista desplegable "especialidades"..


Aca les dejo el codigo.

Esta es la pagina php llamada pagina1.php donde se encuentra el formulario con las tres listas desplegables:

<html>
<head>

<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<?php
$con = mysql_connect('localhost', 'root', 'root');
mysql_select_db('empresa');
?>

<script>
function componer_Centros(cod_area)
{
//alert(cod_area);
document.miformulario.depto.length=0;
document.miformulario.depto.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<?
$sql_depto = "SELECT * from especialidades";
$rs_depto = mysql_query($sql_depto, $con);
if(mysql_num_rows($rs_depto)>0)
{
while($row_depto = mysql_fetch_assoc($rs_depto))
{

?>
if(cod_area=='<?=$row_depto["cod_cat"]?>')
{
document.miformulario.depto.options[indice] = new Option("<?=$row_depto["desc_esp"]?>","<?=$row_depto["desc_esp"]?>");
indice++;
}
<?
}
}
mysql_close($con);
?>
}

</script>
</head>

<body>

<p>Seleccion de un select y cambiar los valores de otro select sin tener que submitar (valido segun su uso)</p>

<form name="miformulario" method="post" action="PAGINA2.php">
<table width="249" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Zona</td>
<td>Categorias</td>
<td>Especialidad</td>
</tr>

<tr>
<tr>
<td><select name="zonas" id="zonas">
<option value="">--Seleccione--</option>
<?
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "root";
$bd_base = "empresa";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
<? $sql = "SELECT * from zonas";
$rs = mysql_query($sql, $con); ?>
<? if(mysql_num_rows($rs)>0)
{
while($row = mysql_fetch_assoc($rs))
{
?>
<option value="<?=$row["cod_zona"]?>"><?=$row["desc_zona"]?></option>
<?
}
}
?>
</select>
<td><select name="categorias" id="categorias" onChange="componer_Centros(this.value)">
<option value="">--Seleccione--</option>
<?
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "root";
$bd_base = "empresa";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
<? $sql = "SELECT * from categorias";
$rs = mysql_query($sql, $con); ?>
<? if(mysql_num_rows($rs)>0)
{
while($row = mysql_fetch_assoc($rs))
{
?>
<option value="<?=$row["cod_cat"]?>"><?=$row["desc_cat"]?></option>
<?
}
}
?>
</select></td>
<td><select name="especialidades" id="especialidades">
<option>--seleccione--</option>
</select></td>
<TD><input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR"></TD>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</form>


</body>
</html>
 



y esta es la pagina llamada pagina2.php a la cual llama el formulario:


<body>
<table border="1">
<tr>
<td>ID Propiedad </td>
<td>Propiedad</td>
<td>Ciudad</td>
<td>Descripci&oacute;n</td>
<td>Precio</td>
</tr>
<?php
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "root";
$bd_base = "empresa";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
<?php
$sql = "SELECT * FROM medicos, zonas, categorias, especialidades where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat and categorias.cod_cat=especialidades.cod_cat and medicos.cod_esp=especialidades.cod_esp ";
if ($HTTP_POST_VARS['zonas'])
   $sql .= " AND medicos.cod_zona = " .$_POST['zonas'];

if ($HTTP_POST_VARS['categorias'])
    $sql .= " AND medicos.cod_cat = "  .$_POST['categorias'];
   
   if ($HTTP_POST_VARS['especialidades'])
    $sql .= " AND medicos.cod_cat = " .$_POST['especialidades'];
   
$sql .= " ORDER BY nombre_med ASC";
$resultado = mysql_query($sql) or die ($Sql .mysql_error()."" );
while ($registro = mysql_fetch_array($resultado)) {
?>
<tr>
<td><?php echo $registro['cod_zona']; ?></td>
<td><?php echo $registro['desc_zona']; ?></td>
<td><?php echo $registro['nombre_med']; ?></td>
<td><?php echo $registro['direccion_med']; ?></td>
</tr>
 
<?php
}
mysql_free_result($resultado);
mysql_close($con);
?>
</table>

</table>
</body>
</html>



Bueno, espero que me puedan ayudar! Gracias!!!
Saludos!!!
« última modificación: Viernes 21 de Agosto de 2009, 21:25 por gisela87 »

anibal_j25

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #10 en: Viernes 21 de Agosto de 2009, 15:59 »
0
Si deseas practicr solo php no te compliques mucho pero si estas empezando ha realizar praticas de nivel intermedio a avanzado, te recomiendo diseñar tu base de datos por mas pequeña que sea como esta pero tiene que haver manejo de relaciones si no com extraes la data hacia tu pagina, los errores siempre van a salir si existen inoherencias....

1: A mi me vasta saber el codigo de especialidad del medico para saber ya a que categoria pertenece, ya no necesito relacionar directamente medico con categoria.
2: para manejo de informes o presentacion de tablas debes adicionar una tbala mas donde interactuen las tablas que deseas imprimir, ok.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #11 en: Viernes 21 de Agosto de 2009, 21:22 »
0
Hola Anibal Muchas gracias por responder!!! He creado la base de datos como me dijiste...De la siguiente manera, no se si esta bien...

CATEGORIAS
-cod_cat (char, 5, Primary Key)
-desc_cat (varchar, 45)

ESPECIALIDADES
-cod_esp (char, 5, primary key)
-cod_cat (char, 5, index)
-desc_cat (varchar, 45)

MEDICOS
-cod_med (char, 5, primary key)
-nombre_med (varchar, 45)
-direccion_med (varhar, 45)
-telefono_med (varchar, 45)

ZONAS
cod_zona (char, 5, primary key)
desc_zona(varchar, 45)

DISPONIBILIDAD
cod_disp (int, 5, primary key)
cod_med (char, 5, index)
cod_zona (char, 5, index)


Y ahora como ejecuto las consultas sql con php?
De la forma que lo habia hecho antes...funcionaban solo dos selects.. el de zonas y el de categorias. Es decir que si al codigo le quitaba lo que esta en negrita

sql = "SELECT * FROM medicos, zonas, categorias, especialidades where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat and categorias.cod_cat=especialidades.cod_cat and medicos.cod_esp=especialidades.cod_esp ";
if ($HTTP_POST_VARS['zonas'])
$sql .= " AND medicos.cod_zona = " .$_POST['zonas'];

if ($HTTP_POST_VARS[categorias'])
$sql .= " AND medicos.cod_cat = " .$_POST['categorias'];

if ($HTTP_POST_VARS['especialidad'])
$sql .= " AND medicos.cod_cat = " .$_POST['especialidad'];


fucionaba bien, es decir, no me daba ningun error y me listaba los medicos de acuerdo a las zonas y categorias pero no por especialidad obviamente...
El problema surge cuando colocaba lo que esta en negrita.. ahi si me aparacia el error Unknow column ' Guardias' in where clause, donde Guardias es uno de los registros de la tabla especialidades.


Bueno, espero tu respuesta y muchas gracias por ayudarme!!

Saludos!

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #12 en: Viernes 21 de Agosto de 2009, 23:02 »
0
Intentalo asi:
Código: PHP
  1. $sql .= " AND medicos.cod_cat = '" .$_POST['especialidad'] . "'";
  2.  

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #13 en: Viernes 21 de Agosto de 2009, 23:21 »
0
Cita de: "shadow_rev"
Intentalo asi:
Código: PHP
  1. $sql .= " AND medicos.cod_cat = '" .$_POST['especialidad'] . "'";
  2.  

:suerte:


Hola!! haciendolo asi, al ejecutar el codigo no me duvuelve ningun error pero tampoco se muestran los resultados:(. Solamente aparece el formato de la tabla en donde van colocados los registos de la consulta.. pero los registrs no aparecen..

Gracias..
Saludos!!

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #14 en: Sábado 22 de Agosto de 2009, 02:47 »
0
Quiza sea porque no hay una especialidad que satisfaga las condiciones :rolleyes:

Intenta cambiando el "=" de la consulta por un ILIKE, y pon la especialidad entre %%:
Código: PHP
  1. $sql .= " AND medicos.cod_cat ILIKE '%" .$_POST['especialidad'] . "%'";
  2.  
De esta forma, busca los cod_cat que contengan $_POST['especialidad'], sin tener en cuenta mayúsculas o minúsculas. También prueba ejecutando el SQL que estás generando directamente con el cliente del MySQL

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #15 en: Sábado 22 de Agosto de 2009, 08:52 »
0
Cita de: "gisela87"
Hola Anibal Muchas gracias por responder!!! He creado la base de datos como me dijiste...De la siguiente manera, no se si esta bien...

CATEGORIAS
-cod_cat (char, 5, Primary Key)
-desc_cat (varchar, 45)

ESPECIALIDADES
-cod_esp (char, 5, primary key)
-cod_cat (char, 5, index)
-desc_cat (varchar, 45)

MEDICOS
-cod_med (char, 5, primary key)
-nombre_med (varchar, 45)
-direccion_med (varhar, 45)
-telefono_med (varchar, 45)

ZONAS
cod_zona (char, 5, primary key)
desc_zona(varchar, 45)

DISPONIBILIDAD
cod_disp (int, 5, primary key)
cod_med (char, 5, index)
cod_zona (char, 5, index)


Y ahora como ejecuto las consultas sql con php?
De la forma que lo habia hecho antes...funcionaban solo dos selects.. el de zonas y el de categorias. Es decir que si al codigo le quitaba lo que esta en negrita

sql = "SELECT * FROM medicos, zonas, categorias, especialidades where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat and categorias.cod_cat=especialidades.cod_cat and medicos.cod_esp=especialidades.cod_esp ";
if ($HTTP_POST_VARS['zonas'])
$sql .= " AND medicos.cod_zona = " .$_POST['zonas'];

if ($HTTP_POST_VARS[categorias'])
$sql .= " AND medicos.cod_cat = " .$_POST['categorias'];

if ($HTTP_POST_VARS['especialidad'])
$sql .= " AND medicos.cod_cat = " .$_POST['especialidad'];


fucionaba bien, es decir, no me daba ningun error y me listaba los medicos de acuerdo a las zonas y categorias pero no por especialidad obviamente...
El problema surge cuando colocaba lo que esta en negrita.. ahi si me aparacia el error Unknow column ' Guardias' in where clause, donde Guardias es uno de los registros de la tabla especialidades.


Bueno, espero tu respuesta y muchas gracias por ayudarme!!

Saludos!

Bueno segun la estructura de la tablas que muestras la Tabla Medicos no esta completa

Faltarian cuando menos los siguientes campos que aparecen en la consulta
 cod_zona
 cod_esp

sql = "SELECT * FROM medicos, zonas, categorias, especialidades where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat and categorias.cod_cat=especialidades.cod_cat and medicos.cod_esp=especialidades.cod_esp ";

Lo que me hace pensar lo siguiente:

En esta instruccion lo que quieres es filtrar por especialidad, sin embargo (creo yo) no es el campo correcto, porque estas comparando categoria, con especialidad

if ($HTTP_POST_VARS['especialidad'])
$sql .= " AND medicos.cod_cat = " .$_POST['especialidad'];


Cuando deberia ser

if ($HTTP_POST_VARS['especialidad'])
$sql .= " AND medicos.cod_esp = " .$_POST['especialidad'];


Si el cod_esp es varchar (supongo que si ya que como dices contiene 'Guardias') debera ir entrecomillado tal como lo indico shadow_rev en su primera intervencion

esto es:

if ($HTTP_POST_VARS['especialidad'])
$sql .= " AND medicos.cod_esp = '" .$_POST['especialidad'] ."'";



y es precisamente que por eso MySQL intenta resover Guardias como una columna al no estar encerrado entre comillas, cuando te recomienda entre comillarlo el error ese se corregiria (por obvias razones) pero no encontraria resultados en caso de que mi teoria sea correcta y estes comparando el campo equivocado


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

gisela87

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Obtener resultados de tabla mysql a traves de PHP Y formular
« Respuesta #16 en: Miércoles 26 de Agosto de 2009, 05:35 »
0
Hola!! ya pude resolver el problema...tenia mal la funcion.. pero ahora tengo otro problema...
como les dije tengo un select independiente que es zonas y dos selects dependientes (categorias y especialidades). Si ejecuto el codigo en el navegador y selecciono una opcion de los tres selects me devuelve los registros de acuerdo a lo que haya elegido.. hasta aca todo bien.. pero si selecciono una opcion del select independiente (zonas) y de los demas selects no selecciono nada no me devuelve ningun resultado.. Es decir, lo que quiero es que al seleccionar una opcion del select independiente por ejemplo Capital Federal (que es uno de los registros de la tabla zona) me devuelva como resultado todos los registros que contengan Capital federal pero sin haber seleccionado nada en los otros dos selects... como hago??? Aclaro que con el select Categorias si funciona, es decir, que si selecciono una opcion del select categoria y de los otros dos (zonas y especialidades) no selecciono nada me devulve los resultados ok!! Pero no funciona con el select independiente....
Gracias. y les dejo de nuevo el codigo (lo que resalte en negrita dentro del codigo es lo que tenia mal y que ya solucione)

<html>
<head>

<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<?php
$con = mysql_connect('localhost', 'root', 'root');
mysql_select_db('empresa');
?>

<script>
function componer_Centros(cod_area)
{
//alert(cod_area);
document.miformulario.depto.length=0;
document.miformulario.depto.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<?
$sql_depto = "SELECT * from especialidades";
$rs_depto = mysql_query($sql_depto, $con);
if(mysql_num_rows($rs_depto)>0)
{
while($row_depto = mysql_fetch_assoc($rs_depto))
{

?>
if(cod_area=='<?=$row_depto["cod_cat"]?>')
{
document.miformulario.depto.options[indice] = new Option("<?=$row_depto["desc_esp"]?>","<?=$row_depto["cod_esp"]?>");
indice++;
}
<?
}
}
mysql_close($con);
?>
}

</script>
</head>

<body>

<p>Seleccion de un select y cambiar los valores de otro select sin tener que submitar (valido segun su uso)</p>

<form name="miformulario" method="post" action="PAGINA2.php">
<table width="249" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Zona</td>
<td>Categorias</td>
<td>Especialidad</td>
</tr>

<tr>
<tr>
<td><select name="zonas" id="zonas">
<option value="">--Seleccione--</option>
<?
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "root";
$bd_base = "empresa";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
<? $sql = "SELECT * from zonas";
$rs = mysql_query($sql, $con); ?>
<? if(mysql_num_rows($rs)>0)
{
while($row = mysql_fetch_assoc($rs))
{
?>
<option value="<?=$row["cod_zona"]?>"><?=$row["desc_zona"]?></option>
<?
}
}
?>
</select>
<td><select name="empresa" id="empresa" onChange="componer_Centros(this.value)">
<option value="">--Seleccione--</option>
<?
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "root";
$bd_base = "empresa";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
<? $sql = "SELECT * from categorias";
$rs = mysql_query($sql, $con); ?>
<? if(mysql_num_rows($rs)>0)
{
while($row = mysql_fetch_assoc($rs))
{
?>
<option value="<?=$row["cod_cat"]?>"><?=$row["desc_cat"]?></option>
<?
}
}
?>
</select></td>
<td><select name="depto" id="depto">
<option>--seleccione--</option>
</select></td>
<TD><input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR"></TD>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</form>


</body>
</html>




y esta es la pagina llamada pagina2.php a la cual llama el formulario:

<body>
<table border="1">
<tr>
<td>ID Propiedad </td>
<td>Propiedad</td>
<td>Ciudad</td>
<td>Descripci&oacute;n</td>
<td>Precio</td>
</tr>
<?php
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "root";
$bd_base = "empresa";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
<?php
$sql = "SELECT * FROM medicos, zonas, categorias, especialidades where medicos.cod_zona=zonas.cod_zona and categorias.cod_cat=medicos.cod_cat and categorias.cod_cat=especialidades.cod_cat and medicos.cod_esp=especialidades.cod_esp ";
if ($HTTP_POST_VARS['zonas'])
$sql .= " AND medicos.cod_zona = " .$_POST['zonas'];

if ($HTTP_POST_VARS['empresa'])
$sql .= " AND medicos.cod_cat = " .$_POST['empresa'];

if ($HTTP_POST_VARS['depto'])
$sql .= " AND medicos.cod_esp= " .$_POST['depto'];

$sql .= " ORDER BY nombre_med ASC";
$resultado = mysql_query($sql) or die ($Sql .mysql_error()."" );
while ($registro = mysql_fetch_array($resultado)) {
?>
<tr>
<td><?php echo $registro['cod_zona']; ?></td>
<td><?php echo $registro['desc_zona']; ?></td>
<td><?php echo $registro['nombre_med']; ?></td>
<td><?php echo $registro['direccion_med']; ?></td>
</tr>

<?php
}
mysql_free_result($resultado);
mysql_close($con);
?>
</table>

</table>
</body>
</html>


Muchisimas gracias a todos por su ayuda!!!