Foros del Web » Programando para Internet » PHP »

Listas: Pasar elementos entre listas

Estas en el tema de Listas: Pasar elementos entre listas en el foro de PHP en Foros del Web. Hola a todos. Soy nuevo en esto de PHP y agradeceria me ayuden con una duda que tengo. En sintesis: tengo dos listas, una la ...
  #1 (permalink)  
Antiguo 05/05/2006, 17:36
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Listas: Pasar elementos entre listas

Hola a todos. Soy nuevo en esto de PHP y agradeceria me ayuden con una duda que tengo.
En sintesis: tengo dos listas, una la cargo de los datos leidos de una tabla mysql con datos de autores varios. La segunda la lleno de la seleccion que hago sobre la primera a través de un boton "pasar elemento". Pero una vez seleccionado los datos que necesito, no sé como recuperar los valores de la segunda lista y mandarlos a una tabla.

$resaut = mysql_query("select idautor,apellidonombre from maeautores where activo = 'A' order by apellidonombre");
echo "<SELECT name='lisautores' size=4 class='Cour12N' >";
While($row=mysql_fetch_array($resaut)) {
echo "<option value='".$row['idautor']."'>".$row['apellidonombre']."</option>";
}
echo "</SELECT>";
mysql_free_result($resaut);

Para pasar los elementos de una lista a la otra use javascript (quisiera hacerlo con PHP) aún asi no puedo recuperar los elementos de la segunda lista y mandarlos a una BD.

function selecciona_autores(){
//document.f1.selautores.length=100;
sTxt=document.f1.lisautores[document.f1.lisautores.selectedIndex].text
sVal=document.f1.lisautores[document.f1.lisautores.selectedIndex].value
var selOpcion=new Option(sTxt, sVal);
eval(document.f1.selautores.options[cuenta]=selOpcion);
document.f1.lisautores.remove([document.f1.lisautores.selectedIndex]);

cuenta++
}

como recupero los elementos seleccionados al PHP?? Desde ya gracias a Uds.
  #2 (permalink)  
Antiguo 05/05/2006, 21:04
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 12 años, 3 meses
Puntos: 54
esto tiene q ir dentro de un formulario, y este tiene dos formas de enviar los datos por method post (ocultos) o get (visibles en la barra de direccion)
en la pagina donde recibis los datos podes usar $_POST['nombre_variable'] en el caso q envies los datos por post y por get con $_GET['nombre_variable']
con esto recibis los datos en otra pagina y podras conservar estos valor y seguir procesando
saludos espero te sirva
  #3 (permalink)  
Antiguo 08/05/2006, 08:31
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
Gracias por tu respuesta, te cuento que en un formario puse:

$autores=$_POST["selautores"];

que es la lista con los datos seleccionados y luego hice:

for ($i=0;$i<count($autores);$i++)
{
echo "autores:".$autores[$i];
echo "<br>";
}

pero no me imprime los elementos de la lista.
Como puedo hacer para imprimirlos?
  #4 (permalink)  
Antiguo 08/05/2006, 08:43
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
¿Probaste hacer un print_r($_POST) para saber si los datos estan llegando correctamente?. Eso te va a imprimir todos los datos que fueron recibidos por post.
Saludos.
  #5 (permalink)  
Antiguo 08/05/2006, 09:18
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
acabo de probarlo, pero no me trae la variable $_POST(selautores). La incluyo dentro de la definición del formulario como &selautores=.$selautores pero sigo sin recibir los elementos seleccionados.
  #6 (permalink)  
Antiguo 08/05/2006, 09:25
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Pero, dentro de tu formulario, ¿hay algún elemento cuyo nombre es "selautores"?.

Código HTML:
<select name="selautores">
...
</select> 
Saludos.
  #7 (permalink)  
Antiguo 08/05/2006, 09:35
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
si, este es el script completo:

<HTML>
<BODY>

