Foros del Web » Programando para Internet » PHP »

Problema con consulta de menu desplegable

Estas en el tema de Problema con consulta de menu desplegable en el foro de PHP en Foros del Web. Hola a todos: Resulta que estoy haciendo un formulario y en la pagina de entrada tengo dos menúes desplegables (padre) y sus correspondientes hijos. Me ...
  #1 (permalink)  
Antiguo 19/12/2003, 13:08
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 21 años, 11 meses
Puntos: 0
Problema con consulta de menu desplegable

Hola a todos:

Resulta que estoy haciendo un formulario y en la pagina de entrada tengo dos menúes desplegables (padre) y sus correspondientes hijos. Me explico tengo uno para escoger tipo de ente y le asocio los organismos que pertenecen a ese tipo en otro menú, y otro menú en donde se selecciona el estadp y en el menú hijo aparecen las ciudades asociadas al mismo.

El problema es que en la pagina en donde se recogen los datos del formulario no aparece nada, dice que "Usted no está registrado"y el codigo que estoy utilizando es este:

Pagina de consulta de datos
<?//Conexion con la base//

codigo de conexión la BD
//Ejecutar la sentencia SQL//


$query = "select nombre_ente, nombre_ciudad,nombre_estado from ente,ciudades,estado where estado.id_estado=ciudades.id_estado and ente.id_tipo_ente=tipo_ente.id_tipo_ente and id_ciudad='$id_ciudad'and id_ente='$id_ente' ";
$result = pg_exec($db, $query);

if ($row=pg_fetch_array($result))
{

$nombre_ente=$row['nombre_ente'];
$descripcion=$row['descripcion'];
$nombre_estado=$row['nombre_estado'];
$nombre_ciudad=$row['nombre_ciudad'];
$opciones=$_POST['opciones'];


echo "<table width=460 border=\'0\' cellspacing=\'0\' cellpadding=\'0\' height=\'0\' align=\'center\' >";

do

{


echo "<tr><td><font face='Verdana, Arial, Helvetica,sans-serif' size='1'>Ente: </font></td>
<td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>".$row['nombre_ente']."</font></td>\n";

echo "<tr><td><font face='Verdana, Arial, Helvetica,sans-serif' size='1'>Tipo de Ente: </font></td>
<td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>".$row['descripcion']."</font></td>\n";

echo "<tr><td><font face='Verdana, Arial, Helvetica,sans-serif' size='1'>Estado: </font></td>
<td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>".$row['nombre_estado']."</font></td>\n";

echo "<tr><td><font face='Verdana, Arial, Helvetica,sans-serif' size='1'>Ciudad: </font></td>
<td><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>".$row['nombre_ciudad']."</font></td>\n";
}

while ($row = pg_fetch_array($result));

echo "</table>\n";


}

else
{

echo "¡Usted no está registrado!";
}

?>

Adelanto tengo una tabla ente con el id_ente,id_tipo_ente,nombre_ente; otra tabla llamada tipo_ente en donde tengo el id_tipo_ente y decripcion, una tabla estado con el id_estado y nombre_estado y por ultimo una tabla ciudades con id_ciudad, nombre_ciudad y id_estado.

Gracias y disculpen lo largo
  #2 (permalink)  
Antiguo 23/12/2003, 09:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para comprobar que tu consulta que haces ($query) con esos condicionales (WHERE campo ... = tal .. etc) te arroja 1 o màs resultados y en consecuencia decidir si el usuario está o nó registrado .. deberías de comprobarlo contando el total de registros que te arroja la ejecución de la consulta con:

pg_num_rows() o usando el SQL particular de PostGreSQL para hacer un "COUNT()" (ese es de Mysql .. pero tal vez sea similar o lo mismo).

Así harías un condicional tipo:

Código PHP:

//etc código ..

