Crear un blog sencillo desde cero en php y mysql

Hoy voy a explicar como crear un blog desde cero usando php y mysql.

Una de las maneras mas gratificantes a la hora de aprender es obtener resultados rapidos, por ese motivo vamos a ver como hacer un blog dinamico usando muy pocas lineas y ficheros.


Para la creacion de la base de datos os adjunto el script que he usado para la creacion de la bd.

CREATE TABLE post (
  id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  author varchar(30) NOT NULL,
  title varchar(200) NOT NULL,
  content varchar(800) NOT NULL,
  date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);


INSERT INTO post (id, author, title, content, date) VALUES
(1, 'Autor 1', 'Titulo 1', 'Contenido del post 1', '2017-06-10 21:26:07'),
(2, 'Autor 2', 'Titulo 2', 'Contenido del post 2', '2017-06-11 21:26:07'),
(3, 'Autor 3', 'Titulo 3', 'Contenido del post 3', '2017-06-12 21:26:07'),
(4, 'Autor 4', 'Titulo 4', 'Contenido del post 4', '2017-06-13 21:26:07'),
(5, 'Autor 5', 'Titulo 5', 'Contenido del post 5', '2017-06-14 21:26:07');

El siguiente paso es crear el fichero donde estaran los parametros de conexión (config.php)

 <?php
define('DBUSER','root');
define('DBPWD','');
define('DBHOST','localhost');
define('DBNAME','blog');
?> 

En el siguiente fichero crearemos la logica de la aplicación (model.php), en el incluimos el fichero de configuración para poder realizar la conexión y añadiremos tres metodos, uno para iniciar la conexión a la bd, otro para obtener el listado de post y el ultimo para obtener un post en concreto.

<?php
// model.php
 
 require_once 'config.php'; 

 
function openConex(){
	$conex=new mysqli(DBHOST, DBUSER, DBPWD, DBNAME); 
	
    return $conex;
}    
 
function getPosts(){	
	$mysqli = openConex();
	
	$result = $mysqli->query('SELECT id, title FROM post ORDER BY id desc');	

	return $result;	
}

function getPostById($id)
{
	$mysqli = openConex();
 
	$result = $mysqli->query('SELECT date, title, content, author FROM post WHERE id ='.$id);
	$row = mysqli_fetch_assoc($result);
	
    return $row;
}

?>

 <?php 
// index.php 
require_once 'model.php'; 
$posts = getPosts(); 
require 'templates/list.php'; 
?> 

El siguente paso es crear el controlador de la aplicación (index.php) que incluye la la logica de la aplicación y la primera vista de la aplicación (templates/list.php) a la que le pasaremos el listado de post.

Ahroa paso a explicar lo que vamos a hacer para mostrar los post (tempaltes/list.php), en este fichero crearemos una lista de elementos html en el que con un bucle foreach incrustaremos un enlace para cada una de las entradas al blog.

 
<html>
    <body>
		<h1>List of Posts</h1>
		<ul>
			<?php foreach ($posts as $post): ?>
			<li>
				<h2>
					<a href="templates/show.php?id=<?php echo $post['id'] ?>">
						<?php echo $post['title'] ?>
					</a>
				<h2>
	
			</li>
			<?php endforeach; ?>
		</ul>
    </body>
</html>

Y por ultimo crearemos la vista donde mostraremos la entrada al completo (templates/show.php)

<?php require_once '../model.php'; ?>

<?php $post = getPostById($_GET['id']); ?>

<html>
	<body>
		<h1><?php echo $post['title'] ?></h1>
			<div><?php echo $post['date'] ?></div>
			<div><?php echo $post['author'] ?></div>
			<br>
			<div>
				<?php echo $post['content'] ?>
			</div>
			<div>
			<br>
				<a href="showPdf.php?id=<?php echo $_GET['id'] ?>">Print PDF</a>
			<br>
			<br>
				<a href="../">Return to main page</a>
			</div>
		</body>
</html>

Aqui puedes ver una demo en funcionamiento http://programacionconphp.com/dev/simpleBlog/

Y el codigo puedes descargarlo desde aqui: https://github.com/victorgarciasisi/basicBlog

11 comentarios en «Crear un blog sencillo desde cero en php y mysql»

  1. Hola Victor,
    Gracias por compartir este código. Solo quiero hacer una observación. Me gustaría agregarle un dashboard o backoffice para poder cargar el contenido de los post. Algo simple claro, no al nivel de detalle de WordPress o Joomla.
    Ocurre que este código muestra los post de la bb.dd, y para crear un post debo cargar el contenido en la bb.dd. Si llego a implementarlo lo voy a compartir aquí mismo.
    Slds,

    Responder
  2. hola buen dia quisiera saber si me pueden colaborar , tengo que hacer una especie de crear un grupo alg basico,
    como nombre del grupo y descripcion
    luego se muestre lo que ingrese en la misma pagina y después pueda comentar ese grupo lo estoy haciendo en wordpress con php y que los datos que ingresen queden en la base de datos el codigo php lo hago por medio del plugin snipett.
    o que sepa del tema q me pueda asesorar

    Responder
    • no te puedo ayudar, lo siento.
      La intención del blog es mejorar el aprendizaje con pequeñas entradas y lo que estas pidiendo es un desarrollo a medida.

      Responder

Deja un comentario