Devolver los datos en caso de error

Lo que quiero saber como hacer es lo siguiente: tengo un campo de texto y un botón que al hacer click me genera un certificado de acuerdo con el código que escribí en el campo de texto, eso ya lo hago y en caso de que no exista en la base de datos me manda un mensaje de error hasta ahí todo bien, el problema es que quiero que en caso de que haya error, el código que se dígito siga estando ahí, para un mejor ejemplo: cuando uno se va a inscribir en hotmail, digita sus daatos y da click en enviar, en caso de que haya error el sistema te manda de nuevo a la misma página pero con todos tus datos aun escritos, eso es lo que quiero hacer.

3 respuestas

Respuesta
1
Por lo que me comentas, estas refrescando la página pues simple... usa ajax para que no te la refresque y pues los datos te queden intacto en tu form.. Envía lo que tienes en tu formulario y te explico como se usa Ajax
Éxitos!
Hola mi form es el siguiente: como puedes ver hago una validación con javascript en caso de que el usuario no digite nada, si digita algo manda al pdf.php que es el que hace el certificado, ¿cómo podría hacer con ajax ahí? Gracias
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript" type="text/javascript">
function valida_envia(){
//valido el nombre
if (document.form1.cod.value.length==0){
alert("No puede dejar el espacio vacío");
}
else
{
document.form1.action="pdf.php";
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Instituto La Cruz</title>
</head>
<body>
<form method="post" name="form1" >
<p align="center">Digite el código del alumno:</p>
<p align="center">
<input name="cod" type="text" />
</p>
<p align="center">
<input type="submit" value="Hacer Certificado" onclick="valida_envia()" />
</p>
<p align="center">
<?php
$mues=$_GET['aviso'];
echo $mues;
?>
</p>
</form>
<div align="center">
<p><a href="intro.php">Ver datos de los alumnos</a></p>
<p><a href="index.php">Volver al menú</a></p>
<p><a href="salir.php">Salir </a></p>
<p>
</p>
</div>
</body>
</html>
Esto:
Éxitos!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript" type="text/javascript">
function objetoAjax(){var xmlhttp=false;try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {xmlhttp = false;}}if (!xmlhttp && typeof XMLHttpRequest!='undefined') {xmlhttp = new XMLHttpRequest();}return xmlhttp;}
img_carga = '<img src="" /> ';
function valida_envia(){
divStatus = document.getElementById('status');//Capa donde me mostrara lo que procece el pdf.php
divStatus.innerHTML = img_carga;
code= document.form1.cod.value;
if (code == ''){
alert("Debe ingresar un codigo para generar el certificado");
divStatus.innerHTML = '';
} else {
ajax=objetoAjax();
ajax.open("POST", "pdf.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
divStatus.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("code="+code)
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Instituto La Cruz</title>
</head>
<body>
<form name="form1">
<p align="center">Digite el código del alumno:</p>
<p align="center">
<input name="cod" type="text" />
</p>
<p align="center">
<input name="Botón" type="button" onclick="valida_envia()" value="Hacer Certificado" />
</p>
<p align="center"><div id="status"></div></p>
</form>
<div align="center">
<p><a href="intro.php">Ver datos de los alumnos</a></p>
<p><a href="index.php">Volver al menú</a></p>
<p><a href="salir.php">Salir </a></p>
<p>
</p>
</div>
</body>
</html>
Respuesta
1
pues en este caso como sólo tienes que &#39;recordar&#39; un código, podrías hacerlo de varias maneras, por ejemplo tras comparar el código con la base de datos y ver que no hay coincidencias puedes pasar el código por la URL con el método GET a través de un header(&#39;Location: http://www.miweb.com/formulario.php?codigo=$codigo&#39;);
También puedes hacer esto mismo con una función en javascript que te redirija a la dirección:
http://www.miweb.com/formulario.php?codigo=$codigo&#39;);
En el archivo donde tengas en formulario sólo tendrías que comprobar si recibes el valor
$codigoGet = (isset($_GET[&#39;codigo&#39;])) ? $_GET[&#39;codigo&#39;] : NULL;
if($codigoGet!=NULL){
echo &#39;<input name=&quot;codigo&quot; value=&quot;&#39;.$codigoGet.&#39;&quot; />&#39;;
}else{
echo &#39;<input name=&quot;codigo&quot; value=&quot;&quot; />&#39;;
}
Otra forma en el caso de que estes utilizando variables de session, sería que guardaras el código en una variable cuando de error y rediriges al formulario, por ejemplo $_session[&#39;codigoForm&#39;] = $codigo;
Espero haberte dado una solución a tu gusto, si te queda alguna duda dímelo o si prefieres podemos mirar algún otro método.
amigo gracias por tu respuesta, primero me podrias explicar bien qeu hace este: codigo $codigoGet = (isset($_GET[&#39;codigo&#39;])) ? $_GET[&#39;codigo&#39;] : NULL;
¿Con el isset no es suficiente?
Otra cosa es que no quiero crear un nuevo campo de texto, quiero que el numero que digité siga estando ahí en el mismo campo en el caso de que no exista el código, por eso te puse el ejemplo de cuanduno se va a registrar en hotmail, gracias
Perdona que quizás te di las posibilidades pero no te explique lo que hacían..
La primeración consistía en que una vez que rellenas el código y lo mandas a la página que comprueba si existe o no en la base de datos, que en el caso negativo hicieras un redireccionamiento al formulario &#39;arrastrando&#39; el código introducido. Te lo explico por pasos
1.-Introduces el código en el formulario y pulsas enviar
2.-Recibes el código del form por el método POST y consultas si existe en la base de datos.
Si existe => hace lo que tengas pensado
//Este código te devuelve a la web del formulario pasandole por la url el código
Sino =>header(&#39;Location: http://www.miweb.com/formulario.php?codigo=$codigo&#39;);
3.-Recoges el código por el método GET
$codigoGet = (isset($_GET[&#39;codigo&#39;])) ? $_GET[&#39;codigo&#39;] : NULL;
//A este código se le llama operador ternario y es una forma simplificada de hacer esto otro:
if(isset($_GET[&#39;codigo&#39;])){
$codigoGet = $_GET[&#39;codigo&#39;];
}else{
$codigoGet = NULL;
}
Ahora que tenemos de vuelta al formulario el código introducido lo que hacemos es comprobar si es la primera vez que entra al formulario o si ya ha introducido un código, pero no estaba en la base de datos:
if($codigoGet!=NULL){
//Si visitamos la página con un código erroneo, imprimimos la caja de texto con el código
echo &#39;<input name=&quot;codigo&quot; value=&quot;&#39;.$codigoGet.&#39;&quot; />&#39;;
}else{
//Si es la primera vez que entramos mostramos la caja de texto vacia
echo &#39;<input name=&quot;codigo&quot; value=&quot;&quot; />&#39;;
}
Espero haber sido más claro ahora, si tienes alguna duda dímelo.
Respuesta
Sino veo el código difiicil, pero lo voe com un simple IF ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas