Hola, soy nuevo por aquí así que encantado de haberme registrado en el foro!!!
También soy un poco novato con la programación en PHP y HTML.
Os comento mi caso a ver si me podéis echar una mano pues estoy bastante atascado. Tengo un formulario web para la gestión de roles en una aplicación de gestión de proyectos y qusiera conservar la información de los campos del formulario cuando ocurre algún error ya sea dejar algún campo en blanco o introducir datos erróneos. he estado mirando trabajar con sesiones pero tal y como tengo el código me salta un warning con el session_start() y no se me conservan los datos.
Os adjunto mi código (hay varias cosas comentadas, no las hagáis caso pues son pruebas que estuve haciendo y lo comenté por no perder el código)
Muchas gracias de antemano!!!
<HTML>
<HEAD>
<TITLE>Agile Project Manager</TITLE>
<link rel="stylesheet" href="estilo.css">
</HEAD>
<BODY>
<!-- Menú de navegación del sitio -->
<ul class="navbar">
<li><a href="./index.html">Index</a>
<li><a href="./Personas.php">PERSON</a>
<li><a href="./Proyectos.php">PROJECT</a>
<li class="current"><a href="./Roles.php">ROLE</a>
</ul>
<!-- Contenido principal -->
<h1>AGILE PROJECT MANAGER - ADD NEW ROLE</h1>
<?php
session_start();
function comprobar_errores_formato ($nombre, $descripcion) {
if (strlen($nombre) > 30) return 21;
if (strlen($descripcion) > 70) return 41;
return 0;
}
function insertar ($conexion, $nombre, $descripcion) {
$query_nombre = sprintf("SELECT * FROM roles WHERE nombre = '%s'", $nombre);
$res = mysql_query($query_nombre,$conexion);
if (mysql_num_rows($res) == 1){
return -11;
}
$query_inserccion = sprintf("INSERT INTO roles (nombre, descripcion) VALUES ('%s', '%s')", strtoupper($nombre), strtoupper($descripcion));
mysql_query ($query_inserccion, $conexion);
$error = mysql_error($conexion);
if (!empty($error)) {
return $error;
} else {
return 0;
}
}
/*function cambiaf_a_mysql ($fecha){
ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
$lafecha = $mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafecha;
}*/
if (count($_POST) > 0) {
// Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
if ($_POST['nombre'] == NULL) {
$error = 2;
} elseif ($_POST['descripcion'] == NULL) {
$error = 3;
} else {
$error = comprobar_errores_formato($_POST['nombre'], $_POST['descripcion']);
}
if ($error == 0) {
$conexion = mysql_connect('localhost', 'root');
mysql_select_db('agileProject', $conexion);
$my_error = insertar($conexion, $_POST['nombre'], $_POST['descripcion']);
if(!empty($my_error)) {
print '<script language="JavaScript">';
switch ($my_error) {
case -11:
print 'alert("This ROLE NAME belongs to a role which already exists in database, please type other ROLE NAME");';
break;
default:
print 'alert("Error inserting into database.");';
}
print '</script>';
$url = $_SERVER['HTTP_REFERER'];
echo "<SCRIPT>window.location='$url';</SCRIPT>";
} else {
/*$query_consulta = sprintf("CREATE TABLE %s(id MEDIUMINT NOT NULL AUTO_INCREMENT, evento VARCHAR(30) NOT NULL,
fecha_inicio DATE NOT NULL, fecha_fin DATE NOT NULL, comentario VARCHAR(100), PRIMARY KEY (id))",
strtoupper($_POST['matricula']));
mysql_query($query_consulta,$conexion);
$query_consulta = sprintf("INSERT INTO %s(evento,fecha_inicio,fecha_fin) VALUES ('ALTA', CURDATE(), CURDATE())",
strtoupper($_POST['matricula']));
mysql_query($query_consulta,$conexion);
$query_consulta = sprintf("INSERT INTO %s(evento,fecha_inicio,fecha_fin) VALUES ('DISPONIBLE DESDE', '%s', '%s')",
strtoupper($_POST['matricula']), cambiaf_a_mysql($_POST['fecha']), cambiaf_a_mysql($_POST['fecha']));
mysql_query($query_consulta,$conexion);*/
print '<script language="JavaScript">';
print 'alert("Role added successfuly");';
print '</script>';
$url = $_SERVER['HTTP_REFERER'];
echo "<SCRIPT>window.location='$url';</SCRIPT>";
}
} else {
//echo "Ha habido un error al rellenar el formulario: $error";
print '<script language="JavaScript">';
switch ($error) {
case 2:
print 'alert("For ROLE is compulsory to type a ROLE NAME");';
break;
case 21:
print 'alert("ROLE NAME must have 30 characters at most.");';
break;
case 3:
print 'alert("For ROLE is compulsory to type a ROLE DESCRIPTION.");';
break;
case 41:
print 'alert("ROLE DESCRIPTION must have 70 characters at most.");';
break;
default:
print 'alert("Data format is not valid, please try again following the formats.");';
}
print '</script>';
$url = $_SERVER['HTTP_REFERER'];
echo "<SCRIPT>window.location='$url';</SCRIPT>";
}
//Cierra la conexion con la base de datos
mysql_close();
}
?>
<form NAME="add_role" METHOD="post" ACTION="AgregarRol.php">
<ul>
<li>Role name: <input type="text" name="nombre" size="30" MAXLENGTH="30"> <font face="Verdana" color="#000000" size="0.5" value="<?php if (isset($_SESSION['nombre'])){echo $_SESSION['nombre'];} ?>">(Format: Alphanumeric, 30 characters maximum)</font></li>
<br>
<li>Description: <input type="text" name="descripcion" size="70" MAXLENGTH="70"> <font face="Verdana" color="#000000" size="0.5" value="<?php if (isset($_SESSION['descripcion'])){ echo $_SESSION['descripcion'];} ?>">(Format: Alphanumeric, 70 characters maximum)</font></li>
<br>
<p style="text-align: left;">
<input type="submit" value="Add new role" name="enviar">
<input type="button" value="Go Back" onClick="javascript:history.go(-1)">
</p>
</UL>
</FORM>
<button onClick="opcion();">
Reset Values
</button>
</BODY>
</HTML>