Sto cercando di passare tutti i miei vecchi script in una versione più moderna ma nonostante i miei tentativi incorro in un errore. Questo script fa da blog e benchè funzioni perfettamente se non strutturato ad oggetti quando provo a trasformarlo il testo del post del blog appare come "Object"!!! Perchè???
Classe
Codice PHP:
<?php
class post {
var $server = "";
var $db_user = "";
var $db_pass = "";
var $database = "";
function bbformat ($commento) {
$commento = htmlentities($commento);
$ricerca = array(
'/\[b\](.*?)\[\/b\]/is',
'/\[i\](.*?)\[\/i\]/is',
'/\[u\](.*?)\[\/u\]/is',
'/\[url\=(.*?)\](.*?)\[\/url\]/is',
'/\[img\](.*?)\[\/img\]/is',
'/\[mail\=(.*?)\](.*?)\[\/mail\]/is',
'/\[quote\=(.*?)\](.*?)\[\/quote\]/is',
);
$sostituisci = array(
'[b]$1[/b]',
'[i]$1[/i]',
'<u>$1</u>',
'[url="$1"]$2[/url]',
'[img]$1[/img]',
'[email="$1"]$2[/email]',
'<blockquote>$1</blockquote>',
);
$commento = preg_replace ($simple_search, $simple_replace, $commento);
}
function scrivi ($titolo, $categoria, $post) {
$titolo = trim($titolo);
$categoria = trim($categoria);
$post = trim($post);
mysql_connect($this->server, $this->db_user, $this->db_pass);
mysql_select_db($this->database);
if (!$titolo || !$categoria || !$post) {
exit ("Non hai compilato tutti i campi!");
} else {
$query = mysql_query("SELECT id FROM post WHERE titolo='$titolo'");
$result = mysql_num_rows($query);
if ($result > 0) {
mysql_close();
exit ("Post non valido! Hai già immesso questo post o il titolo è presente nel database.");
}
}
$query = mysql_query("INSERT INTO post (titolo, categoria, post) VALUES ('$titolo', '$categoria', '$post')");
if (!$query) {
exit ("Connessione al Database fallita, riprova più tardi.");
} else {
echo ("Post inserito correttamente!");
}
}
function blog (){
mysql_connect($this->server, $this->db_user, $this->db_pass);
mysql_select_db($this->database);
$query = mysql_query("SELECT id, titolo, categoria, post, DATE_FORMAT(data, '%d/%m/%y') AS timestamp FROM post ORDER BY id DESC");
while($array = mysql_fetch_array($query)){
echo ("<h1>$array[titolo] ($array[categoria]) $array[timestamp]</h1>$array[post]
<a href=\"postsolo.php?id=$array[id]\">Only this post!!!</a></p><hr />");
}
}
function postsolo ($id) {
mysql_connect($this->server, $this->db_user, $this->db_pass);
mysql_select_db($this->database);
$query = mysql_query("SELECT id, titolo, categoria, post, DATE_FORMAT(data, '%d/%m/%y') AS timestamp FROM post WHERE id='$id'");
$array = mysql_fetch_array($query);
echo ("<h1>$array[titolo] ($array[categoria]) $array[timestamp]</h1>$array[post]<hr />");
mysql_close($db);
}
}
$post = new post;
?>
Form post
Codice PHP:
<?php
require ("utenti.php");
$utenti->is_logged();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>
<body>
<form id="posting" name="posting" method="post" action="/posted.php">
<label>Titolo:
<input name="titolo" type="text" id="titolo" />
</label>
<label>Categoria:
<input name="categoria" type="text" id="categoria" />
</label>
</p>
<label>Post:
<textarea name="post" id="post"></textarea>
</label>
</p>
<label>
<input type="submit" name="Submit" value="Invia" />
</label>
</p>
</form>
</body>
</html>
L'action del form
Codice PHP:
<?php
require("post.php");
$post->scrivi($titolo, $categoria, $post);
?>
Risultato??? Nel database mi scrive un bel "Object"! Ho provato a stampare ed ho notato che Object compare appena la variabile $post viene passata alla classe... perchè???
Vi posto anche il file non ad oggetti che è del tutto simile:
Codice PHP:
<?
include("connection.php");
$titolo = trim($_POST["titolo"]);
$categoria = trim($_POST["categoria"]);
$post = trim($_POST["post"]);
mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_name);
if (!$titolo || !$categoria || !$post) {
exit ("Non hai compilato tutti i campi!");
} else {
$query = mysql_query("SELECT id FROM post WHERE titolo='$titolo'");
$result = mysql_num_rows($query);
if ($result > 0) {
mysql_close();
exit ("Post non valido! Hai già immesso questo post o il titolo è presente nel database.");
}
}
$query = mysql_query("INSERT INTO post (titolo, categoria, post) VALUES ('$titolo', '$categoria', '$post')");
if (!$query) {
exit ("Connessione al Database fallita, riprova più tardi.");
} else {
echo ("Post inserito correttamente!");
}
?>
Spero non sia un errore a ca**o... Grazie 1000!!!