domingo, 7 de diciembre de 2014

Ejercicios con PHP y MySQL - 2 de 2




  • Página inicio.php

<!doctype html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Inscripci&oacute; a Formaci&oacute;n para todos</title>
<!-- El estilo de los botones con bootstrap -->
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/bootstrap-responsive.css" rel="stylesheet">
<style type="text/css">
body {
color:#C73333;
}
a {
color:#C73333;
}
#div1 {
background-color:#ffffff;
margin:20px;
width:80%;
}
#case1 {
margin-right:20px;
margin-top:-4px;
}
</style>
<script>
// Función de comprobación de la aceptación y otros campos para
los navegadores no compatibles con HTML5
function verif() {
if (document.form1.acceptation.checked == false) {
alert("Debe aceptar las condiciones.");
return false;
}
else {
//para IE8 y <
if (document.form1.nom.value==""
|| document.form1.apellidos.value==""
|| document.form1.titulo.value==""
|| document.form1.inicio.value==""
|| document.form1.fin.value==""
|| document.form1.email.value=="" ) {
alert("Todos los campos son obligatorios.");
return false;
}
else {
return true;
}
}
}
var check_ok=0; // inicialización a 0 -> el usuario no ha leído
las condiciones.
function verif_check() {
if (check_ok == 0) {
document.form1.acceptation.checked = false;
alert("Debe leer las condiciones.");
}
}
function maj_check() {
check_ok=1; // el usuario ha leído las condiciones
}
</script>
<!-- Jquery para gestionar los datepicker -->
<link rel="stylesheet"
href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.2.js">
</script>
<script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js">
</script>
<script>
$(function() {
$("#inicio").datepicker();
});
$(function() {
$("#fin").datepicker();
});
jQuery(function($){
$.datepicker.regional[’fr’] = {
closeText: ’Cerrar’,
prevText: ’&#x3c;Prec’,
nextText: ’Suguiente;’,
currentText: ’Actual’,
monthNames: [’Enero’,’Febrero’,’Marzo’,’Abril’,’Mayo’,
’Junio’,’Julio’,’Agosto’,’Septiembre’,’Octubre’,’Noviembre’,
’Diciembre’],
monthNamesShort: [’Ene’,’Feb’,’Mar’,’Abr’,’May’,’Jun’,
’Jul’,’Ags’,’Sep’,’Oct’,’Nov’,’Dic’],
dayNames: [’Domingo’,’Lunes’,’Martes’,’Miércoles’,’Jueves’,
’Viernes’,’Sábado’],
dayNamesShort: [’Dom’,’Lun’,’Mar’,’Mir’,’Jue’,’Vie’,’Sáb’],
dayNamesMin: [’Do’,’Lu’,’Ma’,’Mi’,’Ju’,’Vi’,’Sa’],
weekHeader: ’Sm’,
dateFormat: ’dd/mm/yy’,
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ’’};
$.datepicker.setDefaults($.datepicker.regional[’fr’]);
});
</script>
</head>
<body>
<div id="div1">
<h2>Bienvenido al sitio de incripci&oacute;n "Formaci&oacute;n
para todos"</h2><br />
<h4>Rellene todos los campos del formulario y</h4>
<h4>haga clic en el bot&oacute;n Enviar para validar su
inscripci&oacute;n</h4><br />
<form action="ajouter.php" name="form1" method="POST"
onsubmit="return verif()">
<table>
<tr><td>Nombre: </td><td><input type="text" name="nom"
placeholder="Escriba un nombre" required="required" maxlength="25"/>
</td></tr>
<tr><td>Apellido: </td><td><input type="text" name=
"apellidos" placeholder="Escriba sus apellidos" required="required"
maxlength="25"/>
</td></tr>
<tr><td>T&iacute;tulo de la formaci&oacute;n: </td><td><input
type="text" name="titulo" placeholder="T&iacute;tulo" required="
required" maxlength="100"/></td></tr>
<tr><td>Inicio de la formaci&oacute;n: </td><td><input
type="text" name="inicio" id="inicio" placeholder="Indique la fecha
de inicio" required="required" /></td></tr>
<tr><td>Fin de la formacion : </td><td><input
type="text" name="fin" id="fin" placeholder="Indique la fecha de fin"
required="required"/></td></tr>
<tr><td>Direcci&oacute;n email: </td><td><input type="email"
name="email" placeholder="Direcci&oacute;n de mail v&aacute;lida"
required="required"
maxlength="100"/></td></tr>
<tr><td align="right"><input type="checkbox"
name="acceptation" id="case1" onclick="verif_check()"/> </td><td>
Acepto las condiciones, accesibles en <a href="conditions.pdf"
style="color:blue" onclick="maj_check()" target="_blanck">este enlace
</a>.</td></tr>
<tr><td colspan="2"><br /></td></tr>
<tr><td colspan="2" align="center"><input type="submit"
name="go" value="Enviar" /></td></tr>
</table>
</form>
<br />
<h4 style="color:red;">
<?php
if (isset($_GET[’mensaje’]) && $_GET[’mensaje’] == 1) {
echo "Su inscripción se ha registrado.";
}
if (isset($_GET[’mensaje’]) && $_GET[’mensaje’] == 2) {
echo "Un de los campos está vacío.";
}
if (isset($_GET[’mensaje’]) && $_GET[’mensaje’] == 3) {
echo "Ya ha realizado la solicitud.";
}
?>
</h4>
<br />
</div>
</body>
</html>


  • Página conexión.php:

