Foros del Web » Programando para Internet » PHP »

Opcion por defecto en combobox

Estas en el tema de Opcion por defecto en combobox en el foro de PHP en Foros del Web. Hola el siguiente codigo basicamente lo que hace es cargar un combobox de categorias. cuando el usuario elige la categoria y le da al boton ...
  #1 (permalink)  
Antiguo 30/09/2007, 07:27
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Opcion por defecto en combobox

Hola el siguiente codigo basicamente lo que hace es cargar un combobox de categorias. cuando el usuario elige la categoria y le da al boton de submit se despliegan debajo de ese combobox las subcategorias en forma de listado.
para esto el form siempre se llama si mismo. el problema que tengo que es que cuando el usuario le da click al submit y se recarga la pagina no me aparece en el combobox la opicon antes seleccionada sino que me muestra todas. Necesito que el combobox siga saliendo tal como sale inicialmente pero con la opcion antes seleccionada como su valor.

La pregunta seria como le digo al select del combobox que me coloque la opcion del $POST anterior?

<html>
<body>

<form method="post" action="combo5.php">

<? // query1.php
include("conec.php");

$link = conectarse(HOST, USER, PASS, DB, PORT);
if(empty($_POST["claves"]))
{
$sql = "select * from categorias where (idcategoria!='10' AND idcategoria!='11')" ;

If ($res=mysql_query($sql))
{
// echo "Consulta: <br> $sql";
}
echo "<SELECT NAME='claves' SIZE='1'>";
while ($row = mysql_fetch_row($res))
{
echo "<OPTION VALUE='$row[0]'>$row[1]</OPTION>";
}
echo "</SELECT> ";
echo"<input type=\"submit\" id=\"a\">"
. ""
."";
}

else
{

$sql="select * from categorias where (idcategoria!='10' AND idcategoria!='11')" ;
If ($res=mysql_query($sql))
{
// echo "Consulta: <br> $sql";
}
echo "<SELECT NAME='claves' SIZE='1'>";
while ($row = mysql_fetch_row($res))
{
echo "<OPTION VALUE='$row[0]'>$row[1]</OPTION>";
}
echo "</SELECT> ";

echo"<input type=\"submit\" id=\"a\">"
. ""
."";
echo "<br>";

$sql1 = "select * from subcategorias where idcategoria='" . $_POST["claves"]."'";
If ($res1=mysql_query($sql1))
{
// echo "Consulta: <br> $sql";
}
while($row=mysql_fetch_array($res1)) {
$scat= $row['idsubcategoria'];
echo "<a href=listainicial.php?scat=$scat>".$row['subcategoria']."</a>";
printf('<br>');
}
}
//echo "Valor de seleccion:". $_POST["claves"]."<br>";
?>
</form>
</body>
</html>
  #2 (permalink)  
Antiguo 30/09/2007, 10:38
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Re: Opcion por defecto en combobox

Prueba a poner debajo de
Código:
echo "<SELECT NAME='claves' SIZE='1'>";
esto :
Código:
$anterior=$_POST['claves'];
echo "<OPTION VALUE='$anterior'>$anterior</OPTION>";
  #3 (permalink)  
Antiguo 30/09/2007, 11:53
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Opcion por defecto en combobox

Cita:
Iniciado por ESNOLA Ver Mensaje
Prueba a poner debajo de
Código:
echo "<SELECT NAME='claves' SIZE='1'>";
esto :
Código:
$anterior=$_POST['claves'];
echo "<OPTION VALUE='$anterior'>$anterior</OPTION>";
Gracias por tu respuesta.
Ya casi funciona. Le añadi ese codigo y cuando recargo la pagina me esta colocando en el combobox el valor anterior pero en forma de numero (idcategoria) y yo quiero que me ponga es la categoria. Como le digo que me escriba en vez de el numero la categoria?
  #4 (permalink)  
Antiguo 30/09/2007, 13:16
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Re: Opcion por defecto en combobox

