Script per creare un blog con php e mysql

In questo articolo vedremo come creare un blog in stile wordpress programmando in php.

Iniziamo a creare le tabelle con i rispettivi campi nel database mysql

Per prima cosa è necessario creare un database in mysql, ad esempio lo potete chiamare “blog”. All’interno del database dovete creare:

– Una tabella che potete chiamare “articoli”  che deve avere 5 campi (id_articolo, autore_articolo, titolo_articolo, testo_articolo, data_articolo). Il campo “id_articolo” deve essere impostato come “int”(11), “chiave primaria” e “auto increment”, i campi “autore_articolo” e “titolo_articolo” possono essere impostati come “varchar” con i valori 40 e 100 rispettivamente, il campo testo_articolo deve essere impostato come “text” ed infine il campo “data_articolo” deve essere impostato come “date” . La tabella articoli con i suoi rispettivi campi memorizzerà tutti gli articoli che verranno inviati attraverso il sito.

– Una tabella che potete chiamare “commenti” che deve avere 4 campi (id_commento, articolo_commento, autore_commento, testo_ commento). Il campo id_commento deve essere int(5) NOT NULL auto_increment e impostato come chiave primaria, il campo articolo_commento deve essere int(11) NOT NULL default ‘0’, il campo autore_commento deve essere varchar(40) NOT NULL default ” ed infine il campo testo_ commento deve essere varchar(255) NOT NULL default ”. Questa tabella con i suoi rispettivi campi servirà per memorizzare tutti i commenti che gli utenti fanno tramite il sito.

– Una tabella che potete chiamare “utenti” che deve avere 3 campi (id, username, password). L’id deve essere di tipo int, autoincrement e impostato come chiave primaria, username deve essere un varchar 22 e password un varchar 30.

Creare il file config.php che servirà per connettersi al database mysql

Una volta creato il file config.php mettetevi dentro il seguente codice:

<? $dbhost = “ip o host in cui avete creato il db (di solito è localhost)”;

$dbname = “vostro database”;

$dbuser = “username database”;

$dbpass = “password database”;

$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die (mysql_error());

$select_db = mysql_select_db($dbname) or die (mysql_error()); ?>

Creare il form per l’invio degli articoli al database mysql

Per l’invio degli articoli al database potete creare un semplice form html e chiamarlo ad esempio formhtml.php. Ecco il codice:

<html><body>
<h1>Inserisci un articolo</h1>
<form action=”insert_post.php” method=”post”>
Autore:<br>
<input name=”autore” type=”text” size=”20″><br>
Titolo:<br>
<input name=”titolo” type=”text” size=”30″><br>
Articolo:<br>
<textarea name=”articolo” cols=”40″ rows=”10″></textarea><br>
<input name=”submit” type=”submit” value=”Invia”>
</form>
</body>
</html>

Come potete notare all’inizio del codice il form action eseguirà le istruzioni php che in questo caso metteremo nella pagina insert_post.php.

Per lo script php creare una pagina e chiamarla ad esempio insert_post.php, servirà per inviare l’articolo al database mysql

Una volta creata la pagina insert_post.php inserire all’interno questo codice:

<?php
//includiamo il file di configurazione
include(config.php);

//valorizziamo le variabili con i dati ricevuti dal form
$submit=($_POST[‘submit’]);
$autore=($_POST[‘autore’]);
$titolo=($_POST[‘titolo’]);
$articolo=($_POST[‘articolo’]);

// Verifichiamo se tutti i campi sono stati compilati
if ($submit == ” or $autore == ” or $titolo == ” or $articolo == ”) die (‘compila tutti i dati’);

else {echo ‘dati inseriti’;}

// popoliamo i campi della tabella articoli con i dati ricevuti dal form
$query = “INSERT INTO `articoli` (`autore_articolo`, `titolo_articolo`, `testo_articolo`, `data_articolo`) VALUES (‘$autore’, ‘$titolo’, ‘$articolo’, now())”;

//mysql_query richiede il risultato a $query mettendolo nella variante $result che se restituirà il valore “0” vuol dire che la richiesta non è andata a buon fine altrimenti sarà tutto ok
$result=mysql_query($query);
 if  ($result == 0) die (‘qualcosa non va’); else {echo ‘Articolo inserito’;}
  ?>

Creare la pagina principale del blog che farà visualizzare un estratto degli ultimi articoli scritti

La pagina principale del blog la possiamo chiamare index.php e deve contenere il seguente codice:

