Foros del Web » Programando para Internet » PHP »

PHP OO Array en campo SELECT de un formulario HTML

Estas en el tema de Array en campo SELECT de un formulario HTML en el foro de PHP en Foros del Web. Hola a todos, es la 2º vez en 2 días que tengo que plantearos otro problema... bien, os cuento de que va la historia. Se ...
  #1 (permalink)  
Antiguo 01/02/2011, 01:50
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Array en campo SELECT de un formulario HTML

Hola a todos, es la 2º vez en 2 días que tengo que plantearos otro problema... bien, os cuento de que va la historia.

Se trata de crear un formulario que edite un registro específico de una tabla, lo cual es relativamente fácil, con el añadido de un campo del tipo:

Código:
<select name="tema">
Pues bien, mi código para editar entradas específicas en una tabla, lo hago a través de una variable pasada por URL mediante GET, aquí el código completo:

Código PHP:
<? 
include("acceder.php");
//recibimos la variable id enviada en el enlace por GET 
$id=$_GET[id]; 
//conectamos a la base 
 
$connect=mysql_connect("LOCALHOST","USUARIO","CLAVE");
 
//Seleccionamos la base
 
mysql_select_db("BASE DE DATOS",$connect);
//hacemos las consultas 
$result=mysql_query("select * from eventos where id_evento='$id'",$connect); 
//Una vez seleccionados los registros los mostramos para su edici�n 
while($row=mysql_fetch_array($result)) 

echo 
'<div class="NewsItem" align="left">
                    <h2 class="NewsTitle"><font size="5">EDITANDO EVENTO</font></h2><br>
                    <p class="NewsPost" align="left"><form action="editando_evento.php" method="post"> 
                    <table class="NewsPost"  border="0" width="100%" height="18" bgcolor="#000000">
            <tr>
                <td height="18" width="100%" align="left">
<input type="hidden" name="id" value="'
.$row[id_evento].'">
Tema:<br> 
                        
            
            <select name="tema">
            <option selected="selected">Fantasy</option>
            <option>40k</option>
            <option>ESDLA-rol</option>
            <option>Zombieland-rol</option>
            <option>Fantasy-rol</option>
            <option>40k-rol</option>
            </select>
<br>
        Titular:<br>
        <input type="text" name="titulo" value="'
.$row[titulo].'"><br>
        Autor:<br>
        <input type="text" name="autor" value="'
.$row[autor].'"><br>
        Fecha:<br>
        <input type="text" name="dia" value="'
.$row[dia].'"><br>
        Requisitos:<br>
        <input type="text" name="requisitos" value="'
.$row[requisitos].'"><br>
<br> <br>
Escribe un breve texto inicial:<br> 
<Textarea name="resumen" cols="25" rows="4">'
.$row[resumen].'</Textarea> 
<br> <br>
Contenido:<br> 
<Textarea name="contenido" cols="50" rows="10">'
.$row[contenido].'</Textarea>
<br> 
<input type="submit" value="Editar"><br> 
</td></tr></table></form></p></div>'
;


?>
Como podéis ver, todo es dinámico excepto el siguiente trozo:

Código PHP:
<select name="tema">
            <
option selected="selected">Fantasy</option>
            <
option>40k</option>
            <
option>ESDLA-rol</option>
            <
option>Zombieland-rol</option>
            <
option>Fantasy-rol</option>
            <
option>40k-rol</option>
</
select
Lo que quiero, es saber de que forma puedo sacar un array que me muestre las opciones que he puesto, si necesito crear una nueva tabla para hacerlo, que me salga seleccionada la opción que ya había seleccionado con anterioridad.

Todo ésto se debe a que cuando edito un nuevo artículo, tengo que seleccionar de nuevo el tema para que lo vuelva a reinsertar, sino me reinsertará el que está por defecto que en este caso es Fantasy.

No sé si me he explicado con claridad, cualquier duda sobre el planteamiento que os he expuesto, hacédmela saber para dejarlo todo claro y sacar una solución a este lio.
  #2 (permalink)  
Antiguo 01/02/2011, 04:11
 
Fecha de Ingreso: enero-2007
Mensajes: 146
Antigüedad: 17 años, 3 meses
Puntos: 16
Respuesta: Array en campo SELECT de un formulario HTML