<?php
//connexion a la base de dato
$base = mysqli_connect("127.0.0.1", "root", "", "formacion");
?>


  • Página añadir.php

<?php
include(’conexion.php’);
if ($base)
{
$message=0;
$Nombre = htmlentities(addslashes($_POST[’nombre’]));
//funciones para evitar la inyección de script malintencionado
$Apellidos = htmlentities(addslashes($_POST[’apellidos’]));
$titulo = htmlentities(addslashes($_POST[’titulo’]));
$inicio = htmlentities(addslashes($_POST[’inicio’]));
$Fin = htmlentities(addslashes($_POST[’fin’]));
$Email = htmlentities(addslashes($_POST[’email’]));
if ($Nombre == "" || $Apellidos == "" || $titulo == "" ||
$inicio == "" || $Fin == "" || $Email == "") {
// caso en el que el usuario esquiva el javascript
$mensaje=2; //un de los campos es vacío
}
else {
$nbr=0; //nombre de persona que ya tiene este email
// VERIFICACIÓN SI LA PERSONA ESTÁ INSCRITA
================================================================
$sql = "SELECT Nombre, Apellidos FROM inscripcion WHERE
Email LIKE ? OR (Nombre LIKE ? AND Apellidos LIKE ?)";
// Preparación de la consulta
$resultado = mysqli_prepare($base, $sql);
$ok = mysqli_stmt_bind_param($resultado, ’sss’,$Email,
$Nombre,$Apellidos);
// Ejecución de la consulta.
$ok = mysqli_stmt_execute($resultado);
if ($ok == FALSE) {
echo "Error de ejecución de la consulta.<br />";
$mensaje=0;
}
else {
// Asociación de las variables de resultado.
$ok = mysqli_stmt_bind_result($resultado,$Nombre,
$Apellidos);
// Almacena los valores.
$ok = mysqli_stmt_store_result($resultado);
$nbr=mysqli_stmt_num_rows($resultado);
//Libera el resultado
mysqli_stmt_free_result($resultado);
mysqli_stmt_close($resultado);
}
if ($nbr > 0) {
$mensaje=3; //Ya ha realizado la petición";
}
else {
// INSERCIÓN DE NUEVOS DATOS
===================================================================
===========
$sql = "INSERT INTO inscription (Nombre, Apellidos,
titulo, inicio, Fin, Email) VALUES (?,?,?,?,?,?)";
// Preparación de la consulta
$resultado_insert = mysqli_prepare($base, $sql);
date_default_timezone_set(’Europe/Paris’);
$dt_inicio = date_create_from_format(’d/m/Y’,$inicio);
//creación de un objeto Date a partir de la cadena de caracteres
$inicio
$dt_fin = date_create_from_format(’d/m/Y’, $Fin);
//creación de un objeto Date a partir de la cadena de caracteres $Fin
$ok = mysqli_stmt_bind_param($resultado_insert,
’ssssss’,$Nombre,$Apellidos,$titulo,$dt_inicio->format(’Y/m/d’),
$dt_fin->format(’Y/m/d’),$Email);
// Ejecución de la consulta.
$ok = mysqli_stmt_execute($resultado_insert);
if ($ok == FALSE)
{
echo "Error de ejecución de la consulta.<br />";
$mensaje=0;
}
else
{
$mensaje=1; //echo "Datos añadidos.";
}
mysqli_stmt_close($resultado_insert);
}
}
if (mysqli_close($base) == false) {
echo ’Error de desconnexion.’;
$mensaje=0;
}
}
else
{
printf(’Error %d : %s.<br/>’,mysqli_connect_errno(),
mysqli_connect_error());
$mensaje=0;
}
if ($mensaje!=0) { //No redirigir automaticamente a la página
de inicio en caso de error grave.
header("Location:inicio.php?mensaje=".$mensaje);
}
?>

  • Creé un archivo conditions.pdf.
  • Puede descargar bootstrap en la dirección http://twitter.github.io/bootstrap/index.html y meter los archivos bootstrap.css y bootstrap-responsive.css en el directorio css para mejorar el estilo de la página.


Espero haber ayudado en algo. Hasta la próxima oportunidad!










No hay comentarios:

Publicar un comentario en la entrada