Foros del Web » Programando para Internet » PHP »

PHP OO formulario con php y validado con ajax solo inserta registro una vez?

Estas en el tema de formulario con php y validado con ajax solo inserta registro una vez? en el foro de PHP en Foros del Web. Pues tal cual... tengo una especie de formulario a traves del cual los usuarios podran ingresar comentarios en los post del blog que estoy haciendo... ...
  #1 (permalink)  
Antiguo 21/12/2015, 12:44
 
Fecha de Ingreso: diciembre-2015
Mensajes: 115
Antigüedad: 8 años, 4 meses
Puntos: 2
Sonrisa formulario con php y validado con ajax solo inserta registro una vez?

Pues tal cual... tengo una especie de formulario a traves del cual los usuarios podran ingresar comentarios en los post del blog que estoy haciendo... el inconveniente es que solo me esta permitiendo realizar un solo ingreso de registro... es decir solo un comentario por post... cuando quiero hacer el segundo el formulario simplemente no responde, queda desfuncional no hace nada .... les dejo aca el codigo para que le echen un ojo a ver si me ayudan a conseguir el fallo


dejarcomentario.html

<div class="feat_prod_box-coment" id="box-comentario">
<input type="text" id="usuario" placeholder="Nombre">
<input type="email" id="email" placeholder="Email">
<input type="hidden" id="post" value="<?php echo $id; ?>">
<textarea id="comentario" placeholder="Comentario"></textarea>
<label><?php echo $_SESSION['a']." + ".numero($_SESSION['b']); ?> = <input type="text" style="width:20px;" id="capt"></label><br>
<button id="comentar" onclick="javascript:enviar_comentario();">Comentar </button>
<span id="respuesta" style="color:#FF4545;"></span>
</div>


comentar.php

Código PHP:
<?php
require 'conexiondb.php';
require 
'config.php';

if (!isset(
$_GET['user']) or !isset($_GET['email']) or !isset($_GET['comentario']) or !isset($_GET['post']) or !isset($_GET['capt'])) {
    echo 
"Error inesperado";
}elseif (
strlen($_GET['user'])<or strlen($_GET['user'])>200) {
    echo 
"Error: usuario no válido";
}elseif (
strlen($_GET['comentario'])<or strlen($_GET['comentario'])>1000) {
    echo 
"Error: comentario no válido";
}elseif (
intval($_GET['capt'])!=$_SESSION['a']+$_SESSION['b']) {
    echo 
"Error: Suma incorrecta";
}else{
    
$user $_GET['user'];
    
$email $_GET['email'];
    
$post $_GET['post'];
    
$comentario $_GET['comentario'];
    
$fecha date("d")." de ".mes(date("m"))." de ".date("Y")." a las  ".date("h:i");
     
$sql mysql_query("INSERT INTO `comentarios`( `nombre`, `comentario`, `fecha`, `email`, `post` ) 
        VALUES ('$user','$comentario','$fecha','$email', '$post')" 
);
     if (
$sql) {
         echo 
"gracias por su comentario";
         
     }else{
         echo 
"Error con el servidor, intente más tarde.";
     }
}
?>

comentar.js (para validar el ingreso de datos en los comentarios)

// creamos la funcion que validara nuestro formulario

function enviar_comentario() {
var user = document.getElementById("usuario").value;
if (user.length<5 || user.length>200) {
document.getElementById("usuario").focus();
document.getElementById('respuesta').innerHTML= "Error: Usuario no válido";
return 0;
};

var email = document.getElementById("email").value;
var regexp = /^[0-9a-zA-Z._.-]+\@[0-9a-zA-Z._.-]+\.[0-9a-zA-Z]+$/;
if (regexp.test(email)==0 || email.length==0) {
document.getElementById("email").focus();
document.getElementById('respuesta').innerHTML= "Error: Email no válido"; return 0;
};

var comentario = document.getElementById("comentario").value;
if (comentario.length<5) {
document.getElementById("comentario").focus();
document.getElementById('respuesta').innerHTML= "Error: Comentario no válido"; return 0;
};

var post = document.getElementById("post").value;
var capt = document.getElementById("capt").value;

var url = "php/comentar.php?user="+user+"&email="+email+"&comenta rio="+comentario+"&post="+post+"&capt="+capt;
myRequest.open("GET", url, true);
myRequest.onreadystatechange = respuestaAJAX;
myRequest.send(null);
}


//funcion de respuesta para el ingreso de datos

function respuestaAJAX() {
if(myRequest.readyState == 4) {
if(myRequest.status == 200) {
if (myRequest.responseText>="1") {
document.getElementById("box-comentario").innerHTML="Gracias por su comentario.";
}else{
document.getElementById('respuesta').innerHTML= myRequest.responseText;
}
} else {
document.getElementById('respuesta').innerHTML= myRequest.status;
}
}else{
document.getElementById('respuesta').innerHTML="<i mg src='imagenes/loading.gif' width='16' />";''
}
}
  #2 (permalink)  
Antiguo 22/12/2015, 07:47
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: formulario con php y validado con ajax solo inserta registro una vez?

estas reemplazando el formnulario por la respuesta del tu php, lo que tienes que hacer es modificar la funcion para que deje los campos en blanco una vez reciba la respuesta y mostrarla en un div diferente debajo del formulario, asi tu formulario no se desactiva, analiza bien el codigo ajax y veras el problema.

tu form este dentro de:
<div class="feat_prod_box-coment" id="box-comentario">

y la respuesta de tu ajax biene directo a reemplazar este:
document.getElementById("box-comentario").innerHTML="Gracias por su comentario.";

cambia esa linea por:
document.getElementById("respuesta").innerHTML="Gr acias por su comentario.";

y vemos que pasa
__________________
[email protected]
HITCEL

Etiquetas: ajax-php, ajax-php-mysql, web+general
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:06.