Foros del Web » Programando para Internet » PHP »

select option

Estas en el tema de select option en el foro de PHP en Foros del Web. Tengo un problema, cuando hago un select option con un select de mysql, y lo envio a un post. Cuando selecciono y le doy aceptar, ...
  #1 (permalink)  
Antiguo 29/05/2009, 02:15
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
select option

Tengo un problema, cuando hago un select option con un select de mysql, y lo envio a un post.

Cuando selecciono y le doy aceptar, me coge el dato bien, pero en el select, no permanece el que escrito, automaticamente cuadnoa cepto, pone el 1º de la seleccion de mysql.

hos enseño el codigo.

¿Seleccione el Servidor que quieres borrar?<br><br>
<? $codigo=$_SESSION[codigo_empresa]; $lista=mysql_query("select * from i_servidores WHERE codigo_empresa like'$codigo'", $link); ?>
<center>
<form action="borrarservidor.php" method="POST">
<select name="servidor[]">
<? while($row=mysql_fetch_array($lista)){ ?>
(CUANDO LE DOY ACEPTAR, TIENE QUE PERMANECER EL QUE YO E SELECCIONADO, EL 1º...)
<option value="<? echo $row['nombre_servidor']; ?>"><? echo $row['nombre_servidor']; ?></option><? } ?>
</select>&nbsp;&nbsp;&nbsp;<input type="submit" value="Aceptar" >
</form>
<?
$servidor=$_POST["servidor"];
for ($i=0;$i<count($servidor);$i++)
{
$servidor1=$servidor[$i];
echo "<br><br>¿Seguro que quieres borrar el Servidor, "; echo $servidor[$i]; echo "?"; ?>
<form method="POST" action="borrarservidor.php"><input type="hidden" value='<? echo $servidor1; ?>' name="servidor"><br>
<input type="submit" value=' SI ' name="si">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value='NO' name="no"></form>
<? }

ejemplo:

Hago un select, selecciono el nombre que quiero, le doy aceptar, y automaticamente, vuelve al primero en el select, y yo lo que quiero es qe me muestre el qeu e selecionado... y a su vez que me muestre los que hay en el select.

Última edición por davicito; 29/05/2009 a las 02:22
  #2 (permalink)  
Antiguo 29/05/2009, 02:28
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

Código PHP:
$servidor=$_POST["servidor"];  // esta la lees antes

//tu codigo...
<option value="<? echo $row['nombre_servidor']; if(in_array($row['nombre_servidor'], $servidor)) echo "selected=\"selected\"";?>"><? echo $row['nombre_servidor']; ?></option><? ?> 
// tu codigo ...
Chao!
  #3 (permalink)  
Antiguo 29/05/2009, 02:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

me da problemas el codigo...

Warning: in_array() [function.in-array]: Wrong datatype for second argument in D:\\AppServ\\www\\DATOS EMPRESA\\inventario\\borrarservidor.php on line 42
?
function.in-array]: Wrong datatype for second argument in D:\\AppServ\\www\\DATOS EMPRESA\\inventario\\borrarservidor.php on line 42
' name="servidor">


es del codigo:
<option value="<? echo $row['nombre_servidor']; if(in_array($row['nombre_servidor'], $servidor)) echo "selected=\"selected\"";?>"><? echo $row['nombre_servidor']; ?></option><? } ?>
  #4 (permalink)  
Antiguo 29/05/2009, 02:39
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

Ya... porque cuando entra el array no ha sifdo todavia enviado, prueba asì
Código PHP:
$servidor= isset($_POST["servidor"])? $_POST['servidor']:array();  // esta la lees antes

//tu codigo...
<option value="<? echo $row['nombre_servidor']; if(in_array($row['nombre_servidor'], $servidor)) echo "selected=\"selected\"";?>"><? echo $row['nombre_servidor']; ?></option><? ?> 
// tu codigo ...
  #5 (permalink)  
