Salve a tutti,
Il mio sito è sull'hosting gratuito di altervista. Da poco hanno aggiornato i server con php 5.2 (prima 4.4.9)
Avevo creato una pagina php che consentiva agli amministratori di generare degli avvisi scorrevoli per il sito, ma da quando ho attivato la funzione php 5.2 (dato che è disattivabile)
questa aveva smesso di funzionare... Dopo qualche ritocco qua è la ho notato che il problema era la tipologia di refresh che stavo eseguendo che ho successivamente modificato.
Ora ho un altro problema però.
Vorrei che una volta inserito il nuovo avviso tramite un form e aggiornato nel db avvenisse un unico aggiornamento della pagina che visualizzi il nuovo avviso e non 2 come è ovvio che succede.
Ho notato che avviene un aggiornamento prima che il valore venga aggiornato sul db perchè continua a mostrare il vecchio avviso e poi il secondo aggiornamento (che è quello che impongo io) visualizza i dati ovviamente aggiornati.
L'unico che può generare un refresh prima dell'UPDATE sul db è il submit del form. Vorrei impedire questo primo refresh o magari far si che avvenga solo dopo l'update del db.
Vi posto il codice:
Codice PHP:
[COLOR=skyblue]
[/COLOR][COLOR=orange]
<div class[/COLOR]=[COLOR=green]"page_title"[/COLOR][COLOR=orange]>
<h2>[/COLOR]Avvisi Scorrevoli[COLOR=orange]</h2>
</div>
<div class[/COLOR]=[COLOR=green]"area_centrale_contenuti"[/COLOR][COLOR=orange]>[/COLOR]
<?php
/*Controllo permessi utente. (Almeno Moderatori)*/
if ($_SESSION['permessi']<MODERATOR)
{
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['not_allowed']).'</div>';
}
else
{
/*Stabilisco la funzione per aggiornare il db*/
function aggiorna($news_text)
{
/*Modifico l'avviso attuale nel database*/
$sql = "UPDATE avviso_scorrevole SET descrizione='$news_text' WHERE id='1'";
mysql_query($sql); ?> [COLOR=orange]<meta http-equiv[/COLOR]=[COLOR=green]"refresh"[/COLOR][COLOR=orange]content[/COLOR]=[COLOR=green]"0;url=http://astragonia.altervista.org/main.php?page=gestione_avvisi"[/COLOR][COLOR=orange]/>[/COLOR]
<?php
}
/*Leggo l'avviso attuale dal database*/
$messaggio = mysql_query("SELECT * FROM avviso_scorrevole WHERE id=1");
/*Memorizzo l'avviso attuale in una variabile e stampo il contenuto a schermo*/
$riga=mysql_fetch_array($messaggio);
$avviso_attuale = $riga[descrizione];
echo '<div class="gestione_avvisi">'.$avviso_attuale.'</div>';
?>
[COLOR=skyblue][/COLOR]
[COLOR=orange]<form name[/COLOR]=[COLOR=green]"avviso"[/COLOR] [COLOR=orange]method[/COLOR]=[COLOR=green]"POST"[/COLOR][COLOR=orange]>[/COLOR]
Inserire nuovo avviso:
[COLOR=orange]<textarea rows[/COLOR]=[COLOR=green]"9"[/COLOR] [COLOR=orange]cols[/COLOR]=[COLOR=green]"80"[/COLOR] [COLOR=orange]name[/COLOR]=[COLOR=green]"msg_avviso"[/COLOR][COLOR=orange]>[/COLOR]<?php echo($avviso_attuale);?>[COLOR=orange]</textarea>
<input type[/COLOR]=[COLOR=green]"submit"[/COLOR] [COLOR=orange]name[/COLOR]=[COLOR=green]"memorizza"[/COLOR] [COLOR=orange]value[/COLOR]=[COLOR=green]"Salva"[/COLOR] [COLOR=orange]id[/COLOR]=[COLOR=green]"button"[/COLOR][COLOR=orange]>
</form>[/COLOR]
<?php
/*Controllo che sia stato premuto il tasto "Salva", in caso affermativo viene richiamata la funzione aggiorna()*/
if (isset($_POST['memorizza']))
{
aggiorna($_POST['msg_avviso']);
}
}
?>
[COLOR=orange]</div>[/COLOR]