Justi 10 de noviembre de 2008 a las 12.30
   Imprimir artículo
elWebmaster.com

Taller de PHP:Nuestro blog – Sistema de noticias (4)


Hola, acá estamos de nuevo con el taller de PHP. En el día de hoy vamos a ver cómo editar una noticia y cómo borrarla.

Si vienen siguiendo el taller más o menos al día verán que no hay grandes diferencias con respecto a las modificaciones y bajas de las categorías. Pero bueno, no nos adelantemos y vamos a lo nuestro.

Trabajaremos hoy únicamente sobre el archivo admin/noticias.php.

  1. <?
  2.  
  3. // iniciamos session
  4. session_start ();
  5.  
  6. // archivos necesarios
  7. require_once 'config.php';
  8. require_once 'conexion.php';
  9. require_once 'esUsuario.php';
  10.  
  11. // obtengo puntero de conexion con la db
  12. $dbConn = conectar();
  13.  
  14. // verificamos que no este conectado el usuario
  15. if ( !empty( $_SESSION&#91;'usuario'] ) && !empty($_SESSION['password']) ) {
  16.     $arrUsuario = esUsuario( $_SESSION&#91;'usuario'], $_SESSION['password'], $dbConn );
  17. }
  18.  
  19. // verificamos que sea un admin
  20. if ( empty($arrUsuario) || $arrUsuario&#91;'tipo'] != 'admin' ) {
  21.     header( 'Location: ../index.php' );
  22.     die;
  23. }
  24.  
  25. // borramos una noticia si obtenemos la variable GET del
  26. if ( !empty($_GET&#91;'del']) ) {
  27.    
  28.     $query  = "DELETE FROM `noticias` WHERE idNoticia = {$_GET['del']}";
  29.     $result = mysql_query($query, $dbConn);
  30.        
  31.     header( 'Location: noticias.php?dele=true' );
  32.     die;
  33.    
  34. }
  35.  
  36. // agregamos una noticia en la db
  37. // si se envio el formulario
  38. if ( !empty($_POST&#91;'submit']) ) {
  39.    
  40.     // definimos las variables
  41.     if ( !empty($_POST&#91;'titulo']) )         $titulo         = $_POST['titulo'];
  42.     if ( !empty($_POST&#91;'copete']) )         $copete         = $_POST['copete'];
  43.     if ( !empty($_POST&#91;'cuerpo']) )         $cuerpo         = $_POST['cuerpo'];
  44.     if ( !empty($_POST&#91;'idCategoria']) )    $idCategoria    = $_POST['idCategoria'];
  45.     if ( !empty($_POST&#91;'fPublicacion']) )   $fPublicacion   = $_POST['fPublicacion'];  
  46.    
  47.     // completamos la variable error si es necesario
  48.     if ( empty($titulo) )   $error&#91;'titulo']        = 'Es obligatorio completar el t&iacute;tulo de la noticia';
  49.     if ( empty($copete) )   $error&#91;'copete']        = 'Es obligatorio completar el copete de la noticia';
  50.     if ( empty($cuerpo) )   $error&#91;'cuerpo']        = 'Es obligatorio completar el cuerpo de la noticia';
  51.     if ( empty($idCategoria) )  $error&#91;'idCategoria']   = 'Es obligatorio seleccionar una categor&iacute;a para la noticia';
  52.    
  53.     // si no hay errores registramos al usuario
  54.     if ( empty($error) ) {
  55.        
  56.         // inserto los datos de registro en la db
  57.         $fCreacion = date("Y-m-d H:i:s");
  58.         $fModificacion = date("Y-m-d H:i:s");
  59.         if ( empty($fPublicacion) ) $fPublicacion = date("Y-m-d H:i:s");
  60.         $idUsuario = $arrUsuario&#91;'idUsuario'];
  61.         $query  = "INSERT INTO `noticias` (titulo,copete,cuerpo,idCategoria,idUsuario,fCreacion,fModificacion,fPublicacion) VALUES ('$titulo','$copete','$cuerpo','$idCategoria','$idUsuario','$fCreacion','$fModificacion','$fPublicacion')";
  62.         $result = mysql_query($query, $dbConn);
  63.         header( 'Location: noticias.php?add=true' );
  64.         die;
  65.        
  66.     }
  67.        
  68. }
  69.  
  70. // si se envio el formulario de edicion
  71. if ( !empty($_POST&#91;'submitEdit']) ) {
  72.    
  73.     // definimos las variables
  74.     if ( !empty($_POST&#91;'idNoticia']) )      $idNoticia      = $_POST['idNoticia'];
  75.     if ( !empty($_POST&#91;'titulo']) )         $titulo         = $_POST['titulo'];
  76.     if ( !empty($_POST&#91;'copete']) )         $copete         = $_POST['copete'];
  77.     if ( !empty($_POST&#91;'cuerpo']) )         $cuerpo         = $_POST['cuerpo'];
  78.     if ( !empty($_POST&#91;'idCategoria']) )    $idCategoria    = $_POST['idCategoria'];
  79.     if ( !empty($_POST&#91;'fPublicacion']) )   $fPublicacion   = $_POST['fPublicacion'];  
  80.    
  81.     // completamos la variable error si es necesario
  82.     if ( empty($idNoticia) )    $error&#91;'idNoticia']         = 'Es obligatorio tener la id de la noticia que se desea modificar';
  83.     if ( empty($titulo) )       $error&#91;'titulo']            = 'Es obligatorio completar el t&iacute;tulo de la noticia';
  84.     if ( empty($copete) )       $error&#91;'copete']            = 'Es obligatorio completar el copete de la noticia';
  85.     if ( empty($cuerpo) )       $error&#91;'cuerpo']            = 'Es obligatorio completar el cuerpo de la noticia';
  86.     if ( empty($idCategoria) )  $error&#91;'idCategoria']       = 'Es obligatorio seleccionar una categor&iacute;a para la noticia';
  87.    
  88.     // si no hay errores editamos la noticia
  89.     if ( empty($error) ) {
  90.        
  91.        
  92.         // actualizamos la fecha de modificacion y de publicacion
  93.         $fModificacion = date("Y-m-d H:i:s");
  94.         if ( empty($fPublicacion) ) $fPublicacion = date("Y-m-d H:i:s");
  95.         $idUsuario = $arrUsuario&#91;'idUsuario'];
  96.        
  97.         // inserto los datos de registro en la db
  98.         $query  = "UPDATE `noticias` set titulo = '$titulo', copete = '$copete', cuerpo = '$cuerpo', idCategoria = $idCategoria, idUsuario = $idUsuario, fModificacion = '$fModificacion', fPublicacion = '$fPublicacion' WHERE idNoticia = $idNoticia";
  99.         $result = mysql_query($query, $dbConn);
  100.        
  101.         header( 'Location: noticias.php?edit=true' );
  102.         die;
  103.        
  104.     }
  105.        
  106. }
  107.  
  108. // traemos listado de categorias
  109. $arrCategorias = array();
  110. $query = "SELECT idCategoria, valor FROM `categorias` ORDER BY valor ASC";
  111. $resultado = mysql_query ($query, $dbConn);
  112. while ( $row = mysql_fetch_assoc ($resultado)) {
  113.     array_push( $arrCategorias,$row );
  114. }
  115.  
  116. // traemos listado de noticias
  117. $arrNoticias = array();
  118. $query = "SELECT idNoticia, titulo FROM `noticias` ORDER BY idNoticia DESC";
  119. $resultado = mysql_query ($query, $dbConn);
  120. while ( $row = mysql_fetch_assoc ($resultado)) {
  121.     array_push( $arrNoticias,$row );
  122. }
  123.    
  124. // si tenemos una categoria puntual
  125. if ( !empty($_GET&#91;'id']) ) {
  126.    
  127.     // traemos una categoria
  128.     $query = "SELECT idNoticia, titulo, copete, cuerpo, idCategoria, fPublicacion FROM `noticias` WHERE idNoticia = {$_GET['id']}";
  129.     $resultado = mysql_query ($query, $dbConn);
  130.     $row = mysql_fetch_assoc ($resultado);
  131. }
  132.  
  133. ?>
  134. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  135. <html xmlns="http://www.w3.org/1999/xhtml">
  136. <head>
  137.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  138.     <title>Blog Personal</title>
  139. </head>
  140.  
  141. <body>
  142.  
  143.     <h1>Blog Personal</h1>
  144.     <p>Bienvenido <?= $arrUsuario&#91;'usuario'] ?> - <a href="index.php">Panel de control</a> - <a href="../index.php?salir=true">Salir</a></p>
  145.     <h2>Noticias</h2>
  146.     <? if ( !empty($_GET&#91;'add']) ) { ?>
  147.     <div style="background-color: #fdfdfd;border:1px solid #ff8800;width:90%;padding:5px">La noticia se agreg&oacute; con &eacute;xito.</div>
  148.     <? } elseif ( !empty($_GET&#91;'dele']) ) { ?>
  149.     <div style="background-color: #fdfdfd;border:1px solid #ff8800;width:90%;padding:5px">La noticia ha sido borrada con &eacute;xito.</div>
  150.     <? } elseif ( !empty($_GET&#91;'edit']) ) { ?>
  151.     <div style="background-color: #fdfdfd;border:1px solid #ff8800;width:90%;padding:5px">La noticia ha sido editada con &eacute;xito.</div>
  152.     <? } ?>
  153.    
  154.     <div>
  155.         <h3>Listado de Noticias</h3>
  156.         <table style="width:90%;padding:5px;border:1px solid #cccccc">
  157.             <tr>
  158.                 <th style="background-color:#cccccc;padding:5px;">id</th>
  159.                 <th style="width:90%;background-color:#cccccc;padding:5px;">t&iacute;tulo</th>
  160.                 <th style="background-color:#cccccc;padding:5px;width:10%"></th>
  161.             </tr>
  162.             <? foreach ($arrNoticias as $noticias) { ?>
  163.             <tr>
  164.                 <td style="padding:5px;"><? echo $noticias&#91;'idNoticia']; ?></td>
  165.                 <td style="padding:5px;"><? echo $noticias&#91;'titulo']; ?></td>
  166.                 <td style="padding:5px;"><a href="noticias.php?id=<? echo $noticias['idNoticia']; ?>">Editar</a> - <a href="noticias.php?del=<?= $noticias['idNoticia'] ?>">Borrar</a>
  167.             </tr>
  168.             <? } ?>
  169.         </table>
  170.     </div>
  171.    
  172.     <? if ( empty($_GET&#91;'id']) ) { ?>
  173.         <div>
  174.             <h3 id="add">Agregar nueva noticia</h3>
  175.             <? if (!empty($error)) { ?>
  176.                 <ul>
  177.                 <? foreach ($error as $mensaje) { ?>
  178.                     <li><?= $mensaje ?></li>
  179.                 <? } ?>
  180.                 </ul>
  181.             <? } ?>
  182.             <form action="noticias.php" method="post">
  183.            
  184.                 <p>
  185.                     <label for="titulo">T&iacute;tulo de la noticia</label><br />
  186.                     <input name="titulo" type="text" value="" />
  187.                 </p>
  188.                 <p>
  189.                     <label for="idCategoria">Categoría</label><br />
  190.                     <select name="idCategoria">
  191.                         <option value="">Seleccione una categoría</option>
  192.                         <option value="">------------------------</option>
  193.                         <? foreach ( $arrCategorias as $categoria ) { ?>
  194.                         <option value="<? echo $categoria['idCategoria']; ?>"><? echo $categoria&#91;'valor']; ?></option>
  195.                         <? } ?>
  196.                     </select>
  197.                 </p>
  198.                 <p>
  199.                     <label for="fPublicacion">Fecha de publicacion (aaaa-mm-dd hh:mm:ss) Ej: 2008-10-29 17:20:00 </label><br />
  200.                     <input name="fPublicacion" type="text" value="" />
  201.                 </p>
  202.                 <p>
  203.                     <label for="copete">Copete</label><br />
  204.                     <textarea rows="5" cols="50" name="copete"></textarea>
  205.                 </p>
  206.                 <p>
  207.                     <label for="cuerpo">Cuerpo</label><br />
  208.                     <textarea rows="10" cols="50" name="cuerpo"></textarea>
  209.                 </p>
  210.                 <p>
  211.                     <input name="submit" type="submit" value="Agregar" />
  212.                 </p>
  213.             </form>
  214.         </div>
  215.     <? } ?>
  216.    
  217.     <? if ( !empty($_GET&#91;'id']) ) { ?>
  218.         <div style="background-color:#ff8800;padding:5px; margin-top:10px;">
  219.             <h3 id="add">Editar noticia</h3>
  220.             <? if (!empty($error)) { ?>
  221.                 <ul>
  222.                 <? foreach ($error as $mensaje) { ?>
  223.                     <li><?= $mensaje ?></li>
  224.                 <? } ?>
  225.                 </ul>
  226.             <? } ?>
  227.             <form action="noticias.php" method="post">
  228.                 <p>
  229.                     <label for="titulo">T&iacute;tulo de la noticia</label><br />
  230.                     <input name="titulo" type="text" value="<? echo $row['titulo']; ?>" />
  231.                 </p>
  232.                 <p>
  233.                     <label for="idCategoria">Categoría</label><br />
  234.                     <select name="idCategoria">
  235.                         <option value="">Seleccione una categoría</option>
  236.                         <option value="">------------------------</option>
  237.                         <? foreach ( $arrCategorias as $categoria ) { ?>
  238.                         <option value="<? echo $categoria['idCategoria']; ?>" <? if ( $categoria&#91;'idCategoria'] == $row['idCategoria'] ) echo 'selected="selected"' ?>><? echo $categoria&#91;'valor']; ?></option>
  239.                         <? } ?>
  240.                     </select>
  241.                 </p>
  242.                 <p>
  243.                     <label for="fPublicacion">Fecha de publicacion (aaaa-mm-dd hh:mm:ss) Ej: 2008-10-29 17:20:00 </label><br />
  244.                     <input name="fPublicacion" type="text" value="<? echo $row['fPublicacion']; ?>" />
  245.                 </p>
  246.                 <p>
  247.                     <label for="copete">Copete</label><br />
  248.                     <textarea rows="5" cols="50" name="copete"><? echo $row&#91;'copete']; ?></textarea>
  249.                 </p>
  250.                 <p>
  251.                     <label for="cuerpo">Cuerpo</label><br />
  252.                     <textarea rows="10" cols="50" name="cuerpo"><? echo $row&#91;'cuerpo']; ?></textarea>
  253.                 </p>
  254.                 <p>
  255.                     <input name="idNoticia" type="hidden" value="<? echo $row['idNoticia']; ?>" />
  256.                     <input name="submitEdit" type="submit" value="Editar" />
  257.                 </p>
  258.                
  259.                
  260.             </form>
  261.         </div>
  262.     <? } ?>
  263.    
  264. </body>
  265. </html>

Fíjense que al archivo que teníamos la semana pasada le agregamos algunas condiciones extras, como ser si se tiene una id de borrado, borramos la linea de la base de datos. Y lo mismo si se tiene la variable post de edición, verificamos que estén todos los datos obligatorios y editamos.

En la parte del html lo mismo, la única gran diferencia con respecto a la edición de categorías es que ahora tenemos un “selectbox” que hay que seleccionar. En realidad no tiene gran ciencia, al foreach que usamos para rellenar el selectbox le agregamos una nueva condición, preguntando si la id de la categoría que le corresponde coincide con la id de categoría que posee la noticia, en caso verdadero, vamos a imprimir un select=”select” para que al editar la noticia no perdamos ese dato.

Bueno, bastante sencilla la clase de hoy, pero sirve para ir afianzando los conocimientos. 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 (11)

  1. Geraldo dice:

    Hola… Nos podrían incluir una práctica en para hacer un sitio web con dreamweaver/html?
    Como si estuviera en clase y el maestro nos dice: hoy haremos la siguiente práctica…

    Si Plis…! Es que no me quedó muy claro… :-(

  2. Juan Manuel dice:

    ¡Hola! El Taller de Dreamweaver/HTML te enseña todo de cero, está publicado aquí en elWebmaster.com.

    Te dejo el enlace: http://www.elwebmaster.com/talleres/taller-de-adobe-dreamweaver-temario

    ¡Espero que lo encuentres muy útil!
    ¡Saludos!

  3. Gabriel Adame Cordova dice:

    un favor estoy tratando de llamar un archivo php en un cuerpo de una pagina para un software que estoy desarrollando pero no me aparece ningun dato en la opcion te paso el codigo a ver si me puedes hechar la mano de anate mano gracias y tu taller esta muy bueno lo he seguido desde la mitad porque me encontre con la pagina de pura casualidad
    Execute(“SELECT * FROM escritos WHERE id='{$_GET[‘id’]}'”);
    $p1 = _db_()->Execute(“SELECT * FROM escritos ORDER BY fecha ASC”);
    if(!$p1->fields[‘id’]){}else{
    $echo =’FORMATOS EXISTENTESDa clic en el Titulo para modificar los datos.

    fecha
    cliente
    ‘;

    $echo.=”;
    }
    return $data.$echo;
    }
    echo ‘

    window.onload = function()
    {
    var oFCKeditor = new FCKeditor( \’txt\’ ) ;
    oFCKeditor.BasePath = \’fckeditor/\’ ;
    oFCKeditor.Width=\’700\’ ;
    oFCKeditor.Height=\’350\’ ;
    }
    ‘;

    ?>

  4. Lisbeth dice:

    hola esta buena la explicacion pero no corre no tendrian toda pagina unida
    me la pasan por fa ……

  5. cristian dice:

    justi podrias decirme o sea explicarme si todos esos codigos php que estas o estabas enseñando ¿lo vas copiando y pegando en dreamweaver una vez llamada la opcion (llamar javascript) o lo escribis a mano en la parte javascript de dreamweaver? porque yo llamaba javascript y ahi despues que copiaba le pegaba ¡claro que quedaba como un comportamiento de java!, despues que hacia todo eso copiando y pegando cada uno de los codigos php, hacia click en el mundito o sea para ver el como quedaba despues y lo que veia constantemente eran errores y orrores que se me formaban despues de haber copiado y pegado cada codigo! entonces pregunto ¿todos esos codigos se pueden utilizar en dreamweaver o que programa utilizan para poder armar cada “accion” o sea cada actuar que serian los mismos codigos. Si te digo que quede viejo y con un dolor de cabeza ya que no me salio nada de nada hasta ahora. Me gustaria si sos amable en ir explicandome pero de manera mas compleja en sentido a (explicandome en donde debo dirigirme despues de escribir cada codigo) ¡Puede ser justi! espero tus respuestas ya que para mi son re importantes

  6. Justi dice:

    @cristian por favor, lee el taller desde el comienzo, saludos.

  7. Agustin dice:

    disculpame me podrias pasar la tabla de la base de datos por que no me manejo mucho con ese tema

  8. Pepe dice:

    Alguien sabe porque no se me muestran las noticias en la pagina principal?
    Intente cambiar lo del timestamp de la tabla pero me da erro

  9. luis dice:

    si esta muy bien, pero m gustaria saber como insertar unos botones q permitan insertar codigo html, para redacta mejor una noticia osea usando imagenes linkss.. etc… alguna idea..

  10. Jesus dice:

    ola que tal solo quisiera saber como le aria para que cambiara la password o editar mis datos de usuario en el mismo panel.

  11. Jags dice:

    Excelente taller Justi! soy diseñador y con este taller estoy aprendiendo mucho. Todo bien hasta ahora!

Deja tu opinión

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