Foros del Web » Programando para Internet » Javascript »

Enviar valores relacionados desde un bucle

Estas en el tema de Enviar valores relacionados desde un bucle en el foro de Javascript en Foros del Web. Hola chicos. Tengo un script php que me genera una lista de personas registradas //mientras existe datos Código PHP: while ( $cientificosInfoR = mysql_fetch_array ( $cientificosInfo ...
  #1 (permalink)  
Antiguo 22/08/2007, 05:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
Enviar valores relacionados desde un bucle

Hola chicos.
Tengo un script php que me genera una lista de personas registradas

//mientras existe datos
Código PHP:
while ($cientificosInfoR=mysql_fetch_array($cientificosInfo)){
echo (
"
<input type='hidden' id='idUser[]'  value='"
.$cientificosInfoR['id_user']."' >
<input type='text' id='nombre[]'  value='"
.$cientificosInfoR['nombre']."'  onChange='changeName(this)' >
<input type='text' id='actividad[]'  value='"
.$cientificosInfoR['actividad']."'  onChange='changeAp(this)'> 
"
);

y me genera los datos en los campos input tipo text para que administrador tenga la posibilidad de editar los en cualquier momento.
Los datos salen de forma correcta asi
nomre1 apellidos1
nombre2 apellidos2
----------------------------
nombreN apellidosN

Quiero anadir a cada campo de texto funcion javascript con evento onChange para que este envia valor corriente del campo al script php (mediante AJAx).
Pero si podeis ver aparte de recibir el valor del nombre o apellido que la funcion lo recibe perfectamente nececito enviar tambien el valor id_user corriente de campo hidden en la misma funcion onChange='changeName(this)' o onChange='changeAp(this) segun el campo que decide editar el usuario.
Sin utilizar boton "submit"

YO recibo el valor a editar (sea nombre o apellidos) con la funcion
function changeName(nrol){

//recuperamos variable a editar
var dato=nrol.value;
}
pero tambien quiero recibir en esta fucnion el id de usuario para actulaizar datos en la DB.
Como puedo hacer esto?
  #2 (permalink)  
Antiguo 25/08/2007, 19:26
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Enviar valores relacionados desde un bucle

Hola viktoria:

Es recomendable no postear código PHP en el foro javascript, lo normal es publicar un código HTML de ejemplo para que podamos trabajar con él, avisándonos de que el número de conjuntos de 3 campos será dinámico.

Por otra parte te recuerdo que no es válido tener en un mismo documento elementos con el mismo atributo id, tendrás que utilizar por ejemplo name en su defecto.



Para obtener los ids se me ha ocurrido utilizar DOM (ya que siempre tendremos esa misma estructura):
Código PHP:
<form name="elForm">

    <
input type='hidden' name='idUser[]'  value='123' /> 
    <
input type='text' name='nombre[]'  value='cient1'  onchange='changeName(this)' />
    <
input type='text' name='actividad[]'  value='act1'  onchange='changeAp(this)' /> 
    <
br/>
    <
input type='hidden' name='idUser[]'  value='456' /> 
    <
input type='text' name='nombre[]'  value='cient2'  onchange='changeName(this)' />
    <
input type='text' name='actividad[]'  value='act2'  onchange='changeAp(this)' /> 
    <
br/>
    <
input type='hidden' name='idUser[]'  value='789' /> 
    <
input type='text' name='nombre[]'  value='cient3'  onchange='changeName(this)' />
    <
input type='text' name='actividad[]'  value='act2'  onchange='changeAp(this)' /> 

</
form>
<
script type="text/javascript">

function 
changeName(caja)    {
    
//su id lo tendrá el campo anterior en el esquema dom
    
var suId caja.previousSibling.previousSibling.value;
    
//recuperamos variable a editar
    
var dato=caja.value;
    
alert("Su valor es "+dato+" y su id es "+suId);
}

function 
changeAp(caja) {
    
}


</script> 
He hecho dos veces previousSibling porque el primero nos devuelve el espacio que hay entre las etiquetas, y el segundo ya llega al tag anterior a ese espacio, esto es, el campo hidden de cada conjunto. Sería más seguro ir hacia atrás con un while hasta que encontremos un campo de tipo hidden con el nombre igual a "idUser[]", pero me ha funcionado simplemente así en IE6 y FF2.

Ojo si varías la estructura.




Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 19:49.