- Home
- Categorie
- Coding e Sistemistica
- PHP
- Come faccio a inviare dei dati al database?
-
Ciao Sem93 e benvenuto nel Forum GT.
Certo che possiamo aiutarti, ma ci serve sapere cosa hai sotto mano per poterlo fare al meglio.
Potresti postare il form, la pagina che elebora i dati ricevuti dal form e la struttura della tabella (nome tabella e nome campi, occhio a Maiuscole/minuscole per i nomi) ?
-
Ok.
Ti posto tutto il mio elaborato quì.Helptool.php
[php]<title>Help Tool</title><td width="1%" align=""></td>
</tr>
</table><table width="720" height="351" border="0" align="center" >
<!--DWLayoutTable-->
<td height="104" width="129"> </td>
<tr>
<td width="129" height="241"> <td width="430" valign="top"><p> </p>
<p><b><center>Sei propietario di un personaggio?</center></b></p>
<p><center><a href="richiesta.php"><font color="#FFCC00">SI </font> </a> <a href="register.php"><font color="#ffcc00"> NO</font></a></center></p></td>
<td width="7"> </td><td width="136"><!--DWLayoutEmptyCell--> </td>
</table>
[/php]richieste.php
[php]<title>Domanda Help Tool</title>
<form name="f1" method="post" target="_top" action="elaboro.php" onSubmit="return WLSubmit(this)"><input name="idsbho" id="IDSBHO" value="1" type="hidden"><input name="PwdPad" id="i0340" type="hidden"><input name="LoginOptions" id="LoginOptions" value="3" type="hidden"><input name="CS" id="CS" type="hidden"><input name="FedState" id="FedState" type="hidden"><input name="PPSX" id="i0326" value="Passpo" type="hidden"><input name="type" id="type" type="hidden">
<td width="1%" align=""></td>
</tr>
</table><table width="504" height="386" align="center"
<!--DWLayoutTable-->
<td height="91" width="107"> <img height="69" /> </td>
<tr>
<td width="107" height="241"> <td width="344" valign="top"><p> </p><label>La tua email<br>
<input type="text" name="nome" id="nome" width="250"/>
</label>
</p>
<p>
<label><textarea name='notes' style='background-color:#ffffff;border:1px solid #CCC;width:95%;font-family:verdana;font-size:10px' rows='8' cols='25'></textarea> </label>
</p>
<label>
<input type="reset" value="Reset" /><input type="submit" value="INVIA" /> </label> </td>
<td width="10"> </td>
<td width="23"><!--DWLayoutEmptyCell--> </td>
</table>
</form>[/php]Elaboro.php
[php]<html>
<head>
<title>Ajax e gli iframe nascosti: Salvataggio Dati</title>
<?php
include('core.php');// Recupero i dati inseriti nel form proveniente dalla pagina richiesta.php
$id = $_POST["id"];
$email = $_POST["email"];
$description = $_POST["description"];// Accesso al Database
$sqlhostname;
$sqlusername;
$sqlpassword;
$sqldb;// apro la connessione dal database
$cnn = mysql_connect($server, $username, $password) or die ("Impossibile connettersi al server.");// seleziono il database
@mysql_select_db($sqldb) or die ("Impossibile selezionare il database.");// Creo la query sql per l'inserimento dati
$sql = "INSERT INTO richieste
SET
nome = '".$id."',
telefono = '".$email."',
email = '".$description."' ";// eseguo la query e controllo che non mi restituisca errore
if($result = mysql_query($sql))
{
$messaggio = "Si è verificato un errore nella fase di inserimento;<br> I dati del cliente non sono stati salvati.";
}mysql_close($cnn);
?>
<script type="text/javascript">
// al caricamento della pagina eseguo la funzione
window.onload = function ()
{
// richiamo la funzione saveResult presnte nel iframe "frame_visibile"
// e gli assegno come valore il messaggio restituito da PHP
top.frames["frame_visibile"].visualizza_risultato("<?php echo $messaggio ?>");
}
</script>
</head>
<body>
</body>
</html>[/php]ps. Elaboro dovrebbe trascrivere il contenuto in una tabella del database,ma non lo fà.
ps2. Ho tolto i link quindi sarà un po' malmesso xD
-
Sei sicuro di aver postato le pagine giuste?
Ti spiego: tu recuperi questi valori POSTati dal form
[php]$id = $_POST["id"];
$email = $_POST["email"];
$description = $_POST["description"];[/php]Ma nel form questi non esistono (l'ho ripulito dell'inutile così non facciam confusione):
[html]<form name="f1" method="post" target="_top" action="elaboro.php" onsubmit="return WLSubmit(this)"><input name="idsbho" id="IDSBHO" value="1" type="hidden" />
<input name="PwdPad" id="i0340" type="hidden" />
<input name="LoginOptions" id="LoginOptions" value="3" type="hidden" />
<input name="CS" id="CS" type="hidden" />
<input name="FedState" id="FedState" type="hidden" />
<input name="PPSX" id="i0326" value="Passpo" type="hidden" />
<input name="type" id="type" type="hidden" />
<input type="text" name="nome" id="nome" size="250" /> <!-- Questo forse doveva essere name="email" id="email" -->
<textarea name="notes" style="background-color:#ffffff;border:1px solid #CCC;width:95%;font-family:verdana;font-size:10px;" rows="8" cols="25"></textarea>
<!-- La textarea forse doveva essere name="description" -->
<input type="reset" value="Reset" /><input type="submit" value="INVIA" />
</form>[/html]Altra domanda: tutti quegli hidden senza value a che ti servono?
E poi, questo?
[php]// Accesso al Database
$sqlhostname;
$sqlusername;
$sqlpassword;
$sqldb;[/php]Ultima domanda: core.php immagino contenga i valori di $server, $username, $password e $sqldb, giusto?P.S. hai dimenticato di postare la struttura della tabella richieste.
EDIT: altra cosa, per l'INSERT non usare SET ma VALUES.
-
// Accesso al Database
$sqlhostname;
$sqlusername;
$sqlpassword;
$sqldb;
L'ho messo perchè altervista non mi riconosceva..Le tabelle del database contengono questa struttura
-- Table structure for richieste
CREATE TABLE
richieste
(
id
int(10) NOT NULL auto_increment,
Email
varchar(100) default NULL,
description
varchar(100) default NULL,
userid
int(10) default NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- Records
Elimino gli hidden.
Poi ho provato a mettere nel form i nomi delle tabelle create nel db solo che non le accetta xD
-
Beh, vediamo un po'.
Ammettendo che il form che ti serva sia così strutturato:
[html]<form name="f1" method="post" target="_top" action="elaboro.php" onsubmit="return WLSubmit(this)"><input type="text" name="email" id="email" size="250" />
<textarea name="description" rows="8" cols="25"></textarea>
<input type="reset" value="Reset" />
<input type="submit" value="INVIA" />
</form>[/html]Metterei i dati di accesso al Db e la relativa connessione nel core.php (variando i dati con quelli tuoi di connessione al Db:
[php]<?php
$db_host = "localhost";
$db_user = "nome_utente";
$db_psw = "password";
$db_name = "nome_db";$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita");
$db_select = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita");
?>[/php]E quindi strutturerei così il file richieste.php
[php]<?
require_once("core.php");// Recupero i dati inseriti nel form proveniente dalla pagina richiesta.php
$email = trim(htmlentities($_POST["email"], ENT_QUOTES));
$description = trim(htmlentities($_POST["description"], ENT_QUOTES));// Creo la query sql per l'inserimento dati
$sql = "INSERT INTO richieste (Email, description) VALUES ('$email', '$description')";// eseguo la query e controllo che non mi restituisca errore
if($result = mysql_query($sql))
{
$messaggio = "Si è verificato un errore nella fase di inserimento;<br /> I dati del cliente non sono stati salvati.";
}mysql_close($connessione);
?>[/php]Ma sia nel form, e quindi nel file richieste, non vedo l'id_user da inserire, per caso lo hai in sessione?
-
No,non lo metto.. perchè da solo fastidio.
Ora provo ciò che tu mi hai consigliato e ti faccio sapere.
Grazie tante
-
Mi dà un'errore il core.php,esso è strutturato così:
<?
define("IN_HOLOCMS", TRUE);
if(strpos($_SERVER['SERVER_SOFTWARE'],"Win") == false){ $page['dir'] = str_replace('\','/',$page['dir']); }
chdir(str_replace($page['dir'], "", getcwd()));if(strpos($page['dir'],'habblet') && (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') && $page['no_ajax'] != true){ header('Location: ../'); exit; }
require_once('./includes/config.php');
define("PREFIX", $conn['main']['prefix']);
require('./includes/classes.php');
$db = new $conn['main']'server';
if($conn['server']['enabled'] == true){ $serverdb = new $conn['server']'server'; }else{ $serverdb = $db; }
$settings = new HoloSettings;
$input = new HoloInput;
$lang = new HoloLocale;session_start();
define("PATH", $settings->find("site_path"));
define("SHORTNAME", $settings->find("site_shortname"));
define("FULLNAME", $settings->find("site_name"));
//define("DEBUG", true); //Uncomment this line to show detailed database error messages.require('./includes/data/'.$settings->find("hotel_server").'.php');
$core = new core_sql;
require('./includes/functions.php');
require('./includes/version.php');if($page['housekeeping'] != true){ if(is_object($_SESSION['user'])){ $user = $_SESSION['user']; }else{ $user = new HoloUser(null,null); } }else{ if(is_object($_SESSION['hk_user'])){ $user = $_SESSION['hk_user']; }else{ $user = new HoloUser(null,null); } }
if($user->error > 0 && $page['bypass_user_check'] != true && $_COOKIE['rememberme'] == "true" && $page['housekeeping'] != true){ $_SESSION['page'] = $_SERVER["REQUEST_URI"]; header("Location: ".PATH."/security_check_token"); }
if($settings->find("site_closed") == "1" && $page['id'] != "maintenance" && $page['housekeeping'] != true && $user->user("rank") < 5){
header("Location: ".PATH."/maintenance"); exit;
}$db_host = "localhost";
$db_user = "";
$db_psw = "*****";
$db_name = "*******";$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita");
$db_select = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita");
?>
-
Ok, ho capito, è dal core.php che viene incluso il file di configurazione, a questo punto allora non lo devi modificare il core.php.
-
E cosa modifico? °_° xD
ps . Dal file elaboro.php tolgo la stringa require_once("core.php");?
-
No, lascia tutto come è. Devi solo togliere questo pezzo che ti ho fatto mettere nel file core.php dato che non sapevo fosse già incluso lì il file di connessione.
$db_host = "localhost";
$db_user = "";
$db_psw = "*****";
$db_name = "*******";$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita");
$db_select = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita");
-
Ho provato a fare come hai detto, ma il file elaboro.php non elabora e non manda i dati al database.
Fatal error: main() [function.require]: Failed opening required './includes/config.php' (include_path='.:') in /membri/disext1/core.php on line 25
ecco l'errore che fà.
-
Ma sei certo che questa board funzioni?
Core.php mi pare di capire che sia un file della board che stai utilizzando..:?
Facciamo così, creati un file config.php così, inserendo i tuoi dati di accesso:
[php]<?php
$db_host = "";
$db_user = "";
$db_psw = "*****";
$db_name = "*******";$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita");
$db_select = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita");
?>[/php]Ed in elaboro.php inserisci all'inizio:
[php]require_once ("config.php");[/php]
Dato che Core.php non funziona lo toglierei.
-
Ci sono riuscito.
Adesso dovrei però dal database imprimere in un form tutti i dati, sapresti come fare?
-
Cosa intendi per imprimere i dati in un form?
Potresti essere più esplicito :D?
-
In poche parole,_che i dati che si inviano a richieste poi vanno a scriversi in un'altra pagina.
-
Cioè, estrarre i dati contenuti nel Database e visualizzarli?
-
Si, perchè quello che vado a creare è un'adminpannel .
-
In maniera molto semplice fai una SELECT e quindi cicli il risultato della query.
[php]<?php
require_once ("config.php");$sql="SELECT * FROM richieste";
$query=@mysql_query($sql) or die (mysql_error());while ($array=mysql_fetch_array($query))
{
echo "E-mail: ".$array['email']." - Descrizione: ".$array['description']."<br />";
}
?>[/php];)
-
Grazie mille, sei un grande .
-
Di nulla, buon scripting.