Foros del Web » Programando para Internet » Javascript »

Pasar variable javascript-php y variable string+número

Estas en el tema de Pasar variable javascript-php y variable string+número en el foro de Javascript en Foros del Web. Me explico: tengo un código con una variable php que quiero pasar a javascript. La variable es el número de formulario que tengo, habiando varios ...
  #1 (permalink)  
Antiguo 16/01/2008, 17:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Pasar variable javascript-php y variable string+número

Me explico: tengo un código con una variable php que quiero pasar a javascript. La variable es el número de formulario que tengo, habiando varios formularios que se general dinamicamente en funcion del número de registros en una tabla. Si hay 4 registros habrá 4 formularios de nombre User$i (la cabecera del form es del estilo <form name=User<?echo $i;?>>. Lo que yo quisiera es poder llamar en javascript a ese formulario para insertar, del modo document.User i.submit(); Como puedo hacerlo?

...

while ($r=mysql_fetch_array($result)) {
$nombre=utf8_encode($r['Name']);
$id=$r['Id'];
$tipo=$r['Type'];
$i++
?>
<script>
var i = <? echo $i;?>
</script>
<!--<a href='#' onclick="StylePropertyToogleById('ItemFormNew','di splay','none','');" <img src="Style/ButtonCreateUser.gif"></a>-->
<div class="ItemList User" id="ItemList<? echo $i;?>" onclick="StylePropertyToogleById('ItemForm<? echo $i;?>','display','none','');StyleClassToogleById(' ItemForm<? echo $i;?>','User','UserSelected')">
<div style="margin-left:20px; float:left"><? echo $nombre;?></div><div class="ButtonDelete" onclick="document.formulario.action = 'eliminarUser.php'; document.User var i.submit()";></div><div class="ButtonSave" onclick="document.formulario.action = 'window.parent.modificarUser.php'; document.formulario.submit()";></div>
</div>
<div class="ItemForm" id="ItemForm<? echo $i;?>" style="display:none">
<div class="TableMargin">
<form name="user<? echo $i;?>" action="users_server.php" method="post" accept-charset="UTF-8">

...


He puesto sólo la parte interesante del código. En negrita lo relativo a la pregunta. Paso la variable $i de PHP a JS en la primera negrita. En la segunda negrita quiero poner el User i para JS, del mismo modo que lo pongo en la tercera negrita para PHP. De este modo al pinchar en el botón me enviaría el formulario correspondiente.Alguna idea?
  #2 (permalink)  
Antiguo 16/01/2008, 19:10
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Pasar variable javascript-php y variable string+número

para mi, lo mejor seria que te crearas una funcion, ejemplo:
Código:
<script language="javascript">
function enviar(){
eval('document.User'+i+.'.submit()');
}
</script>
es posible que necesites pasar valores a la función, esto es solo para darte una idea.

suerte y saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 17/01/2008, 01:53
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Pasar variable javascript-php y variable string+número

Y para hacer lo mismo con "document.formulario.action = 'eliminarUser.php';? Sería:

eval('document.User'+i+'.action = eliminarUser.php');

habría algún problema con las comillas que había en 'eliminarUser.php'?.

En el código que pusiste creo que sobra el punto justo después del +, no?
  #4 (permalink)  
Antiguo 17/01/2008, 16:47
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Pasar variable javascript-php y variable string+número

Cita:
Iniciado por Mandete Ver Mensaje
En el código que pusiste creo que sobra el punto justo después del +, no?
si, error de dedo jeje
para el caso de las comillas puedes escaparlas o utilizar las dobles
Código:
eval('document.User'+i+'.action =\'eliminarUser.php\'');
ó
eval('document.User'+i+'.action = "eliminarUser.php"');
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 19/01/2008, 04:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Pasar variable javascript-php y variable string+número

Perfecto, pero ahora el problema es que el valor de la variable i en javascript siempre es el ultimo valor que haya tomado $i. Cuando pasco $i a i pongo un alert para comprobarlo y perfecto, imprime 1, luego 2, etc. Sin embargo al llamar al formulario siempre coge el último de todos, como si la i valiera el último valor de $i. Alguna idea?

Podria solucionarse poniendo en <form name=""> la variable en javascript en vez de la variable en php? Como se haría?

Última edición por Mandete; 19/01/2008 a las 04:39
  #6 (permalink)  
Antiguo 19/01/2008, 06:13
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Pasar variable javascript-php y variable string+número

Pásale el valor de i a la función

Código:
<script language="javascript">
function enviar(i){
eval('document.User'+i+.'.submit()');
}
</script>
Y en el código fuente haces una llamada a enviar(<? echo $i;?>)
__________________
Javascript Códigos - Bambú difunde
  #7 (permalink)  
Antiguo 19/01/2008, 13:37
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Pasar variable javascript-php y variable string+número

Ahora directamente no hace nada xD

La función que he creado (copiada tal cual de lo que pusiste)

Código:
<script language="javascript">
function enviar(i){
eval('document.User'+i+.'.submit()');
}
</script>

y la llamada:

Código:
<div class="ButtonDelete" onclick="enviar(<? echo $i;?>)";></div>
Hay algo mal ahi?
  #8 (permalink)  
Antiguo 19/01/2008, 13:44
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Pasar variable javascript-php y variable string+número

mmm fíjate que coincida exactamente con el nombre del formulario.

Según el código inicial que dejaste a cada form le asignas por nombre user<? echo $i;?> (con la u minúscula) cámbialo a minúscula en la función js

eval('document.user'+i+.'.submit()');

y nos cuentas
__________________
Javascript Códigos - Bambú difunde
  #9 (permalink)  
Antiguo 19/01/2008, 14:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Pasar variable javascript-php y variable string+número

ahora tenia el nombre del formulario en mayúsculas, por eso en la función era en mayúsculas.

Vuelvo a dejar el fragmento de código entero por si se os ocurre porque puede pasar del todo. El caso es que el submit fuera de la funcion si lo cogía, aunq mal claro (tomaba la i que no era), pero en la función nisiquiera hace nada :(

Código:
<script language="javascript">
function enviar(i){
eval('document.user'+i+.'.submit()');
}
</script>

[...]
	
	$i=0;
	while ($r=mysql_fetch_array($result)) {
		$nombre=utf8_encode($r['Name']);
		$id=$r['Id'];
		$tipo=$r['Type'];
		$i++
		?>
		
<script type="text/javascript">
var i = <? echo $i;?>;
alert(i);
</script>

	<div class="ItemList User" id="ItemList<? echo $i;?>" onclick="StylePropertyToogleById('ItemForm<? echo $i;?>','display','none','');StyleClassToogleById('ItemList<? echo $i;?>','User','UserSelected')">
    	<div style="margin-left:20px; float:left"><? echo $nombre;?></div>

		    <div class="ButtonDelete" onclick="enviar(<? echo $i;?>)";></div>
		<div class="ButtonSave"></div>
    </div>
    <div class="ItemForm" id="ItemForm<? echo $i;?>" style="display:none">
         <div class="TableMargin">
		 <form name="user<? echo $i;?>" action="prueba.php" method="post" accept-charset="UTF-8">
    		<table border="0" cellspacing="0" cellpadding="0">
				<tr>
					<input type="hidden" name="id" value="<? echo $id;?>" />
    	            <td>nombre:<br /><input class="TextFieldForm" id="" type="text" name="name" value="<? echo $nombre;?>"/></td>
			    	<td>administrador:<br /><input class="Checkbox" id="" name="type" type="checkbox" <? if ($tipo==1){ ?> checked <? } ?>/></td>
			    </tr>
				<tr>
		    		<td>contraseña:<br /><input class="TextFieldForm" id="" name="password" type="password"/></td>
			    </tr>
			</table>
			</form>
        </div> 
	</div>
<? } ?>

</div>
  #10 (permalink)  
Antiguo 20/01/2008, 05:29
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Pasar variable javascript-php y variable string+número

Hum ...hay un punto fuera de sitio aquí, elimínalo y me cuentas

eval('document.user'+i+.'.submit()');
__________________
Javascript Códigos - Bambú difunde
  #11 (permalink)  
Antiguo 20/01/2008, 17:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Pasar variable javascript-php y variable string+número

Funciona!!!. Dios que fallo más tonto, jajaja. El caso es que lo corregí cuando lo puse, pero después de hacer pruebas hice copypaste y lo volví a dejar mal xD.

Muchísimas gracias!!
  #12 (permalink)  
Antiguo 20/01/2008, 17:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Pasar variable javascript-php y variable string+número

Hola:

Nunca me ha gustado usar eval()...

Código:
document.forms["user" + i].submit();
Todo lo que se pone entre puntos (objetos/atributos) se puede poner como un array asociativo, o sea entre corchetes la cadena que representa el atributo. Y lo del forms es que me gusta a mi...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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:49.