Lo que tienes que hacer es guardar el valor del Tema seleccionado. Para ello, a cada "option" deberías asignarle un value="valor" quedando algo del tipo:
Código PHP:
Ver original
  1. <select name="tema">
  2.             <option selected="selected" value="Fantasy">Fantasy</option>
  3.             <option value="40k">40k</option>
  4.             <option value="ESDLA-rol">ESDLA-rol</option>
  5.             <option value="Zombieland-rol">Zombieland-rol</option>
  6.             <option value="Fantasy-rol">Fantasy-rol</option>
  7.             <option value="40k-rol">40k-rol</option>
  8. </select>

Para obtener el dato, como envías el formulario mediante POST, un simple $_POST['tema'] te devuelve el valor de la opción seleccionada.

Por otro lado es lógico que te aparezca siempre seleccionado Fantasy, ya que es el que está marcado como "selected".

Por último, para que cuando edites aparezca seleccionada la opción que guardaste, puedes hacer lo siguiente:
Código PHP:
Ver original
  1. <select name="tema">
  2.             <option value="Fantasy"<?=($row['tema']=='Fantasy')?' selected="selected"':''?>>Fantasy</option>
  3.             <option value="40k"<?=($row['tema']=='40k')?' selected="selected"':''?>>40k</option>
  4.             <option value="ESDLA-rol"<?=($row['tema']=='ESDLA-rol')?' selected="selected"':''?>>ESDLA-rol</option>
  5.             <option value="Zombieland-rol"<?=($row['tema']=='Zombieland-rol')?' selected="selected"':''?>>Zombieland-rol</option>
  6.             <option value="Fantasy-rol"<?=($row['tema']=='Fantasy-rol')?' selected="selected"':''?>>Fantasy-rol</option>
  7.             <option value="40k-rol"<?=($row['tema']=='40k-rol')?' selected="selected"':''?>>40k-rol</option>
  8. </select>
La solución es algo rudimentaria, ya que para combos de muchos elementos, el trabajo sería tedioso. Una solución más práctica sería, por ejemplo, marcar como seleccionado con javascript (el que esté almacenado en la BBDD) una vez terminada de cargar la página.
  #3 (permalink)  
Antiguo 01/02/2011, 06:21
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Respuesta: Array en campo SELECT de un formulario HTML

Muchas gracias WeSoRz, voy a probarlo ahora mismo y te comento como me fué la jugada.
  #4 (permalink)  
Antiguo 01/02/2011, 06:29
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Respuesta: Array en campo SELECT de un formulario HTML

Bueno, me da el siguiente error:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/a1919488/public_html/administrar/ARCHIVO.php on line 25

El error está justo en la línea que empieza en la línea:

Código:
<option value="Fantasy"<?=($row['tema']=='Fantasy')?' selected="selected"':''?>>Fantasy</option>
Creo que el error está en la forma de llamar a los $rom['celda'], ya que todo este HTML está dentro de un echo, el cual puede verse sobrepasado por tanto código por medio, así que voy a probar pasando lo que está entre <? ?> a variables, a ver si así funciona.

Ahora te comento.
  #5 (permalink)  
Antiguo 01/02/2011, 06:36
 
Fecha de Ingreso: enero-2007
Mensajes: 146
Antigüedad: 17 años, 3 meses
Puntos: 16
Respuesta: Array en campo SELECT de un formulario HTML

Ese error es de una cadena mal cerrada. Si como me comentas que está todo dentro de un echo, lo que tendrías que hacer es cambiar esa sintaxis por algo tipo:
Código PHP:
Ver original
  1. <option value="Fantasy"' . (($row['tema']=='Fantasy')?' selected="selected"':'') . '>Fantasy</option>
O esto último o lo que comentas.
Yo personalmente recomiendo utilizar <?php ?> cuando se trabaja con HTML. Los echo para mensajes planos o como mucho etiquetas html cortas, como pudiera ser un hipervínculo.
  #6 (permalink)  
Antiguo 01/02/2011, 07:01
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Respuesta: Array en campo SELECT de un formulario HTML

He probado a definir las siguientes variables:

Código PHP:
$Fantasy==($row['tema']=='Fantasy')?' selected="selected"':'';
$
40k==($row['tema']=='40k')?' selected="selected"':'';
$ESDLA-rol==($row['tema']=='ESDLA-rol')?' selected="selected"':'';
$Zombieland-rol==($row['tema']=='Zombieland-rol')?' selected="selected"':'';
$Fantasy-rol==($row['tema']=='Fantasy-rol')?' selected="selected"':'';
$
40k-rol==($row['tema']=='40k-rol')?' selected="selected"':''
Aplicando luego el siguiente código:

