Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [freephp]: scrivere nella tabella

    ciao

    come si capisce forse dal mio post, sono ai primi approcci con il linguaggio.

    Ho seguito passo passo la guida http://php.html.it/guide/leggi/77/gu...mysql-pratica/ e ho fatto tutto pari pari.

    Siccome l'esempio calza quasi alla perfezione con quello che vorrei fare, vorrei almeno iniziare a fare funzionare quello.

    Funziona tutto fino al form di inserimento dati (la connessione è ok, le query hanno creato le tabelle, ecc...)

    Quando lancio la pagina qui sotto mi fa compilare il form, ma poi non fa controlli nè sulla password nè da alcun messaggio di conferma nè di errore... sembra che mi sfugga qualcosa... chi mi aiuta?

    Grazie 1000
    Excelsior

    ---insert.php---
    <?php
    include ("config.inc.php");
    include ("top_foot.inc.php");

    //intestazione
    top();

    $db = mysql_connect($db_host, $db_user, $db_password);
    ?>

    <form method="post" action="save.php">
    Titolo:

    <input type="text" size="40" name="titolo" />



    Data:


    <select name="giorno">
    <?php
    for ($i=1; $i<=31; $i++)
    echo "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    </select>




    Autore:

    <input type="text" size="40" name="autore" />



    E-mail:

    <input type="text" size="40" name="mail" />



    Testo:

    <textarea cols="60" rows="40" name="testo" wrap="hard"></textarea>



    Password:

    <input type="password" size="40" name="pass" />



    <input type="submit" value="Invia" />
    </form>
    <?php
    // chiusura pagina
    foot();
    mysql_close($db);
    ?>

    ---save.php---
    <?php
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    //connessione al database
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");



    //controllo la password
    if ($pass != $password): echo "Password errata";

    //se la password corrisponde recupero i dati inviati dallo script
    $titolo=$_REQUEST['titolo'];
    $autore=$_REQUEST['autore'];
    $mail=$_REQUEST['mail'];
    $testo=$_REQUEST['testo'];
    $pass=$_REQUEST['pass'];
    $giorno=$_REQUEST['giorno'];
    $mese=$_REQUEST['mese'];
    $anno=$_REQUEST['anno'];

    //controllo che i dati inseriti nei campi obbligatori (quelli con la dicitura "not null") siano effettivamente inseriti

    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo "I campi obbligatori Titolo e Testo devono essere riempiti!";

    //controllo caratteri particolari e li sostituisco con slash

    else :
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $testo = addslashes(stripslashes($testo));

    //per normalizzare la visualizzazione html del risultato finale sostituisco i caratteri particolari con i rispetivi in html

    $titolo = str_replace("<", "&lt;", $titolo);
    $titolo = str_replace(">", "&gt;", $titolo);
    $autore = str_replace("<", "&lt;", $autore);
    $autore = str_replace(">", "&gt;", $autore);
    $testo = str_replace("<", "&lt;", $testo);
    $testo = str_replace(">", "&gt;", $testo);
    $testo = nl2br($testo);

    //converto la data timestamp

    $data = mktime("0", "0", "0", $mese, $giorno, $anno)

    $query1 = "INSERT INTO news (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";
    $query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

    if (mysql_query($query1, $db) AND mysql_query($query2, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Errore durante l'inserimento $query";

    endif;

    foot();
    mysql_close($db);
    ?>

  2. #2
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    prova a modificare

    Codice PHP:
    if ($pass != $password): echo "Password errata"
    con

    Codice PHP:
    if ($pass != $password) echo "Password errata"
    e guarda se cambia qualcosa


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  3. #3
    ciao

    ho provato e mi da come output una pagina bianca (save.php), esattamente come prima.

    Onestamente non capisco eppure dovrebbe fare almeno il controllo della password... Invece pare che qualunque cosa metta non inizi neppure a elaborarla.

  4. #4
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    per vedere dove arriva il codice prova a scrivere

    Codice PHP:
    echo "XXXXXXXXXXXXXXXXXXXXXXXX"
    prima di

    Codice PHP:
    //controllo la password 
    se la scritta non ti esce significa che c'è qualcosa prima...


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  5. #5
    non esce, infatti come pensavo c'è qualcosa che non va...

    all'inizio di save.php ho solo degli include

    <html>
    <head>
    <title>Salvataggio record inserito</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <?php
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    poi comincio con echo "XXXXXXXXXXXXXXXXXXXXXXXX"; e via di seguito...

  6. #6
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Allora, ho preso l'esempio il codice che hai postato dando per scontato che l'avessi copiato dal link dell'esempio del sito HTML.

    Dopo averci perso un bel po' di tempo, mi sono reso conto che non l'hai copiato uguale, in quanto ci sono errori di punti e virgola e modifiche in certe righe.

    Ho seguito passo passo la guida http://php.html.it/guide/leggi/77/g...pmysql-pratica/ e ho fatto tutto pari pari.

    Siccome l'esempio calza quasi alla perfezione con quello che vorrei fare, vorrei almeno iniziare a fare funzionare quello.
    Non è esattamente così....



    Comunque... ti posto le varie pagine che devi avere per far funzionare l'esempio del sito HTML e da qui te lo modifichi come vuoi.

    config.inc.php
    Codice PHP:
    <?php

    $db_host 
    "localhost";
    $db_user "root";
    $db_password "";
    $db_name "test";

    //password per inserimento articoli
    $password "";
    ?>
    top_foot.inc.php
    Codice PHP:
    <?php function top() { ?>
    <html>
    <head>
    <meta name=generator content="Script di freephp.it">
    </head>
    <body bgcolor=ffffff text=000000>
    <font face=verdana,tahoma,arial size=-1>
    <h1>FREEPHP.IT</h1>

    <?php }

    function 
    foot() { ?>
    </font>
    </body>
    </html>
    <?php ?>
    insert.php
    Codice PHP:
    <?php
    include ("config.inc.php");
    include (
    "top_foot.inc.php");

    //intestazione
    top();

    $db mysql_connect($db_host$db_user$db_password);
    ?>

    <form method="post" action="save.php">
    Titolo:

    <input type="text" size="40" name="titolo" />



    Data:


    <select name="giorno">
    <?php
    for ($i=1$i<=31$i++)
    echo 
    "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    </select>




    Autore:

    <input type="text" size="40" name="autore" />



    E-mail:

    <input type="text" size="40" name="mail" />



    Testo:

    <textarea cols="60" rows="40" name="testo" wrap="hard"></textarea>



    Password:

    <input type="password" size="40" name="pass" />



    <input type="submit" value="Invia" />
    </form>
    <?php
    // chiusura pagina
    foot();
    mysql_close($db);
    ?>
    save.php
    Codice PHP:
    <?php
    include("top_foot.inc.php");
    include(
    "config.inc.php");
    top();

    //connessione al database
    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $pass=$_REQUEST['pass'];
    $titolo=$_REQUEST['titolo'];
    $autore=$_REQUEST['autore'];
    $mail=$_REQUEST['mail'];
    $testo=$_REQUEST['testo'];
    $pass=$_REQUEST['pass'];
    $giorno=$_REQUEST['giorno'];
    $mese=$_REQUEST['mese'];
    $anno=$_REQUEST['anno'];


    //controllo la password
    if ($pass != $password): echo "Password errata";


    //controllo che i dati inseriti nei campi obbligatori (quelli con la dicitura "not null") siano effettivamente inseriti
    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo 
    "I campi obbligatori Titolo e Testo devono essere riempiti!";

    //controllo caratteri particolari e li sostituisco con slash

    else :
    $titolo addslashes(stripslashes($titolo));
    $autore addslashes(stripslashes($autore));
    $mail addslashes(stripslashes($mail));
    $testo addslashes(stripslashes($testo));

    //per normalizzare la visualizzazione html del risultato finale sostituisco i caratteri particolari con i rispetivi in html

    $titolo str_replace("<""&lt;"$titolo);
    $titolo str_replace(">""&gt;"$titolo);
    $autore str_replace("<""&lt;"$autore);
    $autore str_replace(">""&gt;"$autore);
    $testo str_replace("<""&lt;"$testo);
    $testo str_replace(">""&gt;"$testo);
    $testo nl2br($testo);

    //converto la data timestamp

    $data mktime("0""0""0"$mese$giorno$anno);

    $query1 "INSERT INTO news (titolo, testo, data, autore) VALUES ('$titolo', '$testo', '$data', '$autore')";


    if (
    mysql_query($query1$db))
    echo 
    "L'articolo è stato inserito correttamente";
    else
    echo 
    "Errore durante l'inserimento $query";

    endif;

    foot();
    mysql_close($db);
    ?>


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  7. #7
    ciao

    stranissimo ero convinto di non aver fatto errori... scusa!

    Ho provato con il tuo codice ed effettivamente ora mi da delle risposte...

    Cioè il record non me lo scrive e mi dice "Errore nell'inserimento".

    Sono sbagliate le query?

    Ho controllato ed in effetti andando alla pagina
    http://php.html.it/guide/lezione/228...amo-lo-script/

    trovo del codice da sostituire in save.php Ho modificato il codice (mi pare che manchi la chiusura del db e l'ho tenuta), ma nonostante questo mi da sempre errore nell'inserimento...

    Hai idea di cosa possa essere stavolta?

    Questa è la nuova porzione di codice in fondo a save.php

    $query1 = "INSERT INTO news (titolo, testo, data, nome) VALUES ('$titolo', '$testo', '$data', '$autore')";
    $query2 = "INSERT IGNORE INTO autori (nome, mail) VALUES ('$autore', '$mail')";

    if (mysql_query($query1, $db) AND mysql_query($query2, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Erorre durante l'inserimento $query";
    endif;
    foot();

    mysql_close($db);
    ?>

  8. #8
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    In questi casi si fa un echo della query, e la si prova su phpMyAdmin per vedere come mai non funziona

    Codice PHP:
    INSERT INTO news (titolotestodatanomeVALUES ('$titolo''$testo''$data''$autore'
    e ti accorgerai che il campo 'nome' non esiste

    Codice PHP:
    Messaggio di MySQL:  

    #1054 - Colonna sconosciuta 'nome' in 'field list' 


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  9. #9
    ciao

    questo è il codice della query di installazione

    $query1 = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT,
    titolo VARCHAR (255) not null ,
    testo TEXT not null ,
    data INT (11) ,
    nome VARCHAR (50) ,
    PRIMARY KEY (id))";

    $query2 = "CREATE TABLE autori (nome VARCHAR (50) not null,
    mail VARCHAR(50),
    PRIMARY KEY (nome))";

    il campo nome è presente sia nella tabella news che nella tabella autori come campo collegato.

    http://php.html.it/guide/lezione/228...amo-lo-script/ primo riquadro giallo

    Ho controllato in phpMyAdmin e il campo compare in entrambe le tabelle.

    Nella query che hai visto tu io capisco che mette la variabile $autore nel campo nome della tabella news.... e lo dovrebbe fare visto che il campo c'è

    http://yfrog.com/0unewsjvj

    http://yfrog.com/69autorij

  10. #10
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    ok.

    fai l'echo delle due query di insert e verifica cosa scrive.

    Codice PHP:
    echo $query1;
    echo 
    "
    "
    ;
    echo 
    $query2
    Le due query se le lanci sotto phpMyAdmin che errore ti danno?


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.