• Consiglio Direttivo

    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) ? 🙂


  • User

    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


  • Consiglio Direttivo

    Sei sicuro di aver postato le pagine giuste? :mmm:

    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? :mmm:
    [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. 😉


  • User

    // 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


  • Consiglio Direttivo

    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? 😉


  • User

    No,non lo metto.. perchè da solo fastidio.
    Ora provo ciò che tu mi hai consigliato e ti faccio sapere.
    Grazie tante


  • User

    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");
    ?>


  • Consiglio Direttivo

    Ok, ho capito, è dal core.php che viene incluso il file di configurazione, a questo punto allora non lo devi modificare il core.php. 😉


  • User

    E cosa modifico? °_° xD

    ps . Dal file elaboro.php tolgo la stringa require_once("core.php");?


  • Consiglio Direttivo

    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");


  • User

    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à.


  • Consiglio Direttivo

    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.


  • User

    Ci sono riuscito.

    Adesso dovrei però dal database imprimere in un form tutti i dati, sapresti come fare?


  • Consiglio Direttivo

    Cosa intendi per imprimere i dati in un form?
    Potresti essere più esplicito :D?


  • User

    In poche parole,_che i dati che si inviano a richieste poi vanno a scriversi in un'altra pagina.


  • Consiglio Direttivo

    Cioè, estrarre i dati contenuti nel Database e visualizzarli?


  • User

    Si, perchè quello che vado a creare è un'adminpannel .


  • Consiglio Direttivo

    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];)


  • User

    Grazie mille, sei un grande 😄 .


  • Consiglio Direttivo

    Di nulla, buon scripting. 😉