Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    3

    inserimento dati da form a db

    problema da principiante quale sono...

    ho seguito alla lettera la guida presente su qs sito "guida a php-mysql", in cui si spiega come creare una pagina di inserimento news da pagina web a db tramite form, e poi visualizzare su una pagina le news inserite.

    Il problema è l'inserimento delle news dalla pagina del form (insert.php) a quella in cui devono essere salvate(save.php).

    Nella fattispecie:
    - seguendo tutto alla lettera, mi ritorna sul browser l'errore che la password (non di connessione al db, ma quella per inserire le news) è errata. Ho controllato più volte, era giusta, ma non la prendeva;
    - quindi, ho provato a dare nel codice password="" e a tralasciare quindi di inserirla quando inserivo la news; in effetti non mi tornava più l'errore della password, ma se ne usciva con la scritta: "devi inserire il titolo e il testo", anche se l'avevo inserito!;
    - allora ho tolto dal codice di save.php la funzione trim che elimina gli spazi vuoti, per vedere cosa accadeva: risultato, la news veniva inserita nel db senza dare errore sul browser, ma una volta aperto il db, il record inserito aveva tutti i campi completamente vuoti (nonostante li avessi riempiti dalla pagina del form insert.php), e l'unica cosa che veniva inserita era il campo della data (che sul form aveva un valore di default perchè era organizzata con il menù a tendina già impostato su una data). E il timestamp relativo a questa data era, nella tabella, -1, cosa che mi sembra un pò strana... in effetti poi nella pagina di visualizzazione delle news, alla voce relativa a quella specifica news dava un errore relativo alla data.

    E'come se non riuscisse a vedere il testo che immetto... e quindi forse la password me la dava errata all'inizio perchè non la leggeva dal form...

    Aggiungo che il file di installazione (install.php) funziona, perchè ho visto che lanciandolo la tabella all'interno del db è stata creata correttamente.
    Inoltre, se inserisco manualmente le news in tabella da phpmyadmin, queste vengono visualizzate correttamente dalla pagina predisposta alla loro visualizzazione (index.php).

    A questo punto penso che l'errore sia nel file save.php, che è questo:

    <?
    //richiamiamo la configurazione grafica e quella dinamica
    include("top_foot.inc.php");
    include("config.inc.php");
    top();
    //controlliamo la password
    if ($pass != $password):
    echo "Password errata";
    //eliminando gli spazi di troppo e verifico esistenza testo
    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo "I campi Titolo e Testo devono essere riempiti!";
    //fatto ciò, ci occupiamo dei caratteri particolari o che vadano in contrasto con il codice html
    else:
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $testo = addslashes(stripslashes($testo));
    $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);
    //convertiamo la data in timestamp
    $data = mktime("0", "0", "0", $mese, $giorno, $anno);
    //ci connettiamo ora al db
    $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");
    //creiamo la query di inserzione
    $query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')";
    //verifichiamo l'effettivo inserimento della news nel db
    if (mysql_query($query, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Erorre durante l'inserimento";
    //chiudiamo la connessione con il db
    mysql_close($db); endif;
    foot();

    Mando anche il file del form, insert.php:

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

    //intestazione
    top();
    ?>

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

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



    Data:

    <select name=giorno>
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value=$i>$i";
    ?>
    </select>
    <select name=mese>
    <option value=1>Gennaio
    <option value=2>Febbraio
    <option value=3>Marzo
    <option value=4>Aprile
    <option value=5>Maggio
    <option value=6>Giugno
    <option value=7>Luglio
    <option value=8>Agosto
    <option value=9>Settembre
    <option value=10>Ottobre
    <option value=11>Novembre
    <option value=12>Dicembre
    </select>
    <select name=anno>
    <option value=2001>2001
    <option value=2002>2002
    <option value=2003>2003
    <option value=2004>2004
    <option value=2005>2005
    </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></textarea>



    Password:

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



    <input type=submit value=Invia> </form>
    <?
    // chiusura pagina
    foot();
    ?>

    Non so se ci sia un errore qui, casomai vi mando il codice degli altri file.
    Non capisco proprio perchè non riesca a passare il testo e quindi mi dia questi errori.

    Lo so che ho scritto un papiro per un errore che sarà una stupidaggine... mi scuso per questo...
    Grazie a chi mi aiuta!
    v.
    Considera ogni sconfitta come un modo per temprarti verso un nuovo inizio.

  2. #2

    Re: inserimento dati da form a db

    Originariamente inviato da vanessa
    Nella fattispecie:
    - seguendo tutto alla lettera, mi ritorna sul browser l'errore che la password (non di connessione al db, ma quella per inserire le news) è errata. Ho controllato più volte, era giusta, ma non la prendeva;
    le guide in genere hanno qualche anno, e con le nuove versioni di php sono cambiate alcunecosette.. in particolare gli array superglobali e la configurazione di default del register globals.... e probabilmente è a causa di queste.
    L'errore è al 100% qui (non ci piove.. quando qualcosa non va dovresti isolare il punto in cui c'è l'errore e postare solo quello che lo riguarda...):

    if ($pass != $password)

    una delle due variabili verrò da un form immagino... con metodo post probvabilemnte.. ebbene.. allora...

    se la password immessa nel form è $pass devi fare..
    if ($_POST['pass'] != $password)

    se la password immessa nel form è $password devi fare..
    if ($pass != $_POST['password'])

    Insoma.. prima tutto quello che veniva da post, get, cookie, sessioni ect etc era direttamente una variabile "normale" in php... adesso invece, per questioni di sicurezza devi usare rispettivamente $_POST $_GET $_COOKIE $_SESSION... che sono degli array associativi... per cui la variabile sarà solo una chiave di questo array.
    Magari se non hai ben chiaro cosa sia un array associativo fai un po' fatica a capire, ma nella pratica è molto semplice... invece di $var avrai $_ARRAY['var'] dove $_ARRAY è uno di quelli di sopra, a seconda dei casi.



    - quindi, ho provato a dare nel codice password="" e a tralasciare quindi di inserirla quando inserivo la news; in effetti non mi tornava più l'errore della password, ma se ne usciva con la scritta: "devi inserire il titolo e il testo", anche se l'avevo inserito!;
    Stesso problema di sopra con la variabile rlativa al testo...




    PS: saibal, mod, articolisti... ma non sarebbe ora di rivedere tutti gli articoli o di agiungere almeno all'inizio di ogni articolo che mandi ad un ulteriore articolo o chiarimento su register global e cacchi vari?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    3
    grazie 1000 ora provo!
    PS: in effetti le guide sono datate, ma sono anche le migliori (dal punto di vista della chiarezza e della praticità) che ho trovato in rete!
    Considera ogni sconfitta come un modo per temprarti verso un nuovo inizio.

  4. #4
    Anche io sono agli inizi, e sto avendo enormi difficoltà per gli stessi motivi.
    Ho semplificato lo script, con l'obiettivo di inserire un dato nel form e visualizzarlo in una seconda pagina.
    Nella prima pagina, il codice è:

    <form id="login" method="get" action="riconoscimento.php">
    <table width="20%" border="0" align="center" cellpadding="5" cellspacing="1">
    <tr>
    <td>user</td>
    <td><input type=text name=user/></td>
    </tr>

    <tr>
    <td colspan="2"><label>
    <div align="center">
    <input type="submit" name="Submit" value="entra" />
    </div>
    </label></td>
    </tr>
    </table>
    </form>

    Mentre nella seconda, riconoscimento.php, c'è:

    <?
    echo $_POST['user'];
    ?>

    Il risultato? Tutto vuoto, nonostante abbia dichiarato la variabile nella seconda pagina come $_POST['user'].

    Ho provato anche a modificare i'imput text del form, eliminando le quotazioni (nell'esempio citato da Vanessa non ci sono), ho fatto lo stesso con il bottone, ma niente. Dove sto sbagliando?
    Grazie
    shine on you!!

  5. #5
    Originariamente inviato da crazy diamond
    Il risultato? Tutto vuoto, nonostante abbia dichiarato la variabile nella seconda pagina come $_POST['user'].
    la variabile non è dichiarata, semmai è letta.. riferita.

    in ogni caso hai usato il metodo get, e non il metodo post.. quindi te la trovi in

    $_GET['user'];


  6. #6
    la variabile non è dichiarata, semmai è letta.. riferita.
    peccati di gioventù...
    Purtroppo continua a non funzionare
    shine on you!!

  7. #7
    Originariamente inviato da crazy diamond
    peccati di gioventù...
    Purtroppo continua a non funzionare
    mi pare strano....

    che verisone di phph hai? non sarà mic apiù vecchia della 4.2...?

  8. #8
    è la 4.2.3!
    shine on you!!

  9. #9
    e allor adovrebbe andare (comunque aggiornala!)

    prova con $HTTP_GET_VARS['user']

    che è il vecchio modo.. ma $_GET se ricordo bene esiste già dalla 4.2

  10. #10
    <td><input type=text name=user/></td>

    <input type="submit" name="Submit" value="entra" />
    non sarà la barra dopo user?
    prova con name="user"

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.