Pues entonces tendrás que realizar una nueva consulta :

$anterior=$_POST['claves'];

$sql = mysql_query ("SELECT nombre_del_campo FROM subcategorias WHERE idcategoria= $anterior");
$resultado = mysq_fetch_assocc($sql);

echo "<OPTION VALUE='$anterior'>$resultado['nombre_del_campo']</OPTION>";

Sustituye nombre_del_campo por su correspondiente valor en la tabla
  #5 (permalink)  
Antiguo 30/09/2007, 15:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Opcion por defecto en combobox

Cita:
Iniciado por ESNOLA Ver Mensaje
Pues entonces tendrás que realizar una nueva consulta :

$anterior=$_POST['claves'];

$sql = mysql_query ("SELECT nombre_del_campo FROM subcategorias WHERE idcategoria= $anterior");
$resultado = mysq_fetch_assocc($sql);

echo "<OPTION VALUE='$anterior'>$resultado['nombre_del_campo']</OPTION>";

Sustituye nombre_del_campo por su correspondiente valor en la tabla
Me esta dando un error. Coloque esto:

echo "<SELECT NAME='claves' SIZE='1'>";
$anterior=$_POST['claves'];

$sql = mysql_query ("SELECT categoria FROM categorias WHERE idcategoria=$anterior");
$resultado = mysq_fetch_assocc($sql);

echo "<OPTION VALUE='$anterior'>$resultado['categoria']</OPTION>";

me da este error: Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING en la linea echo "<OPTION VALUE='$anterior'>$resultado['categoria']</OPTION>";
  #6 (permalink)  
Antiguo 30/09/2007, 15:54
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: Opcion por defecto en combobox

Si envías tus variables por POST lo que podrías hacer es algo como esto:
Código PHP:
<?php
    $categoria 
$_POST['categoria'];
    
// por aquí haces tus consultas SQL o demás
?>
    <form action="" method="post">
        <select name="categoria">
            <?php
                $con 
mysql_query("SELECT * FROM categorias ORDER BY id_categoria ASC");
                while(
$row mysql_fetch_array($con)) {
                
$cat $row['categoria'];
            
?>
            <option value="<?=$cat?><?php if($cat == $categoria) echo "selected"?>><?=$cat?></option>
            <?php
                
}else {
                    
// no hacemos nada o muestras algun mensaje
                
}
            
?>
        </select>
        <input type="text" name="palabra" />
        <input type="submit" name="enviar" value="Buscar" style="background: #2d2d2d; color: #fff;" />
    </form>
Como verás, dentro en el <option> hace una consulta que compara que el valor enviado por $_POST sea igual al valor de la consulta a mysql, de ser verdadero aparecerá seleccionada la opción que hayas enviado.

Espero que te sirva, saludos
  #7 (permalink)  
Antiguo 30/09/2007, 16:43
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Re: Opcion por defecto en combobox

Cita:
Iniciado por msimsi Ver Mensaje
Me esta dando un error. Coloque esto:

echo "<SELECT NAME='claves' SIZE='1'>";
$anterior=$_POST['claves'];

$sql = mysql_query ("SELECT categoria FROM categorias WHERE idcategoria=$anterior");
$resultado = mysq_fetch_assocc($sql);

echo "<OPTION VALUE='$anterior'>$resultado['categoria']</OPTION>";

me da este error: Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING en la linea echo "<OPTION VALUE='$anterior'>$resultado['categoria']</OPTION>";
Cambia
Código PHP:
echo "<OPTION VALUE='$anterior'>$resultado['categoria']</OPTION>"
por

Código PHP:
echo "<OPTION VALUE='$anterior'>".$resultado['categoria']."</OPTION>"
  #8 (permalink)  
Antiguo 30/09/2007, 16:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Opcion por defecto en combobox

Cita:
Iniciado por ZydRick Ver Mensaje
Si envías tus variables por POST lo que podrías hacer es algo como esto:
Código PHP:
<?php
    $categoria 
