INSERIRE DATI IN DATABASE DA STESSA PAGINA

di il
9 risposte

INSERIRE DATI IN DATABASE DA STESSA PAGINA

Ciao a tutti
da poco ho iniziato a studiare php

Vorrei chiedere: e' possibile inserire dei dati in un database mysql da un form ?
Ma senza cambiare pagina.

Vi posto quello che sto facendo




<?php

if (isset($_POST['on'])) {

    $host = "127.0.0.1";
    $user = "root";
    $password = "";
    $database = "tutorial_mysql";


    $connessione = new mysqli($host, $user, $password, $database);
    $sql = "INSERT INTO persone (nome,cognome,email)  VALUEs 


('luca','rossi','luca.r@gmaijjl2.com')     ";
}



?>





<html>

<body>
    <form action="quattro.php" method="post">
        <input type="submit" name="on" value="on">
        <input type="submit" name="off" value="off">
       
    </form>
</body>

</html>




In pratica quando si clicca sul pulsante on dovrebbe inserire dei dati finti nel db
ma non accade nulla

Devo per forza lavorare su due pagine?
grazie a tutti per il supporto

9 Risposte

  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    victordesantis ha scritto:


    Vorrei chiedere: e' possibile inserire dei dati in un database mysql da un form ?
    Ma senza cambiare pagina.
    Se con "senza cambiare pagina" intendi che lo stesso file PHP presenta il form e ne riceve anche i dati, ovvio che è possibile, anzi in alcuni contesti (es. modifica di un'anagrafica) questa è una prassi consolidata per riproporre all'utente i dati inseriti dopo averli magari inviati per un aggiornamento, in modo da poter ripetere l'operazione; in alternativa, si possono ricevere i dati, salvarli e successivamente ridirezionare l'utente a un'altra pagina, tipo quella che contiene l'elenco dei dati di partenza o una pagina di conferma e così via.

    victordesantis ha scritto:


    Vi posto quello che sto facendo [...]
    In pratica quando si clicca sul pulsante on dovrebbe inserire dei dati finti nel db
    ma non accade nulla
    Sorvolando sulla presenza di due pulsanti di submit nel form, apparentemente non necessari (ne basta uno) e confidando che la pagina "quattro.php" sia sempre quella di partenza, di cui hai mostrato il codice, direi che l'origine del problema è abbastanza evidente: dov'è che hai fatto l'inserimento?

    Sarà una mia svista, ma io il codice che fa l'inserimento del record eseguendo lo statement SQL che hai costruito non lo vedo.

    Ciao!
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    Ciao grazie per la risposta
    ecco il punto in cui inserisco
    
        $host = "127.0.0.1";
        $user = "root";
        $password = "";
        $database = "tutorial_mysql";
    
    
        $connessione = new mysqli($host, $user, $password, $database);
        $sql = "INSERT INTO persone (nome,cognome,email)  VALUEs 
    
    
    ('luca','rossi','luca.r@gmaijjl2.com')     ";
    }

    io premo il pulsante on
    mi richiama if
    ed inserisce
    ma non so dove sbaglio grazie
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    Quindi è davvero una "svista" di Alka ?
    Il codice che mostri apre una connessione e prepara una variabile contenente una query. Non fa altro.
    Ti consiglio di studiare ancora un po' prima di preoccuparti se è meglio usare una o due pagine.
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    Ciao gentilmente
    mi dici cosa manca?
    grazie
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    Dai un'occhiata qui
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    grumpy ha scritto:


    Il codice che mostri apre una connessione e prepara una variabile contenente una query. Non fa altro.
    Ah, allora non avevo visto male...

    victordesantis ha scritto:


    mi dici cosa manca?
    Hai solo inserito in una variabile la stringa che rappresenta il comando di inserimento: direi che manca il farlo eseguire.

    Se però non salta all'occhio il problema nonostante il mio indizio iniziale, allora direi che devi senz'altro documentarti di più in merito.
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    Ok adesso funziona

    ho capito che l'azione per l'inserimento e' questa
    $connessione->query($sql);


    ma una domanda:
    come mai se avessi lasciato non commentato avrebbe funzionato lo stesso?
    Cioe' non capisco, essendo dentro un if come fa a funzionare se non ce alcuna condizione che lo fa attivare?
    Grazie
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    Se vuoi testare l'esito della query devi farlo DOPO la sua esecuzione, non prima.
    Tieni poi presente che le istruzioni php per la gestione dei db MySql hanno due tipi di sintassi: quello object oriented e quello cosiddetto procedurale. Puoi usare l'uno o l'altro, ma non mescolarli.
  • Re: INSERIRE DATI IN DATABASE DA STESSA PAGINA

    victordesantis ha scritto:


    ma una domanda:
    come mai se avessi lasciato non commentato avrebbe funzionato lo stesso?
    Cioe' non capisco, essendo dentro un if come fa a funzionare se non ce alcuna condizione che lo fa attivare?
    Non mi è chiara la tua domanda: cosa intendi dire con "non c'è alcuna condizione che lo fa attivare"?
    Certo che c'è!

    All'interno dell'if() vai a eseguire $connessione->query($sql) e vai a controllare se il valore restituito da quella chiamata è == true, quindi l'esecuzione della query è esplicitamente indicato ed è necessario al fine di ottenere quel valore che poi confronti con true e che stabilisce se entrare (o meno) all'interno della parte di codice corrispondente all'espressione verificata.

    Attenzione perché tutti questi concetti sono l'ABC, la base della programmazione (a prescindere dal fatto che parliamo di PHP o di qualsiasi altro linguaggio): non si può scrivere codice senza avere ben chiara la sintassi e quello che viene materialmente fatto scrivendo un determinato costrutto, altrimenti significa andare "a tentoni", con risultati imprevedibili e affidati alla semplice fortuna, che può aiutare nei casi più semplici e immediati come questo (dove basta un copia/incolla), ma appena la complessità del problema aumenta.... auguri!
Devi accedere o registrarti per scrivere nel forum
9 risposte