¡Hola de nuevo! Me imagino que habrán estado estudiando casi todo lo que estuvimos viendo hasta aquÃ, ya que en la clase de hoy vamos a dar una vueltita por casi todos los temas.
Lo que vamos a hacer es continuar con nuestro ejemplo de la tabla de noticias, vamos a traer la noticia que queremos editar y para ello usaremos una variable “get” con la ID de la noticia. Luego con esa ID, haremos una consulta para traer todos los datos que incluiremos en un formulario y a su vez enviaremos las variables “post” con los nuevos datos para editarla. ¿Sencillo, no?
Editando una noticia
Supongamos que el archivo nuestro es editar-noticias.php, lo que vamos a hacer es llamarlo de la siguiente manera:
http://direccion.com/editar.php?idNoticia=23
Entonces en nuestro archivo (previo nos conectamos con la base de datos como siempre) vamos a tener un if para ver si existe una variable get idNoticia, en caso de que exista hacemos la consulta para traer los datos completos
if ( !empty($_GET['idNoticia']) ) {
// traemos la noticia
$query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE idNoticia = {$_GET['idNoticia']} limit 1″;
$response = mysql_query($query, $conn);
$noticia = mysql_fetch_assoc($response);
}
Y luego, una vez que tenemos nuestra variable noticia con todos los datos de la base de datos, vamos a completar el formulario con los datos originales de la siguiente manera:
<h1>Agregar Nueva Noticia</h1>
<form action="editar-noticias.php" method="post">
<label for="titulo">TÃtulo</label><br />
<input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?> ” type=”text” /><br /><br />
<label for=”cuerpo”>Cuerpo</label><br />
<textarea id=”cuerpo” name=”cuerpo” rows=”5″ cols=”50″><? echo $noticia['cuerpo']; ?></textarea><br /><br />
<label for=”estado”>Estado</label>
<select id=”estado” name=”estado”>
<option value=”publicado” <? if ( $noticia['estado'] == ‘publicado’ ) echo ’selected=”selected”‘; ?>>Publicado</option>
<option value=”borrado” <? if ( $noticia['estado'] == ‘borrado’ ) echo ’selected=”selected”‘; ?>>Borrado</option>
</select><br /><br />
<button type=”submit” name=”submit” value=”1″>Editar Noticia</button>
<input name=”idNoticia” value=”<? echo $noticia['idNoticia']; ?>” type=”hidden” />
</form>
Como verán hay dos cambios importantes con respecto al formulario de ingreso de noticias, en este completamos el atributo value con los datos originales. Y el otro cambio es que agregamos un nuevo campo al formulario de tipo hidden, o sea, oculto con el valor de la ID de la noticia que estamos editando.
Este formulario lo enviaremos a un archivo que contendrá el script, puede ser este mismo archivo, de la misma forma que lo hicismos al ingresar una noticia.
Si hiciéramos eso, tendrÃamos que tener entonces (antes de hacer nuestra consulta para traer la noticia) otro if para saber si recibimos las variables post para editarla.
if ( !empty($_POST['submit']) ) {
$query = “UPDATE `noticias` set titulo = ‘{$_POST['titulo']}’, set cuerpo = ‘{$_POST['cuerpo']}’, set estado = ‘{$_POST['estado']}’ WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1″;
$response = mysql_query($query, $conn);
}
Nuestro archivo terminado queda de la siguiente manera:
<?
// datos de configuracion
$ip = 'localhost';
$usuario = 'usuario';
$password = 'password';
$db_name = 'baseDeDatos';
// conectamos con la db
$conn = mysql_pconnect($ip,$usuario,$password) or die();
// seleccionamos la base de datos
$huboerror = mysql_select_db($db_name,$conn) or die();
// si se envia el formulario de edicion
if ( !empty($_POST['submit']) ) {
$query = “UPDATE `noticias` set titulo = ‘{$_POST['titulo']}’, set cuerpo = ‘{$_POST['cuerpo']}’, set estado = ‘{$_POST['estado']}’ WHERE idNoticia = {$_POST['idNoticia']} LIMIT 1″;
$response = mysql_query($query, $conn);
}
// si tenemos id de noticia
if ( !empty($_GET['idNoticia']) ) {
// traemos la noticia
$query = "SELECT idNoticia,titulo,cuerpo,estado FROM `noticias` WHERE idNoticia = {$_GET['idNoticia']} limit 1″;
$response = mysql_query($query, $conn);
$noticia = mysql_fetch_assoc($response);
}
?>
<html>
<head>
<title>Formulario de Edición de Noticias</title>
</head>
<body>
<h1>Agregar Nueva Noticia</h1>
<form action="editar-noticias.php" method="post">
<label for="titulo">Titulo</label><br />
<input id="titulo" name="titulo" value="<? echo $noticia['titulo']; ?> ” type=”text” /><br /><br />
<label for=”cuerpo”>Cuerpo</label><br />
<textarea id=”cuerpo” name=”cuerpo” rows=”5″ cols=”50″><? echo $noticia['cuerpo']; ?></textarea><br /><br />
<label for=”estado”>Estado</label>
<select id=”estado” name=”estado”>
<option value=”publicado” <? if ( $noticia['estado'] == ‘publicado’ ) echo ’selected=”selected”‘; ?>>Publicado</option>
<option value=”borrado” <? if ( $noticia['estado'] == ‘borrado’ ) echo ’selected=”selected”‘; ?>>Borrado</option>
</select><br /><br />
<button type=”submit” name=”submit” value=”1″>Editar Noticia</button>
<input name=”idNoticia” value=”<? echo $noticia['idNoticia']; ?>” type=”hidden” />
</form>
</body>
Borrando una noticia
Para borrar una noticia lo vamos a hacer de la misma manera, utilizando una variable get que contenga la ID de la noticia que estamos borrando.
if ( !empty($_GET['idNoticia') ) {
$query = DELETE FROM `noticias` WHERE idNoticia = {$_GET['idNoticia']} LIMIT 1″;
$response = mysql_query($query, $conn);
}
Bueno, espero que les haya gustado la clase de hoy, hasta la semana que viene.
| << CLASE ANTERIOR |








Martes, 10 de Junio de 2008 a las 10.52
Deseo un software para programar en php. como lo consigo; ya que estoy recibiendo los talleres de php y no se en que editor programar aquÃ. Ahora. Adobe Dreamwaver sirve?
Gracias.
Ah, es muy interesante los talleres. Les agradezco todo.
Lunes, 11 de Agosto de 2008 a las 13.20
solo se puede actualisar con link , es decir con GET ? , con POST no se puede? como seria con POST?
Lunes, 25 de Agosto de 2008 a las 16.22
Hola!!!
he seguido este blog (desde el taller de flash y ahora en php) y está super, gracias por la aportación… estás ayudando a que me entusiasme a programar en php… actualmente juego muy poco con cold fusion
Saludos y felicidades por los talleres
Martes, 26 de Agosto de 2008 a las 11.07
Hola de nuevo, ya quedó lo del post pasado….
saludos!