$_POST['categoria'];
    
// por aquí haces tus consultas SQL o demás
?>
    <form action="" method="post">
        <select name="categoria">
            <?php
                $con 
mysql_query("SELECT * FROM categorias ORDER BY id_categoria ASC");
                while(
$row mysql_fetch_array($con)) {
                
$cat $row['categoria'];
            
?>
            <option value="<?=$cat?><?php if($cat == $categoria) echo "selected"?>><?=$cat?></option>
            <?php
                
}else {
                    
// no hacemos nada o muestras algun mensaje
                
}
            
?>
        </select>
        <input type="text" name="palabra" />
        <input type="submit" name="enviar" value="Buscar" style="background: #2d2d2d; color: #fff;" />
    </form>
Como verás, dentro en el <option> hace una consulta que compara que el valor enviado por $_POST sea igual al valor de la consulta a mysql, de ser verdadero aparecerá seleccionada la opción que hayas enviado.

Espero que te sirva, saludos
Gracias a los dos que me ayudaron me funciono perfecto!!!!!
Bueno mi codigo quedó asi:

(La primera vez muestra el combobox y toma la primera opcion por defecto pero una vez seleccionado alguna opcion cuando se recarga la pagina muestra el combobox con la opcion seleccionada)

EL código queda asi por si alguien lo nocesita:

if(empty($_POST["claves"]))
{
$sql = "select * from categorias" ;

If ($res=mysql_query($sql))
{
// echo "Consulta: <br> $sql";
}
echo "<SELECT NAME='claves' SIZE='1'>";
while ($row = mysql_fetch_row($res))
{
echo "<OPTION VALUE='$row[0]'>$row[1]</OPTION>";
}
echo "</SELECT> ";
echo"<input type=\"submit\" id=\"a\">"
. ""
."";
}
else
{

$sql="select * from categorias where (idcategoria!='10' AND idcategoria!='11')" ;
If ($res=mysql_query($sql))
{
// echo "Consulta: <br> $sql";
}
echo "<SELECT NAME='claves' SIZE='1'>";
$anterior=$_POST['claves'];

$con = mysql_query("SELECT * FROM categorias where idcategoria=$anterior");
while($row = mysql_fetch_array($con)) {
$cat = $row['categoria'];
}

?>
<option value="<?=$cat?>" <?php if($cat == $categoria) echo "selected"; ?>><?=$cat?></option>
<?php

while ($row = mysql_fetch_row($res))
{
echo "<OPTION VALUE='$row[0]'>$row[1]</OPTION>";
}
echo "</SELECT> ";

echo"<input type=\"submit\" id=\"a\">"
. ""
."";
echo "<br>";
  #9 (permalink)  
Antiguo 30/09/2007, 17:30
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Re: Opcion por defecto en combobox

Código PHP:
<option value="<?=$cat?><?php if($cat == $categoria) echo "selected"?>><?=$cat?></option>
Ten en cuenta que con esto lo que estás enviando el nombre de la categoría mediante post no la id de la categoría.

option value="<?=$cat?>"


Creo, si no me equivoco que tendrías que poner
Código PHP:
option value="<?=$anterior?>"
Saludos
  #10 (permalink)  
Antiguo 30/09/2007, 18:32
 
Fecha de Ingreso: noviembre-2006
Mensajes: 38
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Opcion por defecto en combobox

Cita:
Iniciado por ESNOLA Ver Mensaje
Código PHP:
<option value="<?=$cat?><?php if($cat == $categoria) echo "selected"?>><?=$cat?></option>
Ten en cuenta que con esto lo que estás enviando el nombre de la categoría mediante post no la id de la categoría.

option value="<?=$cat?>"


Creo, si no me equivoco que tendrías que poner
Código PHP:
option value="<?=$anterior?>"
Saludos

No como me habias dicho funciona para lo que necesito. Muchas gracias.
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 11:45.