Ciao,
Vorrei aggiungere su di una pagina un piccolo <div> in cui inserire una stringa ma senza usare mysql, cms dome wordpress o similari. E' possibile?
C'è qualche iframe facebook che può tornarmi utile?
Grazie
Ciao,
Vorrei aggiungere su di una pagina un piccolo <div> in cui inserire una stringa ma senza usare mysql, cms dome wordpress o similari. E' possibile?
C'è qualche iframe facebook che può tornarmi utile?
Grazie
Più pratica in futuro...
Spulciando online sono riuscito a scrivere una cosa di questo tipo però lo script non riesce a connettersi al database, come posso fare?
Grazie
Ecco il codice (come vedete è molto corto, sta tutto in una pagina):
Codice PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
label, input, textarea {
margin: 1em;
}
</style>
<title>Bacheca elettronica</title>
</head>
<body>
<form method="post" action="">
<label for="name">Nome</label>
<input type="text" name="name" id="name"/><br>
<label for="mail">Email</label>
<input type="text" name="mail" id="mail"/><br>
<label for="message">Messaggio</label><br>
<textarea rows="5" cols="40" name="message" id="message"></textarea><br>
<input type="submit" value="Invia"/>
</form>
<?php
//Parametri del database
$db_host = "localhost";
$db_user = "admin";
$db_password = "password";
$database = "bacheca";
$db_bacheca = "Bacheca";
//Controllo dati
$error= "";
if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome
$nome = strip_tags($_POST['name']);
}
elseif(isset($_POST['name'])){
$error .= "Nome mancante.<br />";
}
if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido
$mail = $_POST['mail'];
}
elseif(isset($_POST['mail'])){
$error .= "Email mancante o non valida.<br />";
}
if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio
$messaggio = strip_tags($_POST['message']);
}
elseif(isset($_POST['message'])){
$error .= "Inserire un messaggio.<br/>";
}
//Salvataggio messaggio
if(isset($nome,$mail,$messaggio)){
//Inizio Connessione al DB
$db = mysql_connect($db_host, $db_user, $db_password);
$err_database = mysql_error()."<p>Errore di accesso al database. Riprovare più tardi, nel caso, contattare il web master</p>";
$db_select = mysql_select_db($database, $db) or die ($err_database);
//Invio dati al database
$insert = mysql_query("INSERT INTO ".$db_bacheca." (NOME,MAIL,MESSAGGIO) VALUES ('".$nome."','".$mail."','".$messaggio."')") or die ($err_database);
mysql_close();
}
else{
echo "<p>".$error."</p>";
}
$err_database = mysql_error()."<p>Al momento non sono presenti avvisi in bacheca.</p>";
$bacheca = mysql_query("SELECT * FROM ".$db_bacheca." ORDER BY DATA DESC") or die ($err_database);
$n = 0;
$max = 10;
while($estrazione = mysql_fetch_array($bacheca) and $n < $max){
echo"
<div>
<p>".$estrazione['MESSAGGIO']."<br/>
Autore: ".$estrazione['NOME']."<br/>
Data: ".date('d/m/Y',$estrazione['DATA'])."</p>
</div>
";
$n++;
}
?>
</body>
</html>
Ecco il database:
codice:CREATE TABLE Bacheca ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, messaggio TEXT NOT NULL, data_messaggio DATE ) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;
Più pratica in futuro...
Perchè non passi a PDO? secondo me riceveresti più aiuti, le mysql_ ormai sono preistoria credo.
Comunque che errore ti da il database?
Comunque c' era un bel casino, della serie "copio e incollo e chi se ne frega", così funziona, l' ho testato personalmente:
Ricontrolla i dati di accesso e il nome della tabella (la crei con la b minuscola ma poi la definisci con la B maiuscola nello script php)codice:<!doctype html> <html> <head> <meta charset="utf-8"> <style type="text/css"> label, input, textarea { margin: 1em; } </style> <title>Bacheca elettronica</title> </head> <body> <form method="post" action=""> <label for="name">Nome</label> <input type="text" name="name" id="name"/><br> <label for="mail">Email</label> <input type="text" name="mail" id="mail"/><br> <label for="message">Messaggio</label><br> <textarea rows="5" cols="40" name="message" id="message"></textarea><br> <input type="submit" value="Invia"/> </form> <?php //Parametri del database $//Parametri del database $db_host = "localhost"; $db_user = "admin"; $db_password = "password"; $database = "bacheca"; $db_bacheca = "bacheca"; //Controllo dati $error= ""; if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome $nome = strip_tags($_POST['name']); } elseif(isset($_POST['name'])){ $error .= "Nome mancante.<br />"; } if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido $mail = $_POST['mail']; } elseif(isset($_POST['mail'])){ $error .= "Email mancante o non valida.<br />"; } if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio $messaggio = strip_tags($_POST['message']); } elseif(isset($_POST['message'])){ $error .= "Inserire un messaggio.<br/>"; } //Inizio Connessione al DB $db = mysql_connect($db_host, $db_user, $db_password); $db_select = mysql_select_db($database, $db) or die ('Errore'); echo mysql_error($db); //Salvataggio messaggio if(isset($nome,$mail,$messaggio)){ $err_database = mysql_error()."<p>Errore di accesso al database. Riprovare più tardi, nel caso, contattare il web master</p>"; $sql = "INSERT INTO ".$db_bacheca." (nome,email,messaggio) VALUES ('".$nome."','".$mail."','".$messaggio."')"; print $sql; //Invio dati al database $insert = mysql_query($sql) or die ($err_database); } else{ echo "<p>".$error."</p>"; } $err_database = mysql_error()."<p>Al momento non sono presenti avvisi in bacheca.</p>"; $bacheca = mysql_query("SELECT * FROM ".$db_bacheca." ORDER BY DATA DESC") or die ($err_database); $n = 0; $max = 10; while($estrazione = mysql_fetch_array($bacheca) and $n < $max){ echo" <div> <p>".$estrazione['MESSAGGIO']."<br/> Autore: ".$estrazione['NOME']."<br/> Data: ".date('d/m/Y',$estrazione['DATA'])."</p> </div> "; $n++; } mysql_close(); ?> </body> </html>
[edit] la maiuscola non c' entra, ho copiato il tuo codice sql per la creazione e me l' ha comunque nominata con la b minuscola. Il bordello era nella stringa SQL, variabili sbagliate e nomi colonne sbagliati scritti in maiusolo mentre nella tabella sono scritti in minuscolo
Ultima modifica di camionistaxcaso; 15-04-2016 a 11:45
Grazie per i suggerimenti. Ho aggiornato lo script e ho notato queste altre problematiche:
1) Quando premo su INVIA trovo un nuovo record in phpMyAdmin ma non nella pagina;
2) Se faccio un reflesh della pagina per far comparire il nuovo record in bacheca.php continuo a scrivere lo stesso record nel database;
Per risolvere il primo problema scrivo:
ma non mi compare più la lista di record nella pagina bacheca.php.Codice PHP:
header("Location: /bacheca/bacheca.php");
Per risolvere il problema 2 cerco di distruggere le variabili creare e POST ma non risolvo:
3) Quando inserisco il codice in database ottengo questo errore:Codice PHP:
unset($GLOBALS['nome']);
unset($GLOBALS['messaggio']);
unset($GLOBALS['email']);
unset($nome);
unset($messaggio);
unset($email);
$_POST = array();
esso non pregiudica il funzionamento del programma ma mi piacerebbe sapere come dovrei riscrivere il codice per evitare incorrettezze.codice:Notice in .\import.php#704Undefined variable: import_text Backtrace
Il nuovo script è questo:
Il nuovo database questo:Codice PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
label, input, textarea {
margin: 1em;
}
</style>
<title>Bacheca elettronica</title>
</head>
<body>
<form method="post" action="">
<label for="name">Nome</label>
<input type="text" name="name" id="name"/><br>
<label for="mail">Email</label>
<input type="text" name="mail" id="mail"/><br>
<label for="message">Messaggio</label><br>
<textarea rows="5" cols="40" name="message" id="message"></textarea><br>
<input type="submit" value="Invia"/>
</form>
<?php
//Parametri del database
//Parametri del database
$db_host = "localhost"; //posizione in cui si trova il database
$db_user = "admin"; //utente del database
$db_password = "password"; //password del database
$database = "bacheca"; //nome del database
$db_bacheca = "bacheca"; //nome della tabella del database
//Controllo dati
$error= "";
if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome
$nome = strip_tags($_POST['name']);
}
elseif(isset($_POST['name'])){
$error .= "Nome mancante.<br />";
}
if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido
$email = $_POST['mail'];
}
elseif(isset($_POST['mail'])){
$error .= "Email mancante o non valida.<br />";
}
if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio
$messaggio = strip_tags($_POST['message']);
}
elseif(isset($_POST['message'])){
$error .= "Inserire un messaggio.<br/>";
}
//Inizio Connessione al DB
$db = mysql_connect($db_host, $db_user, $db_password);
$db_select = mysql_select_db($database, $db) or die ('Errore');
echo mysql_error($db);
//Salvataggio messaggio
if(isset($nome,$email,$messaggio)){
$err_database = mysql_error()."<p>Errore di accesso al database. Riprovare più tardi, nel caso, contattare il web master</p>";
$sql = "INSERT INTO ".$db_bacheca." (nome,email,messaggio) VALUES ('".$nome."','".$email."','".$messaggio."')";
//Invio dati al database
$insert = mysql_query($sql) or die ($err_database);
}
else{
echo "<p>".$error."</p>";
}
$err_database = mysql_error()."<p>Al momento non sono presenti avvisi in bacheca.</p>";
$bacheca = mysql_query("SELECT * FROM ".$db_bacheca." ORDER BY data_messaggio DESC") or die ($err_database);
$estrazione = mysql_fetch_array($bacheca);
$n = 0;
$max = 5;
while($estrazione = mysql_fetch_array($bacheca) and $n < $max){
echo "
<div>
<p>".$estrazione["messaggio"]."<br/>
Autore: ".$estrazione["nome"]."<br/>
Data: ".$estrazione["data_messaggio"]."<br/>
Email: ".$estrazione["email"]."</p>
</div>
";
$n++;
}
mysql_close();
?>
</body>
</html>
codice:CREATE TABLE bacheca ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, messaggio TEXT NOT NULL, data_messaggio DATETIME NOT NULL DEFAULT NOW() ) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;
Più pratica in futuro...
versione con l'oggetto $pdo:
stessi problemi...codice:<!doctype html> <html> <head> <meta charset="utf-8"> <style type="text/css"> label, input, textarea { margin: 1em; } </style> <title>Bacheca elettronica</title> </head> <body> <form method="post" action=""> <label for="name">Nome</label> <input type="text" name="name" id="name"/><br> <label for="mail">Email</label> <input type="text" name="mail" id="mail"/><br> <label for="message">Messaggio</label><br> <textarea rows="5" cols="40" name="message" id="message"></textarea><br> <input type="submit" value="Invia"/> </form> <?php //Parametri del database $db_host = "localhost"; //posizione in cui si trova il database $db_user = "admin"; //utente del database $db_password = "password"; //password del database $database = "bacheca"; //nome del database $db_bacheca = "bacheca"; //nome della tabella del database //Controllo dati $error= ""; if(isset($_POST['name']) and $_POST['name'] != ""){//<- controllo nome $nome = strip_tags($_POST['name']); } elseif(isset($_POST['name'])){ $error .= "Nome mancante.<br />"; } if(isset($_POST['mail']) and preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $_POST['mail'])){//<- controlla se la mail è presente e se è in un formato valido $email = $_POST['mail']; } elseif(isset($_POST['mail'])){ $error .= "Email mancante o non valida.<br />"; } if(isset($_POST['message']) and $_POST['message'] != ""){//<- controllo messaggio $messaggio = strip_tags($_POST['message']); } elseif(isset($_POST['message'])){ $error .= "Inserire un messaggio.<br/>"; } //Inizializzo le variabili $pdo=null; $result=null; //Mi connetto al database try { $pdo = new PDO("mysql:host=".$db_host.";dbname=".$database, $db_user, $db_password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('SET NAMES "utf8"'); } catch (PDOException $e) { $error .= "Impossibile connettersi al database.<br/>"; echo "<p>".$error."</p>"; exit(); } //Salvo il messaggio try { if(isset($nome,$email,$messaggio)){ $sql = "INSERT INTO ".$db_bacheca." (nome,email,messaggio) VALUES ('".$nome."','".$email."','".$messaggio."')"; //Invio i dati al database $pdo->exec($sql); } else{ echo "<p>".$error."</p>"; } } catch (PDOException $e) { $error .= "Impossibile scrivere nel database.<br/>"; echo "<p>".$error."</p>"; exit(); } //Leggo il contenuto del database try { $sql = "SELECT * FROM ".$db_bacheca." ORDER BY data_messaggio DESC"; //Invio i dati al database $result = $pdo->query($sql); } catch (PDOException $e) { $error .= "Impossibile leggere dal database.<br/>"; echo "<p>".$error."</p>"; exit(); } //Scrivo gli ultimi 5 record dal database try { $n = 0; $max = 5; while($row=$result->fetch() and $n < $max){ echo " <div> <p>".$row["messaggio"]."<br/> Autore: ".$row["nome"]."<br/> Data: ".$row["data_messaggio"]."<br/> Email: ".$row["email"]."</p> </div> "; $n++; } } catch (PDOException $e) { $error .= "Impossibile scrivere i contenuti prelevati dal database.<br/>"; echo "<p>".$error."</p>"; exit(); } ?> </body> </html>
P.S.:questo codice qui sotto non funge e non riesco a capire perché!
Codice PHP:
<input type="text" name="name" id="name" value="<?php (isset($name) and $name!=null) ? print_r($name) : print_r(""); ?>"/><br>
...
$sql = "INSERT INTO ".$db_bacheca." (nome,email,messaggio) VALUES ('".$nome."','".$email."','".$messaggio."')";
//Invio i dati al database
$pdo->exec($sql);
$nome=null;
Ultima modifica di giannino1995; 16-04-2016 a 00:02
Più pratica in futuro...
Io quando premo invio lo inserisce e me lo visualizza1) Quando premo su INVIA trovo un nuovo record in phpMyAdmin ma non nella pagina;
Strano fai una redirect alla stessa pagina quindi deve farti vedere i record inseriti in precedenzaPer risolvere il primo problema scrivo:
Codice PHP:
header("Location: /bacheca/bacheca.php");
A me non da nessun errore3) Quando inserisco il codice in database ottengo questo errore:
codice:
Noticein.\import.php#704
Undefined variable: import_text
Backtrace
1) perché hai provato con il pdo, il mio secondo codice, se provi con il primo noti il problema... comunque risolto...
2) a te va? a me no! comunque non credo che reindirizzare sia una soluzione... non capisco perché php non distrugga le variabili dopo averle inserite nel database... se faccio un reflesh con il browser php mi riscrive il record... porca puzzola... senza offesa per la puzzola ovviamente...
3) sarà il mio xampp un po' scombinato?
4) altra cosa che non capisco è il motivo per cui questo codice non funziona:
Codice PHP:
Data: ".date('d/m/Y',$row["data_messaggio"])."<br/>
Ultima modifica di giannino1995; 16-04-2016 a 00:11
Più pratica in futuro...
perchè se aggiorni tu rimandi gli stessi dati alla pagina ricreando le variabili post, ti salva appunto la redirect che ti fa "ricominciare da capo", presumo sia la differenza tra fare una richiesta post e farla con get