PDA

View Full Version : [PHP] pagina prima visualizza il database poi gli invia i dati


Ansem_93
06-01-2012, 11:32
Salve,ho creato una pagina per la scuola con il solo scopo di inviare e visualizzare i dati all'interno di un databse (un guestbook per intenderci).
il problema è che non so perchè quando invio i dati prima mi fa stampa la tabella con le voci del database,poi invia i dati della form,con il risultato che per vederli devo caricare nuovamente la pagina :/
qualcuno mi sa aiutare?

Ansem_93
06-01-2012, 15:52
dopo mezza mattinata passata a risolvere il problema ancora niente :/ posto di seguito il codice della pagina.
<?php
// Il nome dell'host (hostname) su cui si trova MySQL
$dbhost = "localhost";
// Il nome del nostro database
$dbname = "my_pspsps";
// Il nostro nome utente (username)
$dbuser = "xxxxxxx";
// La nostra password
$dbpass = "xxxxxx";
// Funzione mysql_connect()
$conn = mysql_connect($dbhost,$dbuser,$dbpass)
or die("Impossibile collegarsi al server MySQL.");

// Funzione mysql_select_db()
mysql_select_db($dbname,$conn)
or die("Impossibile selezionare il database $dbname");
//query per stampare i messaggi
$sql = 'SELECT dbm.num, dbm.nick, dbm.messaggio'
. ' FROM dbm'
. ' ORDER by dbm.num desc; ';

// Esegue il comando SQL o stampa un messaggio di errore
$res = mysql_query($sql,$conn)
or die( "Errore: " . mysql_error() );

//tolgo eventuali spazi finali dal nome e messaggio
$nick=trim($_POST['nick']);
$mex=trim($_POST['mex']);

function inserisci () {
//prendo le variabili
global $nick;
global $mex;

//tolgo eventuali spazi finali dal nome e messaggio
$nick=trim($_POST['nick']);
$mex=trim($_POST['mex']);

//se ci sono delle / le escapo così php funziona
if(get_magic_quotes_gpc())
//strinsplashes serve per sistemare le /
{$nick=stripslashes($nick);
$mex=stripslashes($mex);
}

//e ora finalmente ho escapato tutto
$nick=mysql_real_escape_string($nick);
$mex=mysql_real_escape_string($mex);

//query che mette nel database il messaggio
$aggiungi = "INSERT INTO dbm (nick,messaggio)"
. " VALUES ('$nick','$mex');";

//lancio la query
if (isset($_POST)) {
$send= mysql_query($aggiungi,$conn)
or die( "Errore: " . mysql_error() );
}
}
function stampa () {

//inizio html
$html="<html><body><center>";

//form inserimento dati
$html.='<hr> inserisci i dati di un nuovo articolo</hr>
<FORM method="post" action="guestbook.php">
<input type="text" name="nick"><br>
<textarea rows="5" cols="50" name="mex"></textarea>
<input type="submit" name="invia" value="invia">
</FORM>';


//metto il database in un array e lo stampo in una tabella
$html.="<table border=1 width=500 height=400>";
for ($i=1; $i<=10; $i++) {$arr=mysql_fetch_array($res,MYSQL_ASSOC);
$html.="<tr><td background-color:'$bg'>{$arr['nick']}</td>
<td background-color:'$bg'>{$arr['messaggio']}</td></tr>";};

$html.="</center></body></html>";
//fine html

echo $html;
}

inserisci();
stampa();
?>

daxdaxdax
08-01-2012, 15:12
Ciao :)
ho provato il tuo codice e ho avuto problemi con l'accessibilità di alcune variabili dovuto alle due funzioni.
Modificato così il codice funziona bene.
A te l'ottimizzazione di colori, codice html e php.

<?php
// guestbook.php

$dbhost = "localhost"; // Il nome dell'host (hostname) su cui si trova MySQL
$dbname = "ansem"; // Il nome del nostro database
$dbuser = "root"; // Il nostro nome utente (username)
$dbpass = ""; // La nostra password

$conn = mysql_connect($dbhost,$dbuser,$dbpass)or die("Impossibile collegarsi al server MySQL.");

mysql_select_db($dbname,$conn) or die("Impossibile selezionare il database $dbname");


// se arrivano variabili da post method le inserisco
if ( isset($_POST['nick']) AND ( isset($_POST['mex']) ) ){
$nick = trim($_POST['nick']);
$mex = trim($_POST['mex'] );

if(get_magic_quotes_gpc()){ //strinsplashes serve per sistemare le /
$nick = stripslashes($nick);
$mex = stripslashes($mex);
}
$nick = mysql_real_escape_string($nick);
$mex = mysql_real_escape_string($mex);


$aggiungi = "INSERT INTO dbm (nick,messaggio)"
. " VALUES ('$nick','$mex')"
;
mysql_query($aggiungi,$conn)or die( "Errore: " . mysql_error() );
}

// stampo a video i record
$html ="<html><body><center>";
$html.='<hr> inserisci i dati di un nuovo articolo</hr>
<FORM method="post" action="guestbook.php">
<input type="text" name="nick"><br>
<textarea rows="5" cols="50" name="mex"></textarea>
<input type="submit" name="invia" value="invia">
</FORM>'
;
$html .="<table border=1 width=500 height=400>";

$bg = "";

$sql = 'SELECT dbm.num, dbm.nick, dbm.messaggio'
. ' FROM dbm'
. ' ORDER by dbm.num desc '
;

$commentCollection = mysql_query($sql,$conn)or die( "Errore: " . mysql_error() );

for ( $i=1 ; $i<=10 ; $i++ ) {
$arr = mysql_fetch_array($commentCollection ,MYSQL_ASSOC);
$html.= "<tr><td background-color:'$bg'>{$arr['nick']}</td><td background-color:'$bg'>{$arr['messaggio']}</td></tr>\n";
}

$html .="</center></body></html>";

echo $html;

?>


Magari si possono poi creare tante righe di tabella quanti sono effettivamente i record tramite un ciclo while..

Ansem_93
09-01-2012, 15:27
grazie mille :D sono riuscito a sistemare :)