Foros del Web » Programando para Internet » Javascript »

Leer lista

Estas en el tema de Leer lista en el foro de Javascript en Foros del Web. Hola he hecho un pequeño script para agregar e-mails a una lista desde JavaScript el asunto es que el usuario pueda agregar e-mails a una ...
  #1 (permalink)  
Antiguo 12/10/2005, 10:48
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 20 años, 3 meses
Puntos: 0
Leer lista

Hola he hecho un pequeño script para agregar e-mails a una lista desde JavaScript el asunto es que el usuario pueda agregar e-mails a una lista y al enviar el formulario un codigo en PHP debe leer los e-mails puestos.
Pero cuando hago todo solo me lee el ultimo ingreso.
Adjunto el codigo del JS y del PHP
Código:
/*Código JS
recibe la referencia de un campo de texto y de una lista a la cual se le va a agregar el elemento
*/
function agregaMail(txt,lst){
var nCorreo = txt.value;
var canti = lst.length
lst[canti] = new Option(nCorreo,nCorreo,"defaultSelected","selected");
txt.value = "";
}
El PHP es asi:
Código:
$amigos = explode(",",$_POST["amigos"]);
for($i=0; $i<=count($amigos);$i++){
	echo $amigos[$i]."<br>";
}
Pero solo me imprime el último elemento ingresado.... alguien sabe como se puede solucionar?
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]
  #2 (permalink)  
Antiguo 12/10/2005, 13:31
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Qué tal,

a php le llegará el valor del elemento que etuviera seleccionado en el momento de enviar el formulario. ¿Te hace lo mismo con múltiples selecciones en el campo?
  #3 (permalink)  
Antiguo 12/10/2005, 14:22
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 20 años, 3 meses
Puntos: 0
Nupo...como te digo, solo recibe el último elemento. Sabes como se puede hacer para que reciba todos los elementos de la lista.
Debe existir alguna manera porque cuando imprimo directamente el valor recibido en PHP me indica que es un array.
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]
  #4 (permalink)  
Antiguo 12/10/2005, 15:40
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
¿Yá le agregas los corchetes al nombre del campo?

<select name="nombreSelect[]">
  #5 (permalink)  
Antiguo 12/10/2005, 16:41
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 20 años, 3 meses
Puntos: 0
Y como lo recibo?

Pero como lo recibo en el metodo porque al referenciarlo con los [] me da error de sintaxis en JS
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]
  #6 (permalink)  
Antiguo 12/10/2005, 16:45
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Accede al campo usando su id que no llevará los corchetes

<select name="nombreSelect[]" id="idSelect">

Puedes acceder entonces a él usando el método getElementById()
  #7 (permalink)  
Antiguo 12/10/2005, 17:00
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 20 años, 3 meses
Puntos: 0
Ta x salir

A ver... ya recibe bien los campos pero al ser enviado el formulario. PHP lo no me devuelve los values. Por el contrario me da vacio. :S
Código:
/*Esta es mi funcion*/
function agregaMail(txt,lst){
	if( validaMail(txt) ){
		var nCorreo = txt.value;
		var canti = lst.length
		lst[canti] = new Option(nCorreo,nCorreo,"defaultSelected","selected");
		txt.value = "";
	}
}
y mi nuevo PHP es:
Código:
$amigos = explode(",",$_POST["amigos[]"]);
echo count($amigos)."<br>"; // <<< --- Ponga la cantidad que sea me devuelve 1
for($i=0; $i<=count($amigos);$i++){
	echo "Es".$amigos[$i]."<br>"; 
}
/* Solo me imprime:
Es
Es
*/
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]
  #8 (permalink)  
Antiguo 12/10/2005, 17:56
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Hum ... por qué no pruebas a pedírselo así

Código:
foreach($_POST["amigos[]"] as $amigo => $correo){
     echo "Es". $correo. "<br />";
     }
  #9 (permalink)  
Antiguo 13/10/2005, 00:57
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 20 años, 3 meses
Puntos: 0
sory la demora...me sige dando error
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]
  #10 (permalink)  
Antiguo 14/10/2005, 12:23
Avatar de wcfenix  
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 168
Antigüedad: 20 años, 3 meses
Puntos: 0
Solucion

Hola ya logre lo que queria. Pero no de la forma convencional (enviando todo el arreglo de elementos en la lista) tuve que hacer otra variable invisible que almacene elemento a elemento y los separe x comas (,) incluse tuve que modificar la funcion para borrar elementos de la lista.
Mi script de PHP lee esta variable y realiza un explode teniendo en cuenta las comas para almacenarlo en un arreglo y hacer lo que desee con los datos.
Adjunto ambos codigos.
Códigos en JS
Código:
/* Agregamos un elemento insertado en una lista
param txt = referencia al campo de texto que vamos a insertar.
lst = referencia a la lista donde vamos a insertar los elementos
ocu = referencia a la variable oculta donde realmente guardaremos los datos
*/
function agregaMail(txt,lst,ocu){
/*No anexo el metodo validaMail pues solo valida los e-mails devuelve true si es correcto*/
	if( validaMail(txt) ){
		var nCorreo = txt.value;
		var canti = lst.length
	// Agregamos a la lista
		lst[canti] = new Option(nCorreo,nCorreo,"defaultSelected","selected");
		txt.value = "";
	//Agregamos un valor al campo oculto
		var tempi = ocu.value;
//Si es el primer valor
		if(tempi.length < 3) {
			tempi = nCorreo;
		} else {
			tempi += ","+nCorreo;
		}
		ocu.value = tempi;
	}
}

/* Funcion para eliminar 
lst = referencia a la lista donde vamos a eliminar el elemento seleccionado
ocu = referencia al campo oculto que recibira el formulario
*/
function borrarCorreo(lst,ocu) {
	if (lst.selectedIndex >= 0) {
		lst.options[lst.selectedIndex] = null;
		lst.selectedIndex=0;
		var total = "";
		for(i=0; i<lst.length;i++){
			var actual = lst.options[i].value;
			if( total.length < 3 ){
				total = actual;
			} else {
				total += ","+actual;
			}
		}
		ocu.value = total;
	} else {
		alert("No hay elementos seleccionados.");
	}
}
y bueno si desean... el PHP que recibe empieza asi.
Código:
$amigos = explode(",",$_POST["correos"]);

$correos = "";
for($i=0; $i < count($amigos);$i++){
//Verificamos el valor que ha recibido
	echo "Es ".$amigos[$i]."<br>";
}
Gracias por la ayuda.
Cuando publiquen la web mando la direccion
Gracias tuanit
__________________
"No te preocupes si no funciona bien. Si todo estuviera correcto, serías despedido de tu trabajo" - Ley de mosher
Blog [ http://www.tecnoaventuras.com ]
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 01:13.