Hola de nuevo, pedroca.
No entiendo muy bien lo que quieres hacer.
He "limpiado" el codigo porque antes me parececia muy enrevesado. Te recomiendo que cuando hagas operaciones en las bases de datos compruebes el error inmediatamente en lugar se usar tantos bloques if/else, ya que termina el codigo ilegible.
Esto se consigue haciendo un if usando el operador not (!) que lo que hace es dar al vuelta al resultado (si es true lo cambia a false y si es false lo cambia a true). Dicho asi parece compliado pero si lo lees como "Si no... esto ... haz esto"
Ejemplo:
if (! mysql_query($link,etc..) ) {
die ("Error en la consulta");
}
Que significa: Si el valor devuelto por la funcion mysql_query es negativo, entonces terminar la ejecucion del script con un mensaje de error.
Asi se puede decir que "te quitas el error de en medio", ya que si hay error envia el mensaje de error y se deja de ejecutar el codigo. Y en caso contrario sigue adelante.
Te pongo el codigo aplicando eso:
Código PHP:
<?php
/* declaracion de variables */
$base = "TB";
$tabla = "control";
$tabla1 = "usuarios";
$dni = $_POST["dni"];
if (!$dni) {
/* Falta carnet */
die("<h2><CENTER>DEBE INTRODUCIR DATOS</CENTER></b></H2>");
}
if (!$link = mysql_connect("localhost","root","123456")) {
/* La conexion MySQL falló */
die("Imposible conectar con la base de datos");
}
/* Conexión correcta */
$sql = "SELECT * FROM $tabla WHERE dni = '$dni' AND CURDATE() <= fecha";;
$res = mysql_db_query($base, $sql);
$rows = mysql_num_rows($res);
if (!$rows) {
/* no existe ningun cirum en la base de datos o han metido mal su carnet */
die("<h2><CENTER>SU CARNET NO VALIDO</CENTER></b></H2>");
}
if ($rows >= 8) {
// Se ha exceido el limite de que solo haya 8 consultas en un dia
die("<h2><CENTER>LIMITE EXCEDIDO/CENTER></b></H2>");
}
/* introducir un código válido */
$sql = "INSERT INTO $tabla1 (dni, fecha, hora) VALUES ('$dni', NOW() , CURTIME() )";
/* se ejecuta la consulta */
if (!$res = mysql_db_query($base ,$sql)) {
/* La conexion MySQL falló */
die("
Error al ejecutar la consulta en la base de datos
SQL: $sql<hr />
<p>Error nº ".mysql_errno()."</p>
<p>MySQL dijo: ".mysql_error()."</p>
");
}
/* marcacion correcta de su carnet de identidad */
print "<h2><CENTER>CORRECTA</CENTER></b></H2>";
?>
Lo que me has pedido no lo entiendo muy bien, ¿esa letra es para mostrarla en pantalla o para insertar en la base de datos junto con el numero?
Saludos.