Ayuda con php

Hola, gracias por tu tiempo y por toda la ayuda .
Te cuento, estoy haciendo la página de una peña quinielistica (amigos) en ella tengo unos formularios con las quinielas a mandar que manda los resultados a otra página php(agregarj1.php por ejemplo) y esta lo graba en la base de datos.
Todo lo he conseguido a base de leer manuales y leer este foro pero ahora necesito hacer que si el nombre del autor de la quiniela ya esta en la tabla de destino no le deje enviar el formulario otra vez, para así evitar que un usuario envíe más de una quiniela.
También me gustaría que me dieras una pista de como podría caducar un formulario, osea que al llegar una fecha ese formulario ya no se pueda enviar.
Te pongo como tengo agregar.php he probado con los if pero siempre me da fallos...
<?php
require('configuracion2.php');
$autor = tiny_mce_markerPOST["autor"];
$partido1 = tiny_mce_markerPOST["partido1"];
$partido2 = tiny_mce_markerPOST["partido2"];
$partido3 = tiny_mce_markerPOST["partido3"];
$partido4 = tiny_mce_markerPOST["partido4"];
$partido5 = tiny_mce_markerPOST["partido5"];
$partido6 = tiny_mce_markerPOST["partido6"];
$partido7 = tiny_mce_markerPOST["partido7"];
$partido8 = tiny_mce_markerPOST["partido8"];
$partido9 = tiny_mce_markerPOST["partido9"];
$partido10 = tiny_mce_markerPOST["partido10"];
$partido11 = tiny_mce_markerPOST["partido11"];
$partido12 = tiny_mce_markerPOST["partido12"];
$partido13 = tiny_mce_markerPOST["partido13"];
$partido14 = tiny_mce_markerPOST["partido14"];
$partido15 = tiny_mce_markerPOST["partido15"];
// Grabamos el mensaje en la base.
$sql = "INSERT INTO jornada1 (autor, partido1, partido2, partido3, partido4, partido5, partido6, partido7, partido8, partido9, partido10, partido11, partido12, partido13, partido14, partido15) ";
$sql.= "VALUES ('$autor','$partido1','$partido2','$partido3','$partido4','$partido5','$partido6','$partido7','$partido8','$partido9','$partido10','$partido11','$partido12','$partido13','$partido14','$partido15')";
$rs = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error);
$ult_id = mysql_insert_id($con);
?>
<p>Resultados mandados correctamente. <a href="jornada1.php">Compuebalo
pinchando aqui</a></p>
Muchas gracias por tu tiempo y ojala me puedas echar una mano.

1 Respuesta

Respuesta
1
que tal a ver si te puedo ser de ayuda. tiene rato que no hago algo en PHP, una pregunta para que es esto "$sql=mysql_query("SELECT * FROM miembros WHERE nickname!='groening' ORDER BY $order",$con);POST" supongo que es para recibir el valor del campo del formulario pero yo nada mas he usado $_POST['nombre'].
Yo también he aprendido así como tu así que veamos que puedo hacer por ti
no se como manejas el autor, no se si sea un valor que ya se encuentre almacenado en la BDD como una lista de usuarios y nada más tiene que logearse y ya aparece su nombre o cada usuario que quiera enviar un formulario tiene que escribir su nombre a como le de la gana. Si es de esta ultima manera lo veo difícil tendrías que checar la cadena letra por letra para ver que coincida con alguna nombre que ya este en la BDD y lo veo difícil porque puede ser que el usuario no escriba su nombre de la misma manera a la mejor a una letra le puso ´ y cuando vuelva a ingresar ya no le puso ´. Y esto también consumirá mucho procesamiento.
Con esto puedes verificar si el nombre del autor que ingreso en el formulario esta en la BDD:
$sql=mysql_query("SELECT * FROM jornada1 WHERE autor=='$autor'",$con);
if(mysql_fetch_array($sql)){//hacer algo}
else {//hacer otra cosa}
otra cosa que podrias hacer es que solo deje enviar un formulario, por decir, cada hora, como se realizan algunas encuestas. esto lo logras verificando los datos del equipo de donde manda el formulario, por decir algo la ip del cliente
require('conectar.php');
//se requiere el archivo para validar los datos de usuario de bdd para conectar
$IP = $REMOTE_ADDR;
$segundos = time();
$can = "3600";
$resta = $segundos-$can;
//se asignan la variables
$sql = "SELECT segundos, IP ";
$sql.= "FROM encuesta WHERE segundos >= $resta AND IP LIKE '$IP' ";
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error);
$ct = mysql_num_rows(mysql_query("SELECT * FROM encuesta",$con));
//se buscan los registros que num de seg mayor a num de seg hace una hora e IP
if(mysql_num_rows($es)>0)
{//no se cuenta la encuesta}
else{// se cuenta la encuesta}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas