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
Hola, como les va?
Yo estoy haciendo una página web muy sencilla en html y me gustaría añadirle en cada publicación una caja de comentarios como la que tiene en aquí en http://programacionconphp.com/
Me podrías orientar como hacerlo?
hola jorge.
me parece muy interesante, lo añadire en el proximo capitulo
Como seria al tabal de comentarios?
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,
Lo que propones es mas dificil de lo que parece, pero tomo nota para la siguiente entrada
Con esas indicaciones es dificil ayudar, ¿en que paso fallas?
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
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.
hola, estoy creando un blog pero quiero que las entradas las pueda personificar de manera individual, quiero que cada vez que haga una accion en una no se reflejen en otras entradas
Hola Deinner.
¿Puedes volver a formular la pregunta?
No se entiende muy bien
seria bueno que hicieran un blog donde el usuario pueda publicar iniciar sesion y dar likes y dislikes con categorias
toma nota, para futuras entradas
Hola podrias ayudarme no me funciona el codigo me aparece
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Users\hongen\Downloads\basicBlog-master\model.php on line 26
muchas gracias!
Revise la linea 26, ques es de donde radica el problema
está muy chido el aporte!