Hola, soy programador desde hace años pero novato aún en PHP, JS, ...
Estoy creando un sitio y, he tomado código de otro sitio similar que voy adaptando.
Yendo al grano, el problema lo tengo al intentar guardar un registro en mySQL, ya sea INSERT o UPDATE. He hecho todo tipo de pruebas pero no consigo avanzar porque no hay ningún mensaje de error.
En vivo, después de introducir los datos de una nueva noticia, hago clic en Modificar noticia y me vuelve a la pantalla principal pero sin haber hecho el cambio en la base de datos. Lo mismo ocurre al crear una noticia. El borrado funciona correctamente. Esta última opción no utiliza los formularios con los campos y por ahí puede andar el asunto pero no he sido capaz de averiguarlo. He puesto algún ALERT (no estoy seguro de haberlo hecho bien) en los procesos de guardado y no los muestra. Os agradecería un montón que me echaseis una mano. Si necesitáis cualquier información adicional estaré siguiendo el foro. Graciassssss.
Les adjunto los ficheros relacionados:
FICHERO fnoticia_mod.php:
<?php // obtenemos la noticia en cuestion para modificarlo
$rec = getNoticia ($conexion, $_GET['id']);
if (is_array($rec) && sizeof($rec) > 0) {
$id = $rec['id'];
$fecha = $rec['fecha'];
$titulo = $rec['titulo'];
$noticia = $rec['noticia'];
$foto = $rec['foto'];
?>
<form id="fmodnoticia" name="fmodnoticia" action="noticias_mod.php" method="post">
<input type="hidden" id="id" name="id" value="<?php echo $id;?>" />
<p><label for="fecha">Indique la fecha de la noticia (dd/mm/aaaa): <br />
<input type="text" id="fecha" name="fecha" maxlength="10" value="<?php echo date("d/m/Y", strtotime($fecha));?>"
required = "required" />
</label></p>
<p><label for="titulo">Introduzca el título de la noticia:<br />
<input type="text" id="titulo" name="titulo" value="<?php echo $titulo;?>"
maxlength="50" class="cajatexto" required = "required" />
</label></p>
<p><label for="noticia">Introduzca los detalles de la noticia:<br />
<textarea name=”noticia” id="noticia" title="Máximo 400 caracteres" cols=”100” rows=”4” onkeyup="if (this.value.length == 400) this.disabled = true;" class="cajamultitexto" required = "required">
<?php echo $noticia;?>
</textarea><br />
</label></p>
<p><label for="foto">Si lo desea, puede agregar una imagen a la noticia. Introduzca la ruta de la imagen: <br />
<input type="file" id="foto" name="foto" value="<?php echo $foto;?>"
maxlength="250" class="cajatexto" />
</label></p>
<p>
<input name="enviar" type="submit" value="Modificar Noticia" class="boton" />
</p>
</fieldset>
</form>
<?php } else {
'<p>No se ha encontrado la noticia indicada.</p>';
}
FICHERO noticias_mod.php:
<?php // Modificamos la noticia
// Inclusion de los archivos necesarios
include_once 'includes.php';
updateNoticia($conexion, $_POST);
$_SESSION['ultimoMensaje'] = "La noticia se modificó correctamente.<br />";
header("location: noticias_index.php?error=0");
exit();
FICHERO noticias_mod_form.php:
<?php // obtenemos la noticia en cuestion para modificarlo
$rec = getNoticia ($conexion, $_GET['id']);
if (is_array($rec) && sizeof($rec) > 0) {
$id = $rec['id'];
$fecha = $rec['fecha'];
$titulo = $rec['titulo'];
$noticia = $rec['noticia'];
$foto = $rec['foto'];
?>
<form id="fmodnoticia" name="fmodnoticia" action="noticias_mod.php" method="post">
<input type="hidden" id="id" name="id" value="<?php echo $id;?>" />
<p><label for="fecha">Indique la fecha de la noticia (dd/mm/aaaa): <br />
<input type="text" id="fecha" name="fecha" maxlength="10" value="<?php echo date("d/m/Y", strtotime($fecha));?>"
required = "required" />
</label></p>
<p><label for="titulo">Introduzca el título de la noticia:<br />
<input type="text" id="titulo" name="titulo" value="<?php echo $titulo;?>"
maxlength="50" class="cajatexto" required = "required" />
</label></p>
<p><label for="noticia">Introduzca los detalles de la noticia:<br />
<textarea name=”noticia” id="noticia" title="Máximo 400 caracteres" cols=”100” rows=”4” onkeyup="if (this.value.length == 400) this.disabled = true;" class="cajamultitexto" required = "required">
<?php echo $noticia;?>
</textarea><br />
</label></p>
<p><label for="foto">Si lo desea, puede agregar una imagen a la noticia. Introduzca la ruta de la imagen: <br />
<input type="file" id="foto" name="foto" value="<?php echo $foto;?>"
maxlength="250" class="cajatexto" />
</label></p>
<p>
<input name="enviar" type="submit" value="Modificar Noticia" class="boton" />
</p>
</fieldset>
</form>
<?php } else {
'<p>No se ha encontrado la noticia indicada.</p>';
}
FICHERO noticias.php:
<?php // Funciones relacionadas con las Noticias
function addNoticia ($conexion, $post) {
$consulta = "INSERT INTO `Noticias` (
`fecha` ,
`titulo` ,
`noticia` ,
`foto`
) VALUES (
?, ?, ?, ?
);";
try {
$sentencia = $conexion->prepare($consulta);
$sentencia->execute(array($post['fecha'],
$post['titulo'],
unescape($post['noticia']),
unescape($post['foto'])
));
return true;
} catch (PDOException $e) {
// return false;
echo '<script language=’JavaScript’>
alert(‘'.$e->getMessage().'’)</script>';
}
}
function updateNoticia ($conexion, $post) {
$consulta = "UPDATE `Noticias` SET
`fecha` = ?,
`titulo` = ?,
`noticia` = ?,
`foto` = ?
WHERE `Noticias`.`id` = ?
LIMIT 1 ;";
//echo $consulta;
try {
$sentencia = $conexion->prepare($consulta);
$sentencia->execute(array(
$post['fecha'],
unescape($post['titulo']),
unescape($post['noticia']),
unescape($post['foto']),
$post['id']));
return true;
} catch (PDOException $e) {
// return false;
echo '<script language=’JavaScript’>
alert(‘'.$e->getMessage().'’)</script>';
}
}
function deleteNoticia ($conexion, $id) {
$consulta = "DELETE FROM `Noticias` WHERE `Noticias`.`id` = ?
LIMIT 1 ;";
try {
$sentencia = $conexion->prepare($consulta);
$sentencia->execute(array($id));
return true;
} catch (PDOException $e) {
return false;
}
}
function getNoticia ($conexion, $id) {
$consulta = "SELECT * FROM `Noticias` WHERE `Noticias`.`id` = ?
LIMIT 1 ;";
try {
$sentencia = $conexion->prepare($consulta);
$sentencia->execute(array($id));
$result = $sentencia->fetchAll();
if (is_array($result) && sizeof($result) > 0) {
return $result[0];
} else {
return false;
}
} catch (PDOException $e) {
return false;
}
}
function getAllNoticias ($conexion) {
$consulta = "SELECT * FROM `Noticias` ORDER BY id DESC;";
try {
$sentencia = $conexion->prepare($consulta);
$sentencia->execute(array());
$result = $sentencia->fetchAll();
if (is_array($result) && sizeof($result) > 0) {
return $result;
} else {
return false;
}
} catch (PDOException $e) {
return false;
}
}