Foros del Web » Programando para Internet » PHP »

duda con formulario dentro de bucle

Estas en el tema de duda con formulario dentro de bucle en el foro de PHP en Foros del Web. El caso es que hago el siguiente bucle con un formulario en el cual la direccion a redirigil la genero con los campos. Mi problema ...
  #1 (permalink)  
Antiguo 17/02/2005, 16:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 19 años, 10 meses
Puntos: 2
duda con formulario dentro de bucle

El caso es que hago el siguiente bucle con un formulario en el cual la direccion a redirigil la genero con los campos. Mi problema resulta que funciona para todos menos para el primero. he probado a poner echo cadena justo despues de crearla y me da valores correctos para todos pero a la hora de darle al boton que me genara para el primer elemento de la base de datos me redirige mal. Ya no se que hacer porque para todos los demas funciona perfectamente. alguien sabe porque puede ser? Alguien sabe una alternativa¿?

Código:
	 while ($row = mysql_fetch_array ($Consulta)) 
	 { 
		$cadena = '';
		 If ($row[0] =='A')
		 {
			 $row[0] ='Alumno';
		 }
		 If ($row[0] =='R')
		 {
			 $row[0] ='Administrador';
		 }
		 If ($row[0] =='P')
		 {
			 $row[0] ='Profesor';
		 }

print '	        <tr> ';
print '            <td align="center">&nbsp;</td>';
print '            <td >'.$row[2].' , '.$row[1].'</td>';
print '            <td align="center">'.$row[0].'</td>';
print '            <td align="center">'.$row[6].'</td>';

print '<td><div valign="bottom" align="center">';
$cadena ='resul.php?Dni='.$row[0].'&Nombre='.$row[1].'&Apellidos='.$row[2].'&Direccion='.$row[3].'&Nacimiento='.$row[4].';&Mobil='.$row[5].'&Email='.$row[6].'&Telefono='.$row[7].'&Tipo='.$row[8].'&Login='.$row[9].'&Pass='.$row[10].'&Alta='.$row[11].'Submit=Modificar';

print '<form name="form1" method="post" action="'.$cadena.'">';
print '<div valign="bottom" align="center"><input name="Modificar" type="submit" id="Modificar" value="Modificar"></div>';
print "</form>";
print '              </div></td>';
print '          </tr> ';
$i++;
}

Última edición por mickeyy; 17/02/2005 a las 18:22
  #2 (permalink)  
Antiguo 18/02/2005, 06:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No entiendo para que haces o te lias con:

Código PHP:
$cadena ='resul.php?Dni='.$row[0].'&Nombre='.$row[1].'&Apellidos='.$row[2].'&Direccion='.$row[3].'&Nacimiento='.$row[4].';&Mobil='.$row[5].'&Email='.$row[6].'&Telefono='.$row[7].'&Tipo='.$row[8].'&Login='.$row[9].'&Pass='.$row[10].'&Alta='.$row[11].'Submit=Modificar';

print 
'<form name="form1" method="post" action="'.$cadena.'">';
print 
'<div valign="bottom" align="center"><input name="Modificar" type="submit" id="Modificar" value="Modificar"></div>';
print 
"</form>"
En HTML .. en un formulario tienes los campos tipo hidden .. para "propagar" de forma oculta variables que ya tengas .. junto con otras que puedas tomar en ese mismo formulario:

Código PHP:
print '<form name="form1" method="post" action="resul.php">';
print 
'<input type="hidden" name="Dni" value="'.$row[0]."';
print '<div valign="
bottom" align="center"><input name="Modificar" type="submit" id="Modificar" value="Modificar"></div>';
print "
</form>"; 
Y así con todas ..

* Por lo demás se ven algunas cosas "raras" .. Propagas un "Login" y un "password" en el URL . .eso es altamente peligroso e inseguro .. USA sesiones para todo ese tipo de variables "delicadas" que tengas que ir pasando en tus scripts de tu aplicación para asegurar una autentificación.

En las FAQ's de este foro tienes ejemplos de uso de sesiones y también en:
www.php.net/session

Con las sesiones también podrías pasar todo ese montón de variables sin tener que usar campos hidden .. simplemente la creas en el script anterior y done las requieras las accedes sin más.

* Podrías usar un swicht() en lugar de tus N if() .. quedaría más claro tu código ...

* El uso que haces de "print" ... para cada LInea .. de HTML . .te vendría mejor usar sintax tipo:

Código PHP:
<form .. >
<input type="hidden" name="nose" value="<? echo $row[0?>"
etc ..

Por poner un ejemplo .. es decir, usar <? php ... ?> donde lo requieras y el HTML tal cual es con su sintax original .. Así hasta con editores visuales tipo "Dreamweaver" puedes ver como va quedando y diseñar ese "HTML" que tengas que usar cómodamente. Y menos trabajo para PHP al "parsear" tu script .. pues se va al grano (a donde digas <? ... ?>) a buscar algo de código PHP a interpretar.

Un saludo,
  #3 (permalink)  
Antiguo 19/02/2005, 05:56
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 19 años, 10 meses
Puntos: 2
ok muchas gracias por los consejos.
Gracias por la observacion del login pero es que eso justo que paso no es el login del usuario es de otros usuarios a modificar, es mas, el password no lo uso para nada, lo pase por mandar todos los datos. El password queda en la bd guardadito y para cambiarlos ni lo toco simplemente genero uno automaticamente que se le envia al correo al usuario.

otra cosa es que me tiene dudando. Lo que tu dices de eliminar los print, vale pero tengo una duda: si pongo

<? codigo ?>
html
<? codigo2 ?>
html

si realizo una operacion o creo variables en el primer bloque de codigo, seran visibles en el segundo bloque?
  #4 (permalink)  
Antiguo 19/02/2005, 07:05
 
Fecha de Ingreso: febrero-2005
Mensajes: 14
Antigüedad: 19 años, 2 meses
Puntos: 0
si, son visibles.

Lo que te comentaba cluster sobre mandar las variables por get, es muy importante: NUNCA MANDES DATOS IMPORTANTES POR GET. debes de tener en cuanta una cosa mandar un dato por get es como hacerlo publico para todo el mundo, y si pasas datos de login y contraseña, deberas de aceptar que es como si los publicases en un tablon de anuncios. MANDALOS COMO TE INDICA CLUSTER, por POST, esto es muy importante.

Un Saludo a tod@s.
  #5 (permalink)  
Antiguo 21/02/2005, 07:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por mickeyy
ok muchas gracias por los consejos.
Gracias por la observacion del login pero es que eso justo que paso no es el login del usuario es de otros usuarios a modificar, es mas, el password no lo uso para nada, lo pase por mandar todos los datos. El password queda en la bd guardadito y para cambiarlos ni lo toco simplemente genero uno automaticamente que se le envia al correo al usuario.

otra cosa es que me tiene dudando. Lo que tu dices de eliminar los print, vale pero tengo una duda: si pongo

<? codigo ?>
html
<? codigo2 ?>
html

si realizo una operacion o creo variables en el primer bloque de codigo, seran visibles en el segundo bloque?
Pues si ..

[quote]<?
$variable="nose";
?>
<html>
<head>
</head>
<body>
<? echo $variable ?>
</body>[/php]

Si tienes más dudas .. aclaralo con un ejemplo completo y concreto para ver como deberías enforcar el "orden" del código PHP/HTML.

Un saludo,
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 15:23.