Salve a tutti,
ne approfitto per salutare la comunità considerato che è il mio primo intervento...ma passiamo al dunque!
Ho seguito la guida php di cui parlo ad oggetto e riscontro un problema al quale non ho trovato risposta, o almeno credo, tra le pagine del forum. Dopo aver fatto dei test con gli script, ho cercato di raggiungere l'obiettivo che mi ero prefissato: quello di creare una gestione delle news all'interno della home page del mio sito (non mi passo il link perchè non è ancora online).
Il problema fondamentale che mi blocca al termine di tutto è la ripetizione, che viene fatta in automatico, successivamente al "submit" del form: in pratica anzichè scrivere una sola riga nel database...ne scrive 2! Io sono agli inizi con php e magari sarà una sciochezza...vi posto i codici delle pagine.
Piccola puntualizzazione...ho inserito il tutto in un <iframe> perchè non riuscivo ad inglobare come volevo la visualizzazione delle news...anche se il mio obiettivo era quello di inserirle in un <div>. Magari mi potrete consigliare voi come fare.
pagina insert.php
Codice PHP:
<?
include ("config.inc.php");
?>
<form method="post" action="save.php" id="newsInsert">
Titolo:
<input type="text" size="40" name="titolo" />
Data:
<select name="giorno">
<?
for ($i=1; $i<=31; $i++)
echo "<option value=\"$i\">$i</option>";
?>
</select>
<select name="mese">
<option value="1">Gennaio</option>
<option value="2">Febbraio</option>
<option value="3">Marzo</option>
<option value="4">Aprile</option>
<option value="5">Maggio</option>
<option value="6">Giugno</option>
<option value="7">Luglio</option>
<option value="8">Agosto</option>
<option value="9">Settembre</option>
<option value="10">Ottobre</option>
<option value="11">Novembre</option>
<option value="12">Dicembre</option>
</select>
<select name="anno">
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
Autore:
<input type="text" size="40" name="autore" />
E-mail:
<input type="text" size="40" name="mail" />
Testo:
<textarea cols="60" rows="40" name="testo"></textarea>
Password:
<input type="password" size="40" name="pass" />
<input type="submit" value="Invia" />
</form>
pagina index.php
Codice PHP:
<? include("config.inc.php"); $go = "Notizia del "; $db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); $query = "SELECT id, data, titolo, testo FROM news ORDER BY data DESC LIMIT 0,5"; $result = mysql_query($query, $db); while ($row = mysql_fetch_array($result)) { echo /*"<a href=\"view.php?id=$row[id]\">" . */'<span style="color:888888; font-size:12px">'."[i]"."$go".date("j/n/y", $row['data'])."
"."[/i]"."</span>". '<span style="color:007000;">'." $row[titolo]</a>
" ."</span>". "$row[testo]
"; } mysql_close($db); ?>
pagina save.php
Codice PHP:
<?
//header ("Location: index.php");
include("config.inc.php");
$titolo=$_REQUEST['titolo'];
$autore=$_REQUEST['autore'];
$mail=$_REQUEST['mail'];
$testo=$_REQUEST['testo'];
$pass=$_REQUEST['pass'];
$giorno=$_REQUEST['giorno'];
$mese=$_REQUEST['mese'];
$anno=$_REQUEST['anno'];
if ($pass != $password): echo "Password errata";
elseif (trim($titolo) == "" OR trim($testo) == ""):
echo "I campi Titolo e Testo devono essere riempiti!";
else :
$titolo = addslashes(stripslashes($titolo));
$autore = addslashes(stripslashes($autore));
$mail = addslashes(stripslashes($mail));
$testo = addslashes(stripslashes($testo));
$titolo = str_replace("<", "<", $titolo);
$titolo = str_replace(">", ">", $titolo);
$autore = str_replace("<", "<", $autore);
$autore = str_replace(">", ">", $autore);
$testo = str_replace("<", "<", $testo);
$testo = str_replace(">", ">", $testo);
$testo = nl2br($testo);
$data = mktime("0", "0", "0", $mese, $giorno, $anno);
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')";
$result = mysql_query($query, $db);
if (mysql_query($query, $db))
echo "L'articolo è stato inserito correttamente";
else
echo "Errore durante l'inserimento";
mysql_close($db);
endif; // chiude la verifica della presenza dei dati
?>
questa è la parte di codice con cui inglobo il resto con l'<iframe>
Codice PHP:
<iframe id="newsInsert" src="index.php" width="380" height="380" allowtransparency="yes" frameborder="0" style="background-color:#eee;"/></iframe>
Ovviamente se inserisco manualmente una riga nel database il problema non si pone, ma ho difficoltà poi con la data...visto che le news vengono messe in ordine di quest'ultima voce.
Spero di non essere stato troppo lungo e poco chiaro