viernes, 9 de enero de 2015

Crear un blog en PHP - 1 de 2



Cree un formulario para añadir el contenido al blog:


Cree una página PHP para añadir el contenido a la base de datos y copie a la carpeta de imágenes la imagen que se ha transmitido. Esta página mostrará lo siguiente:


Cree una página PHP que muestre los distintos contenidos que se han añadido al blog.


Solución

Cree una carpeta de imágenes en el mismo lugar que sus php.

Cree la base de datos Blog.
  • El script SQL para crear el contenido de la tabla es:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
DROP TABLE IF EXISTS contenido;
CREATE TABLE contenido (
Id int(11) NOT NULL AUTO_INCREMENT,
Titulo varchar(25) NOT NULL,
Fecha Datetime NOT NULL,
Comentario text NOT NULL,
Imagen varchar(25) NOT NULL,
PRIMARY KEY (Id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  • La página del formulario_añadir.php es:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Blog</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<h2>Formulario para añadir el contenido al Blog</h2>
<form action="añadir_contenido.php" method="POST"
enctype="multipart/form-data">
<p>Título: <input type="text" name="titulo" /></p>
<p>Comentario: <br /><textarea name="comentario" rows="10"
cols="50"></textarea></p>
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<p>Seleccione una foto con un tamaño inferior a 2 MB.</p>
<input type="file" name="foto">
<br /><br />
<input type="submit" name="ok" value="Enviar">
</form>
<br />
<a href="mostrar blog.php" >Página de visualización del blog</a> </body> </html>
  • La página insertar_contenido.php es:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang=”es” lang=”es”>
<head>
<title>Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
</head>
<body>
<?php
$connect = mysqli_connect("127.0.0.1", "root", "", "blog");
/* Comprobar la conexión*/
if (!$connect) {
echo "fallo de conexión : ".mysqli_connect_error();
exit();
}
if ($_FILES[’imagen’][’error’]) {
switch ($_FILES[’imagen’][’error’]){
case 1: // UPLOAD_ERR_INI_SIZE
echo "El tamaño del archivo supera el límite
permitido por el servidor (parámetro upload_max_filesize del archivo
php.ini).";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "El tamaño del archivo supera el límite permitido
por el formulario (parámetro post_max_size del archivo php.ini).";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "El envío del archivo se ha interrumpido durante
la transmisión.";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "El tamaño del archivo que ha enviado es nulo.";
break;
}
}
else {
//si no hay ningún error, entonces $_FILES[’nombre
del_archivo’][’error’]
//vaut 0
echo "Ningún error en la transferencia del archivo.<br />";
if ((isset($_FILES[’photo’][’name’])&&($_FILES[’imagen’][’error’] ==
UPLOAD_ERR_OK))) {
$destino de ruta = ’imágenes/’;
//desplazamiento del archivo del directorio temporal (almacenado
//por defecto) al directorio de destino
move_uploaded_file($_FILES[’imagen’][’tmp_name’],
$destino de ruta.$_FILES[’imagen’][’name’]);
echo "El archivo ".$_FILES[’imagen’][’name’]." Se ha copiado en el
directorio de fotos";
}
else {
echo "El archivo no se ha copiado en el directorio de fotos.";
}
}
$consulta = "INSERT INTO contenido (Título, Fecha, Comentario, Imagen)
VALUES (’".htmlentities(addslashes($_POST[’título’]),
ENT_QUOTES)."’,’".date("Y-m-d H:i:s")."’,’".htmlentities
(addslashes($_POST[’comentario’]), ENT_QUOTES)."’,
’".$_FILES[’imagen’][’name’]."’)";
$resultado = mysqli_query($connect,$consulta);
$iniciar_sesion = mysqli_insert_id($connect);
/* Cierre de la conexión */
mysqli_close($connect);
if ($iniciar_sesion != 0) {
echo "<br />La adición del comentario se ha hecho con éxito.<br /><br />";
}
else {
echo "<br />El comentario no se ha añadido.<br /><br />";
}
?>
<a href="formulario_añadir.php" >volver a la página de añadir</a>
</body>
</html>
  • La página mostrar_blog.php es:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Blog</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<h2>Blog</h2>
<hr />
<?php
$connect = mysqli_connect("127.0.0.1", "root", "", "blog");
/* Comprobar la conexión */
if (!$connect) {
echo "fallo de la conexión : ".mysqli_connect_error();
exit();
}
$consulta = "SELECT * FROM contenido ORDER BY Date";
if ($resultado = mysqli_query($connect,$consulta)) {
Date_default_timezone_set(’Europe/Paris’);
/* busca la matriz asociativa */
while ($lregistro = mysqli_busca_assoc($resultado)) {
$dt_inicio = Date_create_from_format(’Y-m-d H:i:s’,
$registro[’Fecha’]);
echo "<h3>".$registro[’Título’]."</h3>";
echo "<h4>El ".$dt_inicio->formato(’d/m/Y H:i:s’)."</h4>";
echo "<div style=’width:400px’>".$registro[’Comentario’]."
</div>";
if ($registro[’Imagen’] != "") {
echo "<img src=’imagen/".$registro[’imagen’].
"’ width=’200px’
height=’200px’/>";
}
echo "<hr />";
}
}
?>
<br />
<a href="formulario_añadir.php" >Volver a la página de inserción</a>
</body>
</html>


Espero haber ayudado en algo. Hasta la próxima oportunidad!









6 comentarios:

  1. Respuestas
    1. Hola Anónimo, gracias por la visita y el aporte de tu comentario!!
      Los mejores deseos!! Hasta cualquier momento!

      Eliminar
  2. Hola, buen ejemplo, pero el código tiene algunas inconsistencias, por favor si las puedes revisar por ejemplo en el archivo mostrar_blog.php en la parte de while ($lregistro = mysqli_busca_assoc($resultado)) { quedaría así while ($registro = mysqli_fetch_assoc($resultado)) {. También existen errores en algunos nombres de variables. Saludos

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, gracias por la visita y el aporte de tu comentario!
      Tus observaciones son de mucho agrado!!
      Éxitos! Hasta cualquier instante!

      Eliminar
  3. A ver si lo mejoran.... está muy interessante este aporte de blog.... pero no he logrado nada ya que soy nuevo en php

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, gracias por la visita y el aporte de tu comentario!!
      Muy cierto, para esta publicación se requiere un poquito de conocimientos afianzados de php.
      Los mejores deseos!! Hasta cualquier momento!

      Eliminar