<html>
<head>
<title>Il mio Blog</title>
</head>
<body>
<h1>Un blog in PHP</h1>

<?php

// includiamo il file di configurazione
include “config.php”;

// estraiamo i dati relativi agli articoli dalla tabella
$sql = “SELECT * FROM articoli ORDER BY data_articolo DESC”; // seleziona tutto dalla tabella articoli nell’ordine di data_articolo, la funzione desk server per ordinare i risultati al contrario

$query = mysql_query($sql);

if ($query == ‘ ‘) {echo ‘nooo cazzo’;} else {echo ‘siii’;}

//verifichiamo che siano presenti records
$numerorighe=mysql_num_rows($query);

if ($numerorighe == ”) {echo ‘numero righe non raccolte’;} else {echo ‘num righe raccolte’;}

// se la tabella contiene records mostriamo tutti gli articoli attraverso un ciclo while
while($row = mysql_fetch_array($query)){
$art_id = $row[‘id_articolo’];
$autore = stripslashes($row[‘autore_articolo’]);
$titolo = stripslashes($row[‘titolo_articolo’]);
$data = $row[‘data_articolo’];
$articolo = stripslashes($row[‘testo_articolo’]);

//la variabile $link grazie a questo link che apparirà con l’anchor text “leggi tutto” permetterà di visualizzare l’articolo completo collegamento al testo completo del post
$leggi_tutto = “<br /><a href=\”articolo.php?id=$art_id\”>Articolo completo</a>n”;

$parole = explode(‘ ‘, $articolo); // explode divide il contenuto di $articolo ogni volta che trova lo spazio tra ogni parola (spazio indicato con il segno ‘ ‘) rendendo la variante $parole un array

$cazzo = implode(‘ ‘, array_slice($parole, 0, 20)); // array_slice permette di estrarre dall’array (in questo caso contenuto nella variante $parole) solo 20 parole o meglio dire 20 stringhe, partendo da 0, ovvero dall’inizio. Implode al contrario di explode rende l’array contenuto nella variante $parole un unica stringa separando ogni parola con uno spazio tramite le due virgolette (‘ ‘).

// visualizzazione dei dati
echo “<h2>”.$titolo.”</h2>”;
echo $cazzo;  
echo “<br />”;
echo “Autore <b>”. $autore . “</b>”;
echo “<br />”;
echo “Pubblicato il <b>” . $data . “</b>”;
echo “<br />”;
echo “$leggi_tutto”;
echo “<hr>”;
}
?>
</body>
</html>

Pagina per leggere l’articolo per intero

Ora che abbiamo creato buona parte della struttura del blog bisogna creare una pagina che permettera di leggere l’articolo per intero, per far questo potete creare una pagina chiamandola ad esempio articolo.php, riempendola con il seguente codice:

<? include “config.php”;

$id_arti = ($_GET[‘id’]); // tutte le id vengono passate alla variante $id_arti tramite il metodo get

if ($id_arti == ‘ ‘) die (‘non viene trovato nulla’);  else {echo ‘ci sono dei dati nella variante’;} // se in $id_arti non viene passato nulla fai morire la pagina altrimenti mostra a video “dati inseriti”.

// selezioniamo dalla tabella i dati relativi all’articolo
$sql = “SELECT autore_articolo,titolo_articolo,data_articolo,testo_articolo FROM articoli WHERE id_articolo=’$id_arti'”; // seleziona i campi autore_articolo,titolo_articolo,data_articolo e testo_articolo dalla tabella articoli facendo corrispondere gli id della variante $id_arti agli id contenuti nel campo id_articolo
$query = @mysql_query($sql) or die (mysql_error());

// se per quell’id esiste un articolo..
if(mysql_num_rows($query) > 0)

// …estraiamo i dati e mostriamoli a video
{ $row = mysql_fetch_array($query) or die (mysql_error());
$autore = stripslashes($row[‘autore_articolo’]);
$titolo = stripslashes($row[‘titolo_articolo’]);
$data = $row[‘data_articolo’];
$articolo = stripslashes($row[‘testo_articolo’]);

echo “<h2>”.$titolo.”</h2>” . $articolo . “<br><br>”;
$data = preg_replace(‘/^(.{4})-(.{2})-(.{2})$/’,’$3-$2-$1′, $data);
echo “Scritto da <b> ” . $autore . “</b>”;
echo ” | Articolo postato il <b>” . $data . “</b>”;
} else {echo “nessun articolo presente”;}
?>