Antiguo 29/05/2009, 03:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

me coge eld ato, epro no me pone el 1º


hay algo raro, "selected=\"selected\"";


<? $codigo=$_SESSION[codigo_empresa]; $lista=mysql_query("select * from i_servidores WHERE codigo_empresa like'$codigo'", $link);

$servidor= isset($_POST["servidor"])? $_POST['servidor']:array(); ?>
<center>
<form action="borrarservidor.php" method="POST">
<select name="servidor[]">
<? while($row=mysql_fetch_array($lista)){ ?>


<option value="<? echo $row['nombre_servidor']; if(in_array($row['nombre_servidor'], $servidor)) echo "selected=\"selected\"";?>"><? echo $row['nombre_servidor']; ?></option><? } ?>



</select>&nbsp;&nbsp;&nbsp;<input type="submit" value="Aceptar" >
</form>
<?
for ($i=0;$i<count($servidor);$i++)
{
$servidor1=$servidor[$i];
echo "<br><br>¿Seguro que quieres borrar el Servidor, "; echo $servidor[$i]; echo "?"; ?>
<form method="POST" action="borrarservidor.php"><input type="hidden" value='<? echo $servidor1; ?>' name="servidor"><br>
<input type="submit" value=' SI ' name="si">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value='NO' name="no"></form>
  #6 (permalink)  
Antiguo 29/05/2009, 03:10
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

Cita:
no me pone el 1º
que significa?
Cita:
hay algo raro, "selected=\"selected\"";
esto viene imprimido solamente si la opcion del select esta contenida en el array que conserva los datos seleccionados antes del usuario. Es la sintax para seleccionar una voz dentro de un select: selected="selected"
  #7 (permalink)  
Antiguo 29/05/2009, 03:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

claro, por ejenmplo tengo uan lista.
1, 2, 3, 4

seleciono el 3, le doy aceptar y cuando le doy aceptar en la lista me marca el 1º de la lista., el 1 y yo kiero q me marque el que haya selecionado depsues de aceptar
  #8 (permalink)  
Antiguo 29/05/2009, 03:24
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

Asì me parece que deberia funccionar. Pero unas preguntas:
1 - Permites selecciones multiplas en la lista?
2 - Porque como value del tag options no pones un id en lugar de un nombre que puede tenere caracteres extranos?

Código PHP:
<?php

if(isset($_POST['servidor'])) $servidor $_POST['servidor'];
else 
$servidor = array();
 
$codigo=$_SESSION['codigo_empresa']; 
$lista=mysql_query("select * from i_servidores WHERE codigo_empresa like'$codigo'"$link);
?>
<center>
<form action="borrarservidor.php" method="POST">
<select name="servidor[]">
<? 
while($row=mysql_fetch_array($lista)){
 
$selected = (in_array($row['nombre_servidor'], $servidor))? "selected=\"selected\"":"";    
 echo 
"<option value=\"".$row['nombre_servidor']." $selected>".$row['nombre_servidor']."</option>";

?>
</select>&nbsp;&nbsp;&nbsp;<input type="submit" value="Aceptar" >
</form>
<?
for ($i=0;$i<count($servidor);$i++)
{
$servidor1=$servidor[$i];
echo 
"<br><br>¿Seguro que quieres borrar el Servidor, "; echo $servidor[$i]; echo "?"
?>
<form method="POST" action="borrarservidor.php"><input type="hidden" value='<? echo $servidor1?>' name="servidor"><br>
<input type="submit" value=' SI ' name="si">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value='NO' name="no"></form>
<? 
}
?>
  #9 (permalink)  
Antiguo 29/05/2009, 03:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

me estoy liando

Yo ahoramismo lo tengo así, me slae bien, lo unico que cuando le doy aceptar, no me muestra en el select, pero si me loc oge bien....

Seleccione el Servidor que quieres borrar<br><br>
<? $codigo=$_SESSION[codigo_empresa]; $lista=mysql_query("select * from i_servidores WHERE codigo_empresa like'$codigo'", $link); ?>
<center>
<form action="borrarservidor.php" method="POST">
<select name="servidor[]">
<option value="BIEN"></option>
<? while($row=mysql_fetch_array($lista)){ ?>
<option value="<? echo $row['nombre_servidor']; ?>"><? echo $row['nombre_servidor']; ?></option><? } ?>
</select>&nbsp;&nbsp;&nbsp;<input type="submit" value="Aceptar" >
</form>
<?
$servidor=$_POST["servidor"];
for ($i=0;$i<count($servidor);$i++)
{
$servidor1=$servidor[$i];
}
  #10 (permalink)  
Antiguo 29/05/2009, 03:45
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

Lo que te permite seleccionar lo que has elegido antes es esto:
Código PHP:
while($row=mysql_fetch_array($lista)){
 
$selected = (in_array($row['nombre_servidor'], $servidor))? "selected=\"selected\"":"";    
 echo 
"<option value=\"".$row['nombre_servidor']." $selected>".$row['nombre_servidor']."</option>";

Despues puedes meterlo como quieres. Pero lo fundamental es:
1 - Coger el valor de la variable (array) $_POST['servidor'] antes que emprimir el select, asì que se pueda ver por cada OPTION si su valor del attributo value està contenido en el array $_POST['servidor']. Es decir, por cada OPTION voy a verificar si esta misma opcion habia sido elegida del usuario cuando premio aceptar. Si la OPTION està contenida entonces hay que seleccionarla y se pone el attributo
selected="selected"
si no esta seleccionada no se pone nada.
  #11 (permalink)  
Antiguo 29/05/2009, 03:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

ok, voy aintentarlo, os dare noticias dentro de un rato :)
  #12 (permalink)  
Antiguo 29/05/2009, 03:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

asi si me funciona,

que os parece el codigo?

<? while($row=mysql_fetch_array($lista)){ ?>
<option value="<? echo $row['nombre_servidor']; ?>" <? if($servidor1==$row['nombre_servidor']) { echo" selected=\'selected'"; } ?>><? echo $row['nombre_servidor']; ?></option><? } ?>
  #13 (permalink)  
Antiguo 29/05/2009, 04:03
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

El codigo està bien, despues es una cuestion de propia preferencia. Yo por mi parte prefiero asì
Código PHP:
while($row=mysql_fetch_array($lista)){
 
$selected = (in_array($row['nombre_servidor'], $servidor))? "selected=\"selected\"":"";    
 echo 
"<option value=\"".$row['nombre_servidor']." $selected>".$row['nombre_servidor']."</option>";

solamente porque me parece mas ordenado y lo entiendo mejor sin abrir y cerrar continuamente el codigo php. Pero solo es personal, como uno prefiere.
Chao y buen dia.
  #14 (permalink)  
Antiguo 29/05/2009, 04:06
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

ya, eso es un error que tengo, no deberia de abrir y cerrar tanto php, hacerlo todo en php, con echo...

la verdad es que llevas razon
  #15 (permalink)  
Antiguo 29/05/2009, 04:21
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: select option

Si, tambien hay que decir una cosa:
En tu manera la creaccion de la pagina es mas rapida, o sea llamar muchisimas vezes la funcion echo cuesta mas en performance que hacer como haces tu.
Claro que si no se habla de un proyecto muy muy grande la diferencia ni se nota.
Un consejo:
como performance es mejor utilizar esta forma:
echo "primero","segundo","terzero";
que esta
echo "primero"."segundo"."terzero";
o esta:
echo "primero";
echo "segundo";
echo "terzero";
La primera forma es mas rapida!
Chao!
  #16 (permalink)  
Antiguo 29/05/2009, 04:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: select option

gracias tio. Lo are asi
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 05:27.