if (pg_num_rows($result) >  0){
   
   echo 
"<table .....">
  
   while (
$row=pg_fetch_array($result)){
       echo 
$row['nombre_ente'];
        
// etc HTML/$row['nose']
   
}

   echo 
"</table>";

} else {
   echo 
"Usuario no está registrado";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/12/2003, 08:25
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 21 años, 11 meses
Puntos: 0
Hola, hice lo que me sugeriste e igualmente no me jecuta la consulta, yo creo que algo tiene que ver la consulta que hago:

$query = "select nombre_ente, nombre_ciudad,nombre_estado from ente,ciudades,estado where estado.id_estado=ciudades.id_estado and
ente.id_tipo_ente=tipo_ente.id_tipo_ente and id_ciudad='$id_ciudad' and id_ente='$id_ente' ";


y tiene que ver con el id_ente='$id_ente' porque si se lo quito me ejcuta la consulta pero cuando incorporo esa condicion para que la infomacion que se despliegue sea la que corresponda nic y exclusivamente a ese ente, no lo hace, no ´se si tine que ver el tipo de dato, yo lo defini como tipo text.

Te cuento esto porque sustituí el id_ente='$id_ente' por un valor que yo habia llenado en la tabla, asi: id_ente='100' y de esta manera me ejcuto la consulta, por eso no entiendo cuando lo dejo que sea el que el usuario escoja no lo hace.

Si me puedes ayudar en esto amigo te lo agradeceria, ya me tiene enredada.

Gracias
  #4 (permalink)  
Antiguo 26/12/2003, 09:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si dices que poniendo el dato id_ente='100' a mano se ejecuta tu consulta correctamente .. comprueba primero si esa variable $id_ente toma el valor esperado; para eso .. haz un echo a tu $query y observa si la sentencia SQL se forma como esperas tomando los valores de las variables que ahí intervengan.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 26/12/2003, 10:05
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 21 años, 11 meses
Puntos: 0
Pues le hice un ech al $query y esto fue lo que me salió:

select nombre_ente, nombre_ciudad,nombre_estado from ente,ciudades,estado where estado.id_estado=ciudades.id_estado and ente.id_tipo_ente=tipo_ente.id_tipo_ente and id_ciudad='1000' and id_ente='' ¡Usted no está registrado!

Fijate el asunto está en el id_ente porque el id_ciudad si me lo tomó y te recuerdo que el id_ente lo definí como tipo integer. En este caso que me sugieres hacer para que me ejecute la consulta adecuada.????
  #6 (permalink)  
Antiguo 26/12/2003, 10:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sea como sea .. ese $id_ente no lo estás recibiendo correctamente.

En los códigos que pusistes no alcanzo a ver de donde llega ese $id_ente .. pero de hecho no llega. ¿como pasas ese id_ente a ese script de proceso?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 26/12/2003, 10:40
 
Fecha de Ingreso: mayo-2002
Mensajes: 30
Antigüedad: 21 años, 11 meses
Puntos: 0
ok, aqui está el codigo de los menúes desplegables en donde se realiza la selección:


// Obtener el $id_ente del envio a si mismo del formulario ..
$id_ente=$_POST['id_ente'];

// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" > \n\n";

// Formar Select "Entes".

echo "<tr><td width='147'><font face='Verdana, Arial, Helvetica,sans-serif'

size='1'>Tipo de Ente: </font></td>\n";

echo "<td colspan='4'>\n";
echo "<select name=\"id_tipo_ente\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione</option>\n";

$query = "select * from tipo_ente";
$result = pg_exec($db, $query);

while ($row=pg_fetch_array($result))
{

// Se mira si el ID del registro es el mismo q el $id_ente q recibimos

si hemos cambiado el select tipo ente.

// Se selecciona en consecuencia (selected) la opción elegida.

if ($id_tipo_ente == $row['id_tipo_ente']){
echo "<option value=\"".$row['id_tipo_ente']."\"

selected>".$row['descripcion']."</option>\n";

} else {

echo "<option

value=\"".$row['id_tipo_ente']."\">".$row['descripcion']."</option>\n";
}
}
echo "</select>\n\n";
echo "</tr></td>\n";

pg_freeresult($result); // Liberar memoria usada por consulta.

// Formar Select "Ente"

echo "<tr><td width='147'><font face='Verdana, Arial, Helvetica,sans-serif'

size='1'>Ente: </font></td>\n";
echo "<td colspan='4'>\n";
echo "<select name=\"id_ente\">\n";

// Si $id_tipo_ente no tiene valor (caso de que no se ha seleccionado

ningua opcion del select hijo
// se muestra el mensaje de "seleccine un item" (del select ente).
if (!empty($id_tipo_ente)){


$query = "select nombre_ente from ente where id_tipo_ente='$id_tipo_ente'";
$result = pg_exec($db, $query);


// se mira el total de registros de la consulta .. si es 0 se muestra

mensaje en el select ..
if (pg_numrows($result) != 0){

while ($row=pg_fetch_array($result))
{

echo "<option

value=\"".$row['id_ente']."\">".$row['nombre_ente']."</option>\n";
}
} else {
echo "<option value=\"\"> No hay registros </option>";
}
} else {
echo "<option value=\"\"> Ente </option>";
}

pg_freeresult($result); // Liberar memoria usada por consulta.

echo "</select>\n\n";
echo "</tr></td>\n";

-----Solo te coloco los menúes de tipo de ente y ente que son los que dan problemas porque estado y ciudades si se realiza la consulta.------

Y en la pagina en donde se recogen los datos seleccionados, se ejecuta la consulta que te coloqué anteriormente:

$query = "select nombre_ente, nombre_ciudad,nombre_estado from ente,ciudades,estado where estado.id_estado=ciudades.id_estado and
ente.id_tipo_ente=tipo_ente.id_tipo_ente and id_ciudad='$id_ciudad' and id_ente='$id_ente' ";

A ver si puedes ver el error...
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 00:05.