Código HTML:
<select name="tema">            
<option value="Fantasy" $Fantasy>Fantasy</option>            
<option value="40k" $40k>40k</option>            
<option value="ESDLA-rol" $ESDLA-rol>ESDLA-rol</option>            
<option value="Zombieland-rol" $Zombieland-rol>Zombieland-rol</option>            
<option value="Fantasy-rol" $Fantasy-rol>Fantasy-rol</option>            
<option value="40k-rol" $40k-rol>40k-rol</option>
</select> 
Y me da error:

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /home/a1919488/public_html/administrar/ARCHIVO.php on line 13

Por si no he hecho bien el tema de las variables, cambié las etiquetas:

<? y ?> por <?PHP y ?>, y también por .' y '. pero sin resultados.

¿Alguna idea? se mezcla de mala manera el script con el codigo html y el navegador interpreta que la ?> cierra el option en vez del PHP, ¿Alguna sugerencia?
  #7 (permalink)  
Antiguo 01/02/2011, 07:05
 
Fecha de Ingreso: enero-2007
Mensajes: 146
Antigüedad: 17 años, 3 meses
Puntos: 16
Respuesta: Array en campo SELECT de un formulario HTML

Cita:
Iniciado por Malekith Ver Mensaje
He probado a definir las siguientes variables:

$Fantasy==($row['tema']=='Fantasy')?' selected="selected"':'';
$40k==($row['tema']=='40k')?' selected="selected"':'';
$ESDLA-rol==($row['tema']=='ESDLA-rol')?' selected="selected"':'';
$Zombieland-rol==($row['tema']=='Zombieland-rol')?' selected="selected"':'';
$Fantasy-rol==($row['tema']=='Fantasy-rol')?' selected="selected"':'';
$40k-rol==($row['tema']=='40k-rol')?' selected="selected"':'';
Esto está mal definido. Es un igual simple, en lugar de doble ya que se asigna un valor, no se trata de una comparación.
  #8 (permalink)  
Antiguo 01/02/2011, 07:07
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Respuesta: Array en campo SELECT de un formulario HTML

Por fin:

Código PHP:
<select name="tema">            
<
option value="Fantasy"' . (($row['tema']=='Fantasy')?' selected="selected"':'') . '>Fantasy</option>          
<
option value="40k"' . (($row['tema']=='40k')?' selected="selected"':'') . '>40k</option>        
<
option value="ESDLA-rol"' . (($row['tema']=='ESDLA-rol')?' selected="selected"':'') . '>ESDLA-rol</option>            
<
option value="Zombieland-rol"' . (($row['tema']=='Zombieland-rol')?' selected="selected"':'') . '>Zombieland-rol</option>            
<
option value="Fantasy-rol"' . (($row['tema']=='Fantasy-rol')?' selected="selected"':'') . '>Fantasy-rol</option>            
<
option value="40k-rol" ' . (($row['tema']=='40k-rol')?' selected="selected"':'') . '>40k-rol</option>
</
select
Va como la seda, ni un error.

Ahora, otro tema, lo de la cadena mal cerrada, no sé de donde puede venir... revisaré a fondo el script a ver que no he cerrado bien.
  #9 (permalink)  
Antiguo 01/02/2011, 07:09
 
Fecha de Ingreso: enero-2007
Mensajes: 146
Antigüedad: 17 años, 3 meses
Puntos: 16
Respuesta: Array en campo SELECT de un formulario HTML

Mira mi post anterior :)
  #10 (permalink)  
Antiguo 01/02/2011, 07:43
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Respuesta: Array en campo SELECT de un formulario HTML

Si, acabo de verlo ^^, lo probé con un = y == (por si las moscas ya que nunca he entendido muy bien la diferencia), pero me seguía mostrando error.

Mi siguiente reto es crear una galería de imágenes que me permita subir las mismas mediante el navegador, y que haga un array de las imágenes subidas en la carpeta de la galería, que las redimensione y las muestre divididas en 3 columnas.

Espero no tener muchos problemas, y si me paso por aquí sea para echar un cable a alguien en vez de que me lo echen a mi.

Gracias wesorz ;)
  #11 (permalink)  
Antiguo 01/02/2011, 14:24
 
Fecha de Ingreso: enero-2007
Mensajes: 146
Antigüedad: 17 años, 3 meses
Puntos: 16
Respuesta: Array en campo SELECT de un formulario HTML

De nada, pese a que llevo un par de días activo (después de 3 años de registro), espero estar a partir de ahora un poco más dedicado a ayudar en la medida que pueda :)

Etiquetas: html, select, formulario, campos
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 21:48.