innanzitutto grazie mille per la risposta mzanella, sei stato chiarissimo!
Come da te suggerito ho provveduto ad eseguire i vari consigli che mi hai dato.
Scusa per il codice per intero ma volevo darti una "vista" più generale del codice per intero. Comunque ho fatto una prova e non mi dà alcun errore, ma anche se l'immagine sembra caricare, alla fine nella tabella ac_post, il campo post_preview (che sarebbe quello dell'anteprima ed è in VARCHAR) è settato a NULL...non so cosa ho sbagliato. Riguardo al codice, forse c'è qualche errore nel Form di inserimento?
Questa è la zona "interessata" che contiene la parte relativa all'inserimento del titolo, autore ecc e la funzione che inserisce nella tabella dei post anche il valore $preview che sarebbe un identificativo dell'immagine caricata (che poi non viene caricata ) :
Codice PHP:
<?php
//includiamo il file di configurazione
@include "config.php";
//valorizziamo le variabili con i dati ricevuti dal form
if(isset($_POST['submit'])){
if(isset($_POST['titolo'])){
$titolo = addslashes($_POST['titolo']);
}
if(isset($_POST['articolo'])){
$articolo = addslashes($_POST['articolo']);
}
// quì c'è la funzione che dovrebbe occuparsi del file caricato.
$action = $_POST['action'];
if (isset($_POST['action']) && $action == "upload")
{
$p_dir = "../cp";
$img_title = $_FILES['prova']['name'];
$p_extension = array('.jpeg', '.jpg', '.png', '.JPG', '.JPEG', '.PNG');
$title = mysql_escape_string($_POST['title']);
//$place = mysql_escape_string($_POST['place']);
list($p_name, $p_ext) = explode(".", $_FILES['prova']['name']);
$p_ext = strrchr($_FILES['prova']['name'], '.');
if(!in_array($p_ext, $p_extension))
{
echo "<h3><font color='red'>Hai tentato di caricare un'immagine con estensione non supportata!</font></h3>";
}//else{
$p_name_md5 = md5($p_name);
$sql5 = "SELECT * FROM ac_post WHERE post_preview LIKE '%$p_name_md5%'";
$query5 = mysql_query($sql5) or die (mysql_error());
$num5 = mysql_num_rows($query5);
if($num5 == 0)
{
$i = 1;
}
else
{
$i = $num5+1;
}
$preview = $p_name_md5."_$i$p_ext";
$sql11 = "INSERT INTO ac_post (post_autore, post_titolo, post_articolo, post_preview, post_data) VALUES ('$nome $cognome', '$titolo', '$articolo', '$preview', now())";
$query = mysql_query($sql11) or die (mysql_error());
move_uploaded_file($_FILES['prova']['tmp_name'], "./cp/".$preview) or die("Error");
echo "<h3><font color='green'>Caricamento avvenuto con successo! Attendi l'approvazione dell'amministratore!</font></h3>";
//}
}
// popoliamo i campi della tabella articoli con i dati ricevuti dal form
$sql = "INSERT INTO ac_post (post_autore, post_titolo, post_articolo, post_data) VALUES ('$nome $cognome', '$titolo', '$articolo', now())";
// se l'inserimento ha avuto successo inviamo una notifica
if ($titolo==NULL || $articolo==NULL){
echo "Uno o più campi sono vuoti! Reinserisci i tuoi dati!";
header("Refresh:5; url=http://restartcampania.altervista.org/cp/insert_post.php");
} elseif (@mysql_query($sql) or die (mysql_error())){
echo "Articolo inserito con successo.";
}
}else{
// se non sono stati inviati dati dal form mostriamo il modulo per l'inserimento
?>
Quì invece, in una forma davvero super confusionale (sorry!) c'è una serie di codici che corrisponderebbero al form di caricamento dell'immagine e al form dell'inserimento del post (titolo, articolo) e il form di invio.
Codice HTML:
<br>
<form name="upload" method="post" action="insert_post.php" enctype="multipart/form-data">
Seleziona un immagine: <input type="file" name="prova">
<br>
Titolo:<br>
<input name="titolo" type="text" size="30"><br>
<!-- Per l'articolo abbiamo usato uno script -->
Articolo:
<script type="text/javascript" src="js/tinymce/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector: "textarea",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
image_list: [ //lista di immagini fra cui scegliere
{title: 'Reggia di Caserta', value: 'Reg_Cas.jpg'},
{title: 'Piazza del Plebiscito', value: 'Piaz_Pleb.jpg'}
],
image_advtab: true, //aggiunge le opzioni avanzate all'immagine
style_formats: [ //e questo dovrebbe mettere l'immagine a sinistra
{title: 'Image Left', //ma forse la mette a sinistra solo nell'inserimento del post
selector: 'img',
styles: {
'float' : 'left',
'margin': '0 10px 0 10px'
}}
]
});
</script>
<br>
<textarea name="articolo" cols="40" rows="10"></textarea><br>
<input name="submit" type="submit" value="Invia">
<!--<input type="hidden" id="action" name="action" value="upload" /> -->
</form>
Codice PHP:
<?php
}
?>
<?php
}
?>
la tabella che contiene i dati relativi ai post invece è:
Codice:
CREATE TABLE IF NOT EXISTS `ac_post` (
`post_id` int(11) NOT NULL AUTO_INCREMENT,
`post_autore` varchar(40) DEFAULT NULL,
`post_titolo` varchar(100) DEFAULT NULL,
`post_articolo` text,
`post_data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`post_image` varchar(70) DEFAULT NULL,
`post_vote` int(8) NOT NULL DEFAULT '0',
`post_preview` varchar(70) DEFAULT NULL,
PRIMARY KEY (`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=83 ;
Spero si capisca qualcosa..e grazie ancora!