Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    13

    Inserire dati in tabella MYSQL attraverso pagine HTML/PHP

    Ciao a tutti, ecco il problema. (Sono proprio alle prime armi e ho già letto la guida di base.. ora sto tentando di far pratica).

    MIO OBIETTIVO:
    1) vorrei avere una pagina html in cui dal sito web uno può inserire dei dati che finiranno in una tabella mySQL (e dalla quale poi poter richiamare, all'occorrenza in altre pagine html, solo quelli utili..)
    2) ho creato una pagina html così:
    codice:
    <form method="post" action="input.php">
    Nome: <input type="text" name="nome" size="25">
    Indirizzo: <input type="text" name="indirizzo" size="50">
    <input type="submit" value="Invia">
    3) e poi la pagina input.php
    Codice PHP:
    $connetti=mysql_connect('localhost','username','') or die('Errore...');
    $apridb=mysql_select_db('my_username'$connetti) or die('Errore...');
    $metto=mysql_query("INSERT INTO tabella_esempio (nome,indirizzo) VALUES ('$nome','$indirizzo')");
    $chiudi=mysql_close($connetti); 


    PROBLEMA: innanzitutto: mi dà errore! (come devo fare per ricevere la descrizione dell'errore con php?)
    Sul perché non funzioni, può c'entrare il fatto che "nome" e "indirizzo" sono i nomi della seconda e della terza colonna della tabella mentre la prima colonna, che ho chiamato ID e si compila da sola, non l'ho considerata in questo script?

    Grazie,
    Claudio
    Ultima modifica di nome; 10-10-2013 a 14:21

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    invece di
    die('Errore...');

    metti
    die(mysql_error());

    Altra cosa, $nome e $indirizzo li assegni in precedenza con una cosa così?
    $nome = $_POST['nome'];
    $indirizzo = $_POST['indirizzo'];

    Se non fai così la query non funzionerà e se dovesse funzionare vuol dire che la direttiva register_globals nel php.ini è attiva e sarebbe meglio disattivarla.

    Ultima cosa: visto che sei all'inizio, impara da subito ad usare mysqli oppure PDO per interfacciarti al DB, mysql sarà presto deprecato e non funzionerà più sulle nuove versioni di PHP.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    13
    Grazie mille, ora provo e poi scrivo qui come è andata..

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    13
    Perfetto: ora tutto mi funziona. Funzionava anche lo script precedente aggiungendo le due precisazioni mancanti. Poi, come da suggerimento, ho provato a passare a mySQLi: visto che devo imparare meglio usare direttamente i comandi nuovi... Grazie ancora!

    Codice PHP:
    <?php
    $connessione
    =mysqli_connect("localhost","username","","my_username");
    // Controllo la connessione
    if (mysqli_connect_errno($con))
      {
      echo 
    "Connessione fallita a MySQL: " mysqli_connect_error();
      }

    $inserimento="
    INSERT INTO tabella_esempio (nome, indirizzo)
    VALUES('
    $_POST[nome]','$_POST[indirizzo]')
    "
    ;

    // Controllo inserimento dati in tabella la connessione
    if (!mysqli_query($connessione,$inserimento))
      {
      die(
    'Errore con inserimento : ' mysqli_error($connessione));
      }
    echo 
    "1 record aggiunto";

    mysqli_close($connessione);
    ?>

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Bene, ora un altro paio di cose.
    Quote Originariamente inviata da nome Visualizza il messaggio
    Codice PHP:
    $connessione=mysqli_connect("localhost","username","","my_username");
    // Controllo la connessione
    if (mysqli_connect_errno($con)) 
    Occhio, che la variabile l'hai chiamata $connessione, non $con, correggi.

    Codice PHP:
    $inserimento="
    INSERT INTO tabella_esempio (nome, indirizzo)
    VALUES('
    $_POST[nome]','$_POST[indirizzo]')
    "

    Non usare mai direttamente i dati provenienti da un form e che andranno ad interagire con il database, potrebbe esserci del codice malevolo.
    Prima passa i dati alla funzione mysqli_real_escape_string()

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    13
    Corretta la prima cosa, mi sono bloccato sulla seconda: il passaggio che mi suggerisci con la funzione mysqli_real_escape_string() è corretto scritto così?

    Codice PHP:
    $inserimento=mysqli_real_escape_string($connessione,$inserimento); 
    Giusto per avere più consapevolezza, da cosa mi protegge di preciso questo passaggio? Quando parli di "codice malevolo" intendi dei caratteri che potrebbero essere male interpretati o altro?

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Alla funzione devi passarci i singoli dati, ad esempio così
    Codice PHP:
    $nome mysqli_real_escape_string($_POST['nome']);
    $indirizzo mysqli_real_escape_string($_POST['indirizzo']);

    $inserimento="INSERT INTO tabella_esempio (nome, indirizzo) VALUES('$nome','$indirizzo')"

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    13
    Se ho ben capito leggendo qua e là a proposito di questa funzione, il parametro della mia connessione lo avrei dovuto mettere qualora avessi usato mysql_real_escape_string() ma non è necessario in questo caso con mysqli_real_escape_string() ...

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Oh, giusto, nella versione procedurale della funzione ci va messa anche la variabile contenente il link alla connessione.

    $nome = mysqli_real_escape_string($connessione,$_POST['nome']);
    ...

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    13
    Bè ancora grazie... mi hai proficuamente complicato le cose! Ora cerco di assimilare e vado avanti a far pratica con le varie funzioni. A risentirci sul forum, ciao!

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.