Foros del Web » Programando para Internet » PHP »

Problema importante al pasar las variables a un formulario

Estas en el tema de Problema importante al pasar las variables a un formulario en el foro de PHP en Foros del Web. Buenas Tardes !!!! Mi problema es el siguiente : tengo un formulario con algun campo obligatorio , el objetivo es que el usuario rellene los ...
  #1 (permalink)  
Antiguo 10/12/2008, 09:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 19
Antigüedad: 15 años, 10 meses
Puntos: 0
Pregunta Problema importante al pasar las variables a un formulario

Buenas Tardes !!!! Mi problema es el siguiente : tengo un formulario con algun campo obligatorio , el objetivo es que el usuario rellene los campos i al enviar la informacion le sale un mensaje de los campos que le faltan (esto funciona correctamente) el problema es que quiero que la informacion que ha introducido el usuario no se pierda por lo que la guardo en variable i la paso por URL , esto tambiem me lo pasa correctamente ... Pero al volver al formulario con el mensaje d'error ya impreso no me muestra los datos . Alguien me puede ayudar ?? Posteo el codigo de los 3 archivo principales.

Perfil_registre.php :

Este fitxero es el accion del formulario , hago la validacion de los campos que quiero i luego la redireccion con los campos pasados como parametros

$pagina_error="http://etc.uab.cat/habitatge.php?file=perfils";

if($_GET["mode"]=="segur" && $_SESSION["php_captcha"]!=strtoupper($_POST["codi_cap"])){
AfegirMissatge("<div class='$classe_feedback_ko'>".w_introduir_codi_ima tge."</div>");
$validacio = 1;
}
if($_GET["normes"]=="segur" and $_POST["accepta_normes"]!="1") {
AfegirMissatge("<div class='$classe_feedback_ko'>".w_acceptar_normes."</div>");
$validacio = 1;
}
if ($validacio == 1) {
$ok = 1;
header("location: ".$pagina_error."&ok=$ok&sexe=$sexe&edad=$edad&fum ador=$adiccio&estu=$tipus_preu&pobl=$poblacio&pres sup=$pressupost");
exit;
}


Perfils.php :

Aqui es donde esta el formulario , este trozo , es el que dudo , quando me devuelve la variable ok = 1 , que haga la assignacion siguiente no?

if($_GET['ok'] = 1) {

$sexe = $_GET['sexe'];
$edad = $_GET['edad'];
$adiccio = $_GET['fumador'];
$tipus_preu = $_GET['estu'];
$poblacio = $_GET['pobl'];
$pressupost = $_GET['pressup'];
}


Habitatge.php

Este es el fitxero principal donde tengo el switch con todos los fitxeros

switch($_REQUEST["file"])
{
case "cerca_avancada": $include_fitxer = "habitatge/cerca_avancada.php"; break;
case "cercador": $include_fitxer = "habitatge/cercador.php"; break;
case "perfils": $include_fitxer = "habitatge/perfils.php"; break;
default: $include_fitxer = "habitatge/inici.php"; break;
}


MUchissimas gracias de antemano ...
  #2 (permalink)  
Antiguo 10/12/2008, 09:18
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Problema importante al pasar las variables a un formulario

recuerda que cuando recoges una variable tienes que preguntar si existe....

