AJAX - Ayuda con formulario ajax y php

 
Vista:
sin imagen de perfil

Ayuda con formulario ajax y php

Publicado por Raul (1 intervención) el 20/04/2017 14:55:19
Buenas tardes amigos del web...

Vengo por aqui a ver si me podéis echar una mano con un codigo que me tiene.....loco.
Estoy haciendo un sistema de comentarios en mi web con ajax y php. Este sistema tiene un formulario para comentar la noticia principal, y en ese comentario hay un boto para responder a dicho comentario.

Me funciona casi todo bien, es decir:
- Formulario para responder a la noticia principal, funciona perfecto y me muestra con do-while todos los comentarios
- Cada comentario muestra las respuestas a ese mismo comentario sin ningun problema con do-while
- El problema es, que el div en el que se muestra el formulario para mostrar el formulario de replica al comentario es dinamico... para que tome el valor de cada comentario, pero el resultado de ajax (#div) no puedo hacerlo dinamico.... haciendo algo como (#div(php echo)).

Les muestro el codigo a ver si me pueden echar una mano...La necesito. (Gracias de antemano)

El codigo de post.php donde se muestran los resultados y los formularios es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!-- BUCLE COMENTARIO -->
			<?php if ($totalRows_comentario > 0) { // Show if recordset not empty ?>
            <?php do{ ?>
			<div class='comentario'>
				<div class='encabezadocomentario'>
					<cite class='nombrecomentario'>
						<?php echo utf8_encode($row_comentario["nombre_usuario"]); ?>&nbsp;·&nbsp;<span style="color:#999"><?php echo between($row_comentario["fecha_comentario"], "NOW()") ?></span>
					</cite>
				</div>
				<p class='comentariomensaje'>
					<br><?php echo utf8_encode($row_comentario["mensaje_comentario"]); ?>
				</p>
 				<span class='comment-actions secondary-text'>
					<!--<a kind='i' href='javascript:;' target='_self' o='r'>Responder</a>-->
                    <a href="#divreplicar<?php echo $row_comentario["id_comentario"];?>" class='MO'>Responder</a>
				</span>
                <!-- FORMULARIO PARA REPLICAR -->
                	<div align="right" id="divreplicar<?php echo $row_comentario["id_comentario"];?>" class="oculto">
                        <form action="" method="post" name="replicador" id="replicador"><!--action=enviar_comentario.php-->
                            <div class='mimi_field'>
                                <div>
                                    <input id='nombre_usuario_replica' name='nombre_usuario_replica' placeholder='NOMBRE' type='text' required/>
                                </div>
                                <div>
                                    <input id='email_usuario_replica' name='email_usuario_replica' placeholder='EMAIL' type='email' required/>
                                </div>
                                <div>
                                    <textarea id="mensaje_comentario_replica" name="mensaje_comentario_replica" placeholder="ESCRIBE TU MENSAJE..." required></textarea>
                                </div>
                                <div>
                                    <input type='button' id='replica_submit_button' value='COMENTAR'/>
                                </div>
                                <div>
                                    &nbsp;
                                </div>
                                <div>
                                    <input type='button' id='limpiarreplicador' value='CANCELAR'/>
                                </div>
                                <div>&nbsp;</div>
                                <div id='statusreplica'></div>
                                <!--<a src="#" class="mostrarmodalRegistro"><span style="font-size:16px;color:#FFF;float:right;cursor:pointer"><u>Reg&iacute;strate aqu&iacute;</u></span></a>-->
                                <input type="hidden" name="MM_insert" value="replicador" />
                                <input type="hidden" name="id_comentario" value="<?php echo $row_comentario["id_comentario"];?>" />
                            </div>
                        </form>
                    </div>
 
                <!-- FIN FORMULARIO PARA REPLICAR -->
			</div>
			<hr align="left" width="50%" style="color:#eee" />
            <!-- BUCLE REPLICA -->
            <?php
				$id_replica = $row_comentario['id_comentario'];
				//CONSULTA PARA MOSTRAR LAS REPLICAS AL COMENTARIO
				$replica = mysqli_query ($mysqli, "select * from replica_tabla where id_comentario = '$id_replica' order by fecha_replica desc");
				//INSTRUCCION SQL
				$conexionreplica = $replica or die("Problemas al ejecutar select SQL4 ".mysqli_error());
				//RESULTADO DE LA CONSULTA
				$row_replica = mysqli_fetch_assoc($replica);
				$totalRows_replica = mysqli_num_rows($replica);
			?>
			<?php if ($totalRows_replica > 0 && $row_replica["id_comentario"] == $row_comentario["id_comentario"]) { // Show if recordset not empty ?>
				<?php do{ ?>
                    <div class='replica'>
                        <div class='avatar-image-container'></div>
                        <div class='comment-block'>
                            <div class='comment-header'>
                                <cite class='user'>
									<?php echo utf8_encode($row_replica["nombre_usuario"]); ?>&nbsp;·&nbsp;<span style="color:#999"><?php echo between($row_replica["fecha_replica"], "NOW()") ?></span>
                                </cite>
                            </div>
                            <p class='comment-content'>
                                <br><?php echo utf8_encode($row_replica["mensaje_replica"]); ?>
                            </p>
                            <span class='comment-actions secondary-text'>
                                <a kind='i' href='javascript:;' target='_self' o='r'>Responder</a>
                            </span>
                        </div>
                    </div>
                    <br>
				<?php }while($row_replica = mysqli_fetch_assoc($replica)); ?>
			 <?php } else { ?>
			 <?php } ?>
            <!-- FIN BUCLE REPLICA -->
            <?php }while($row_comentario = mysqli_fetch_assoc($comentario)); ?>
            <?php } else { ?>
            <!-- FIN BUCLE COMENTARIO -->
			<div class='comentario'>
				<table border="0" width="100%">
					<tr>
						<td align="center"><strong>A&uacute;n no hay comentarios para esta noticia</strong></td>
					</tr>
					<tr>
						<td align="center">S&eacute; el primero en publicar tu opini&oacute;n</td>
					</tr>
				</table>
				<div class="clear"></div>
			</div>
            <?php } ?>
            <!-- FIN BUCLE COMENTARIO -->

---Los resultados los muestra perfectos y cuando hago clik en responder me toma el id de comentario bien tambien. El probela es que.... como ven... el div=status es dinamico con el id de cada uno....
El codigo ajax es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// JavaScript Document
$(document).ready(function(){
 
 
	$('#limpiarreplicador').click(function(id_comentario){
        $('#replicador')[0].reset();
		$('#divreplicar').html(""); //Mostrar mensaje que se esta procesando el script
  });
	$("#replica_submit_button").click(function (){
	   var datos = $("#replicador").serialize();//Serializamos los datos a enviar
	   $.ajax({
		   type: "POST", //Establecemos como se van a enviar los datos puede POST o GET
		   url: "replicar.php", //SCRIPT que procesara los datos, establecer ruta relativa o absoluta
		   data: datos, //Variable que transferira los datos
		   contentType: "application/x-www-form-urlencoded", //Tipo de contenido que se enviara
		   beforeSend: function() {//Función que se ejecuta antes de enviar los datos
			  $("#statusreplica").html("Procesando...."); //Mostrar mensaje que se esta procesando el script
		   },
		   dataType: "html",
		   success: function(datos){ //Funcion que retorna los datos procesados del script PHP
			  if(datos == 1){ //Dato que proviene del script php
				 $("#statusreplica").html("¡Comentario enviado!") //Mensaje de Satisfacción
				 		$('#replicador')[0].reset();
						$("#replicar").html(""); //Mostrar mensaje que se esta procesando el script
			  }else if(datos == 2){ //Dato que proviene del script php
				 $("#statusreplica").html("Debe completar todos los campos!") //Mensaje de error
			  }else if(datos == 3){ //Dato que proviene del script php
				 $("#statusreplica").html("Debe escribir su eMail y su mensaje!") //Mensaje de error
			  }else if(datos == 4){ //Dato que proviene del script php
				 $("#statusreplica").html("Ha olvidado escribir su mensaje!") //Mensaje de error
			  }else if(datos == 5){ //Dato que proviene del script php
				 $("#statusreplica").html("Ha olvidado escribir su nombre!") //Mensaje de error
			  }else if(datos == 0){ //Dato que proviene del script php
				 $("#statusreplica").html("Ha ocurrido algun error!"); //Mensaje de error
			  }
		   }
	   });
	});
});

Como ven aqui el status replica es fijo....cuando debería tomar el valor de cada comentario....y es lo que no consigo....

El php que hace el insert es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$id = $_POST['id_comentario'];
$nombre= utf8_decode($_POST['nombre_usuario_replica']);
$email= utf8_decode($_POST['email_usuario_replica']);
$mensaje= utf8_decode($_POST['mensaje_comentario_replica']);
 
$is_selected1 = !empty($_POST["nombre_usuario_replica"]); // Si no esta vacía, seleccionaron
$is_selected2 = !empty($_POST["email_usuario_replica"]); // Si no esta vacía, seleccionaron
$is_selected3 = !empty($_POST["mensaje_comentario_replica"]); // Si no esta vacía, seleccionaron
 
if ($is_selected1 && $is_selected2 && $is_selected3) {
 
	$insertarReplica = "insert into replica_tabla(id_comentario, nombre_usuario, correo_usuario, mensaje_replica, fecha_replica) values('".$id."', '".$nombre."', '".$email."', '".$mensaje."', NOW())";
	$resultado = $conectar -> query($insertarReplica)|| die("Ha ocurrido un error al guardar los datos");
	if($resultado){
		echo "1"; //Enviamos el valor 1
		mysqli_close($conectar);//Cerramos la conexion
	}else{
		// echo mysqli_error($conectar);
		 echo "0"; //Enviamos el valor 0
		 mysqli_close($conectar); //Cerramos la conexion
	}
}
?>
--- recoge el id bien tb, lo he probado con un echo....pero no se como pasarlo a ajax para que me muestre en cada comentario, por ejempo
- (#statusreplica1)...donde 1 seria el php

Espero haberme explicado bien, y siento tanto codigo pero llevo días intentandolo...sin conseguirlo

Si me pueden echar una mano lo agradezco en el alma.
Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder