- Home
- Categorie
- Coding e Sistemistica
- Coding
- Come faccio a inviare dei dati al database?
- 
							
							
							
							
							
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(
 idint(10) NOT NULL auto_increment,
 Emailvarchar(100) default NULL,
 descriptionvarchar(100) default NULL,
 useridint(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. 