en vez de hacerlo asi:
if($_GET['ok'] = 1) {
hazlo asi:
if(isset($_GET['ok']) = 1) {


y por ultimo... te falta mas codigo como la asignacion a las cajas de texto.....

bueno esper haberte ayudado en algo.... suerte.

Dios te Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 10/12/2008, 09:24
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Problema importante al pasar las variables a un formulario

A ver...

De partida, pasar todos los datos de vuelta a la pagina del formulario vía GET no es una buena practica. Primero, porque los datos quedan visibles y segundo, porque pasar parámetros a través de la URL tiene un limite.

La solución seria que una misma pagina mostrara el formulario y lo procesara.

Entonces, tu formulario enviaría los datos a si misma usando el método post, y al principio de esta pagina tu verificas si efectivamente existen datos enviados, haciendo algo como:

Código PHP:
if(!empty($_POST)) {
    
// aqui proceso el formulario

Si no hay datos, entonces simplemente pasas.

Ahora para mostrar los datos ingresados por el usuario, a cada input de tu formulario le asignas el valor que fue enviado mediante el metodo post:
Código PHP:
<input type="text" name="edad" value="<?php echo $_POST['edad']; ?>" />
Encuentro que es la manera mas facil y segura. Otra solucion, seria adaptar lo que tienes actualmente y en la pagina que procesa tu formulario, guardas los datos enviados en variables de sesion, asi, cuando ocurra algun error, redireccionas a la pagina anterior e imprimes esas variables. Despues si el formulario es correcto, eliminas las variables de sesion.
__________________
KIBIT.cl
  #4 (permalink)  
Antiguo 10/12/2008, 09:25
 
Fecha de Ingreso: mayo-2008
Mensajes: 19
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema importante al pasar las variables a un formulario

Lo he provado i nada , no funciona , mi otra pregunta es si la comprobacion de la variable $ok , que lo hago en perfils.php que es donde tengo el formulario o en habitatge , lo digo porque tengo un switch que hace el include ...

if(isset($_GET['ok']) == 1) {

$sexe = $_GET['sexe'];
$edad = $_GET['edad'];
$adiccio = $_GET['fumador'];
$tipus_preu = $_GET['estu'];
$poblacio = $_GET['pobl'];
$pressupost = $_GET['pressup'];
$preu_p = $_GET['titul'];
}

esto tampoco funciona , si faltan campos los saco para eliminar codigo .

Muchas gracias de antemano
  #5 (permalink)  
Antiguo 10/12/2008, 09:31
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Problema importante al pasar las variables a un formulario

por que no le das un:
print_r($_REQUEST);

para que veas que estas recogiendo........
quizas no recoges ninguna variable???

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 10/12/2008, 09:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 19
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema importante al pasar las variables a un formulario

Si , si esto lo he probado ... las variables se recogen perfectament , es a la hora de assignarlas a sus casillas , alguna pijada de error tendre porque no lo entiendo :(

Voy a postear el formulario i la inicialicacion a ver si alguien ve alguna tonteria :

if(isset($_GET['ok']) == 1) {

$sexe = $_GET['sexe'];
$edad = $_GET['edad'];
$adiccio = $_GET['fumador'];
$tipus_preu = $_GET['estu'];
$poblacio = $_GET['pobl'];
$pressupost = $_GET['pressup'];
$preu_p = $_GET['titul'];
$entrada = $_GET['entrada'];
$sortida = $_GET['sortida'];
$email = $_GET['mail'];
$telefon = $_GET['telf'];
$observacion = $_GET['obs'];
$ip = $_GET['ip'];
$data = $_GET['data'];
}

Formulario :

<form name="f1" id="f1" action="perfils_registre.php?<?php echo $seguretat;?>" method="post" enctype="multipart/form-data">
<table class="formulari">
<tr class="a_dalt">
<td class="a_dreta" width="159"><div class="taronja_1 negreta petit_1">Sexe:</div></td>
<td width="448"><input type="radio" name="sexe" id="home" value="m"/>
Home
<input type="radio" name="sexe" id="dona" value="f" checked="checked" />
Dona</td>
</tr>
<tr>
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Edat:</div></td>
<td><select name="edad">
<option value="18-20">18-20 </option>
<option value="21-23">21-23 </option>
<option value="24-26">24-26 </option>
<option value="+27">27 o m&eacute;s </option>
</select>
</td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Fumador/a</div></td>
<td><input type="radio" name="adiccio" id="fumador" value="s" />
Si
<input type="radio" name="adiccio" id="no_fumador" value="n" checked="checked" />
No</td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Estudiant</div></td>
<td><input type="radio" name="tipus_preu" value="s" onclick="mostrar_preu()" />Si
<input type="radio" name="tipus_preu" value="n" checked="checked"/>No</td></tr>
<tr>
<td>&nbsp;</td>
<td colspan="3">
<div class="no_screen" id="preu_orientatiu">
Titulacio:
<?php
$PRconn = &ADONewConnection('mysql');
$PRconn->Connect'); //es connecta a la BD
$PRconn->SetFetchMode(ADODB_FETCH_BOTH);

$result = $PRconn->Execute("select NomTitCurt from dicTitulacions");
?>
<select name="preu_p">
<?
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
$prova = $result->fields[$i].' ';
$result->MoveNext();
?>
<option value="<? print $prova;?>"><? print $prova;?></option>
<?

}
?>
</select>
</div>
</td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Poblaci&oacute;:</div></td>
<td><label>
<input type="text" name="poblacio" id="poblacio" />
</label></td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Pressupost Mensual</div></td>
<td><label>
<input type="text" name="pressupost" size="4" maxlength="4" />
&euro;</label></td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Estada:</div></td>
<td><label for="popup1">Data Entrada</label>
<input id="popup_container" type="text" name="entrada" />
<label for="popup2">Data Sortida</label>
<input id="popup_container2" type="text" name="sortida" /></td>
</tr>

<tr>
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Email:</div></td>
<td><label>
<input type="text" name="email" />
</label>
</td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Tel&egrave;fon (facilitar contacte)</div></td>
<td><label>
<input type="text" name="telefon" size="9" maxlength="9" />
</label></td>
</tr>
<tr class="a_dalt">
<td class="a_dreta"><div class="taronja_1 negreta petit_1">Observacions</div></td>
<td><label>
<textarea name="observacions" cols="45" rows="5"></textarea>
</label></td>
</tr>
<tr>
<td></td>
<td><table><tr><td><?php f_insereix_captcha(110, 40, "include/captcha/"); ?></td><td valign="middle" style="width:200px;"><div class="x_espaiat"><?php echo w_copia_codi_requadre; ?></div></td></tr></table>
</tr>
<tr>

<td class="a_dreta"><div class="xxx_per_sota x_per_dreta taronja_1 negreta"><?php echo w_escriviu_codi; ?> *</div></td>
<td><input name="codi_cap" id="codi_cap" type="text" class="xxx_per_sota"></td>
</tr>

<tr>
<td class="a_dreta"><input type="checkbox" name="accepta_normes" id="accepta_normes" value="off" class="x_per_sota" /></td>
<td><div class="taronja_1 negreta petit_1 x_per_sota"><?php echo w_llegit_accepto; ?> <a href="#" onClick="javascript:popup('normes-publicacio-anuncis.php','_blank','status=no,scrollbars=yes',5 00,400,true);" style="cursor: pointer;"><?php echo w_normes_publicacio;?></a> * </div></td>
</tr>
<tr class="a_dalt">
<td class="a_dreta">&nbsp;</td>
<td><span class="taronja_1"><em><?php echo w_camps_requerits; ?></em></span> <br />
<br />
<input type="image" name="Submit" src="img/boto_enviar_<?php echo $_SESSION["idioma"]; ?>.gif" width="62" height="20" style="border-style:none" value="Enviar"/></td>
</tr>
</table>
<input type="hidden" name="ip" id="ip" value="<?php echo getIP();?>"/>
<input type="hidden" name="data" id="data" value="<?php echo $ara;?>"/>
</form>

Siento postear tantas lineas :(

MUchas gracias



EDITO : voy a porbar lo que dijo SND 234 , procesarlo en el mismo formulario , ahora os cuento :)

Última edición por frapas; 10/12/2008 a las 09:47
  #7 (permalink)  
Antiguo 10/12/2008, 11:02
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Problema importante al pasar las variables a un formulario

pero ????????? cuando le asignas el valor?????

tu estas enviando...... y despues de verificar... al regresar quieres que sigan los valores pero no le das el valor ps amigo..... es decir:

no basta con poner:
$email = $_GET['mail'];


sino que tambien se debe poner:
<input type="text" name="email" value="<?php echo $email; ?>" />
para que le pongas el valor de lo que recibiste..........


y asi tendrias que hacer con cada etiqueta (imput)........
teniendo en cuenta que en los checkboxs no le pones value....... sino el checked.....
es decir, debes preguntar por el valor... y de ser afirmativo ..... le das checked sino no ps.


bueno espero haberte despejado dudas y que tengas suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog

Última edición por masterojitos; 10/12/2008 a las 11:08
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:01.