El problema yo creo que está en el AJAX, no se que estoy haciendo mal o como llamar al ID de la noticia correspondiente. Yo ya hice el BORRAR y me funciona correctamente pero no se porque no me sale con el editar que es casi parecido.
Con esto traigo las noticias. (Esto funciona correctamente). No pongo el codigo anterior, pq no es necesario supongo.
Código
elseif ($accion == 'editarNoticias'){ $id = $_POST['id']; //Consulta BD Editar Noticia segun el ID. $statement2 = $conexion->prepare("SELECT * FROM noticias WHERE idNoticia = $id"); $statement2->execute(); $noticias = $statement2->fetchAll(); //MODIFICAR DESDE ACA echo "<h1 class='text-center m-5'>Editar noticias SB</h1> <form id='formEditarNoticia' class='text-center' method='post' enctype='multipart/form-data'>"; foreach ($noticias as $noticia) { echo "<div class='form-group mt-5'> <input type='text' id='". $noticia['idNoticia'] ."' value='" . $noticia['idNoticia'] . "' name='idNoticia' > <input type='text' name='imagenNoticia-guardada' value='" . $noticia['imagenNoticia'] . "'> <input type='file' class='form-control-file mx-auto' name='imagenNoticia' id=' placeholder=' aria-describedby='fileHelpId'> <small id='fileHelpId' class='form-text text-muted text-center'>Seleccione la imagen que quiere subir...</small></div> <div class='col mx-auto mb-3'> <input name='tituloNoticia' type='text' class='form-control' value='" . $noticia['tituloNoticia'] . "'> </div> <div class='col mx-auto mb-3'> <input name='noticiaCorta' type='text' class='form-control' value='" . $noticia['noticiaCorta'] . "'> </div> <div class='col mb-3'> <textarea name='noticiaCompleta' rows='20' cols='50' type='text' class='form-control'>" . $noticia['noticiaCompleta'] . "</textarea> </div> <div class='d-inline-block'> <button class='enviarEditarNoticia btn btn-success'>EDITAR NOTICIA</button> <a href='index.php'><button type='button' class='btn btn-warning'>VOLVER</button></a> </div> </form>"; } }
Una vez que visualizo la noticia, la edito y le doy al botón EDITAR NOTICIA (que su clase es enviarEditarNoticia) y su AJAX el siguiente (A MI PARECER EL PROBLEMA ES AQUÍ... No se como enviarle el ID de la noticia ya que en DATA estoy usando el formData.":
Código
$("#seccionEditarNoticia").on("click", ".enviarEditarNoticia", function() { $('#formEditarNoticia').serialize(); $.ajax({ type: "POST", url: "subirNoticia.php?p=modificar", data: new FormData($('#formEditarNoticia')[2]), contentType: false, processData:false, success: function(datos) { $('#mensaje').empty(); $('#mensaje').append(datos); } }); });
Y bueno al clickear .enviarEditarNoticia debería hacer esto:
Código
}elseif ($accion == 'modificar') { $id = $_POST['id']; } $idNoticia = $_POST['idNoticia']; $imagenNoticia_guardada = $_POST['imagenNoticia-guardada']; $imagenNoticia = $_FILES['imagenNoticia']; $tituloNoticia = $_POST['tituloNoticia']; $noticiaCorta = $_POST['noticiaCorta']; $noticiaCompleta = $_POST['noticiaCompleta']; $imagenNoticia = $imagenNoticia_guardada; } else { $carpeta_destino = '../img/noticias/'; $archivo_subido = $carpeta_destino . $_FILES['imagenNoticia']['name']; $imagenNoticia = $_FILES['imagenNoticia']['name']; } $statement = $conexion->prepare( "UPDATE noticias SET tituloNoticia = :tituloNoticia, noticiaCorta = :noticiaCorta, noticiaCompleta = :noticiaCompleta, imagenNoticia = :imagenNoticia WHERE idNoticia = $idNoticia" ); ':tituloNoticia' => $tituloNoticia, ':noticiaCorta' => $noticiaCorta, ':noticiaCompleta' => $noticiaCompleta, ':imagenNoticia' => $imagenNoticia )); echo "La noticia ha sido editada correctamente."; }
No puse el codigo completo del IF con el agregar o borrar porque eso funciona correctamente.
He intentado muchas cosas, puedo insertar y borrar pero no puedo modificar porque no se como enviar mis nuevos valores ingresados en los input. En el insertar y borrar yo usaba el data: pero ahora en el modificar en el data tengo el data: new FormData, entonces no se como implementarlo.
Otra cosa que he notado es que cuando escribo en los input para modificar, he mirado con firebug y el atributo value= no cambia. O sea el input en el navegador ingresa mi texto, pero miro internamente y el value sigue igual que como llegó.
Espero que me puedan dar una mano, debe ser una tonteria... pero me tiene loco hace 2 dias!
Muchas gracias por leer!