<?PHP
require("conect.inc");
$db = conectar();
if ($enviar) {

echo "<b class='Cour14'>TITULO 1</b><br>";
// $txtexpte es un valor que introduzco en un formulario anterior.
echo "<b class='Cour14'>VALOR Nº: ".$txtexpte. "</b></CENTER>";

$sql="select campo1 from tabla1 where campo1 = '$txtexpte";
$resultado=mysql_query($sql);
$tot_reg=mysql_num_rows($resultado);

if($tot_reg && $row=mysql_fetch_array($resultado)) {
echo "<center><H3>EL VALOR Nº: ".$txtexpte." SE ENCUENTRA YA REGISTRADO.</H3><br></center>"; }
else {
$txta="Ingrese aquí el texto del Expediente.";
// F O R M U L A R I O
echo "<FORM name=f1 METHOD='POST' ACTION='ins_expteresult2.php?txtexpte=".$txtexpte. "&selautores=".$selautores."'><br>";
echo "<textarea name='txta' cols='61' rows='4' wrap='on'
maxlength='120000' class='Cour12N'>$txta</textarea><br>";

// -- A U T O R E S --
echo "<table width=700>";
echo "<td width=250>";
echo "<div class='Cour12N'>SELECCIONE EL/LOS AUTORES</div>";
$resaut = mysql_query("select idautor,apellidonombre from maeautores where activo = 'A' order by apellidonombre");
echo "<label>";
echo "<SELECT name='lisautores' size=4 class='Cour12N' >";
while($row=mysql_fetch_array($resaut)) {
echo "<option value='".$row['idautor']."'>".$row['apellidonombre']."</option>";
}
echo "</SELECT></label></td>";
mysql_free_result($resaut);

?>
<td width=70>
<div align='center'><input name="pasar1" value=">>" type="button" onclick='selecciona_autores()'></div><br>
<div align='center'><input name="pasar2" value="<<" type="button" onclick='elimina_autores()'></div></td>
<td width=380><div class='Cour12N'>AUTORES SELECCIONADOS</div>
<select name='selautores' size=5 class='Cour12N'><option value="-"></option></select>
</td></tr></table>
<input name="enviadatos" value="Enviar Datos" type="submit">
</form>
<?
}
mysql_free_result($resultado);
}
?>
<head>
<script>
<!--
var cuenta=0
var cuentacomis=0

function selecciona_autores(){
//document.f1.selautores.length=100;
sTxt=document.f1.lisautores[document.f1.lisautores.selectedIndex].text
sVal=document.f1.lisautores[document.f1.lisautores.selectedIndex].value
var selOpcion=new Option(sTxt, sVal);
eval(document.f1.selautores.options[cuenta]=selOpcion);
document.f1.lisautores.remove([document.f1.lisautores.selectedIndex]);

cuenta++
}

function elimina_autores(){
sTxt=document.f1.selautores[document.f1.selautores.selectedIndex].text
sVal=document.f1.selautores[document.f1.selautores.selectedIndex].value
var selOpcion=new Option(sTxt, sVal);
eval(document.f1.lisautores.options[document.f1.lisautores.length]=selOpcion);
document.f1.selautores.remove([document.f1.selautores.selectedIndex]);
cuenta--
}

</script>
</head>

</body>
</html>


El formulario ins_expteresult2.php solo imprimirá los datos que previamente haya seleccionado.
  #8 (permalink)  
Antiguo 08/05/2006, 09:59
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Pero, ¿estas seleccionando algun dato de la lista?. Recordá que el datos que se enviá es sólo el que esta seleccionado. Si no seleccinas ninguna opcion de la lista, no va enviarse ningun valor.
Saludos.
  #9 (permalink)  
Antiguo 08/05/2006, 10:03
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
bueno, esa es la idea, de una lista (lisautores) selecciono los datos que necesito y los paso a la otra lista (selautores). Una vez con los datos seleccionados convoco un formulario para visualizar los datos.
Si defino a selautores como selautores[] podría tratar a selautores como un array pero el script de java no me funciona. Si lograra hacer esto, el problema estaría resuelto. Hasta ahora no pude.
  #10 (permalink)  
Antiguo 08/05/2006, 10:10
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
¿Y porque necesitas pasar los datos de un select a otro? ¿No es posible que el usuario seleccione los datos en un solo select?
Saludos.
  #11 (permalink)  
Antiguo 08/05/2006, 10:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
si, haciendo la lista como multiselect, pero en algunos casos los datos seleccionados pueden ser numerosos y en un ctrl+click mal presionado obligaria a realizar nuevamente la seleccion.
  #12 (permalink)  
Antiguo 08/05/2006, 10:31
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Bueno, ese problema ya no es de php. Como te dije antes, si queres que el script reciba los datos, TODOS tienen que estar seleccionados en la lista que mantiene las opciones elegidas. Si decis que a ese select no le podes dar el como nombre "select[]" para que sea tratado como un array, entonces no vas a poder recuperar los datos de esa lista. Podrias preguntar en el foro de javascript porque no te funciona tu script cuando utilizas ese tipo de nombres.
También se me ocurre que en lugar de un select múltiple, podrias utilizar checkboxs.
Saludos.
  #13 (permalink)  
Antiguo 08/05/2006, 10:36
 
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 11 años, 7 meses
Puntos: 0
De acuerdo

ok. Muchisimas gracias por todo y voy a seguir tu consejo en el foro de java.
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 07:29.