Justi Lunes, 9 de Junio de 2008 a las 13.00
   Imprimir artículo
elWebmaster.com

Taller de PHP: Actualizar y borrar registros (2)

Logo del taller PHP¡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  

CLASE SIGUIENTE >>

Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (7)

  1. RUBEN DARIO DURANGO YANES dice:

    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.

  2. pablox dice:

    solo se puede actualisar con link , es decir con GET ? , con POST no se puede? como seria con POST?

  3. Luis G Padilla dice:

    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

  4. Luis G Padilla dice:

    Hola de nuevo, ya quedó lo del post pasado….

    saludos!

  5. power dice:

    Hola como se puede eliminar de un noticias todos los comentarios de dicha noticia mas claro cuando elimino una noticia me gustaría poder eliminar todo sus comentarios de dicha noticias al mismo tienpo que elimino la noticia lo cual tendría que eliminar dos registros de tablas diferentes noticias y comentarios, se puede hacer con dos reconset de cada tabla por el metodo GET pasar variable de url de cada una de tablas
    ejemplo eliminar.php?id_noticias=id&id_comentarios=id_delete.

    Esto seria correcto para poder eliminar el registro de noticia mas todos los comentarios de dicha noticia o no.

  6. Luis Gutierrez dice:

    Saludos.
    Arriba se menciona que editar-noticia.php va a ser llamado con:
    http://direccion.com/editar.php?idNoticia=23
    Pregunta? desde donde
    Pregunta? por qué el agregado …_idNoticia=23
    Gracias

  7. power dice:

    hola buenas me gustaria saber si se puede hacer en 3 tablas diferentes ejemplo
    1-categoria
    2-noticias
    3-comentarios
    en realidad lo que yo busco es poder eliminar ejemplo una categoria con sus correspondiente noticias y comentarios y si esto se puede hacer en tablas MyISAM

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Iniciar Sesión