Visualizzazione risultati 1 fino 5 di 5

Discussione: Inserimento dati form nel database

  1. #1
    crestissima non è connesso Neofita
    Data registrazione
    22-06-2015
    Messaggi
    6

    Predefinito Inserimento dati form nel database

    Ciao a tutti,
    premetto che sono un novellino in materia.
    mi dispiace, ma è tutto il pomeriggio che cerco soluzioni nel forum, ma non ne vengo a capo.
    ho la seguente pagina html:
    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
      <title></title>
    </head>
    <body>
    <FORM
    METHOD="post" ACTION="inserisci1.php">
    <INPUT TYPE="text" NAME="campo1">
    <INPUT TYPE="text" NAME="campo2">
    <INPUT TYPE="submit" VALUE="Inserisci">
    </FORM>
    
    </body>
    </html>
    e vorrei che i dati inseriti nei campi, dopo aver premuto il pulsante, vengano inseriti nel mio database.
    ho impostato questo codice php:
    Codice PHP:
    <?php
    $nome
    = $_POST['campo1'];
    $cognome = $_POST['campo2'];
    $cn = mysql_connect("localhost", "crestissima", "********") or die();
    mysql_select_db("my_crestissima", $cn) or die();
    mysql_query("INSERT INTO ISCRIZIONI VALUES($nome, $cognome)", $cn);
    ?>
    eseguendo il codice non mi compare nessun messaggio di errore, ma nel database non trovo nessun nuovo record...

    grazie e scusate per la banalità

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Prova a controllare se la query ha avuto successo; modifica la riga in cui invochi mysql_queryed aggiungi questo controllo:
    Codice PHP:
    $result = mysql_query("INSERT INTO ISCRIZIONI VALUES($nome, $cognome)", $cn);
    if (!
    $result) {
    die(
    'Invalid query: ' . mysql_error());
    }
    Ad occhio, potresti aver bisogno di racchiudere $nome e $cognome tra apici, nella query.

    Inoltre, ma non credo sia direttamente collegato al problema, presta attenzione quando usi die: se non gli passi nessun argomento, lo script termina senza mostrare nessuna informazione. È molto più utile che lo script termini mostrando un messaggio d'errore, per avere almeno un'idea di dove ci sono stati problemi. Ad esempio:
    Codice PHP:
    $cn = mysql_connect("localhost", "crestissima", "********") or die("Cannot connect to database " . mysql_error());
    mysql_select_db("my_crestissima", $cn) or die("Cannot select database " . mysql_error());
    Altra osservazione non direttamente connessa al problema: le funzioni mysql_* sono deprecate, devi usare mysqli o PDO al loro posto (mysqli ha una sintassi molto simile a quella che già usi).

    Ultima osservazione, nomi di tag ed attributi HTML in maiuscolo sono la "vecchia scuola", ultimamente si preferisce la scrittura in minuscolo.

  3. #3
    crestissima non è connesso Neofita
    Data registrazione
    22-06-2015
    Messaggi
    6

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Prova a controllare se la query ha avuto successo; modifica la riga in cui invochi mysql_queryed aggiungi questo controllo:
    Codice PHP:
    $result = mysql_query("INSERT INTO ISCRIZIONI VALUES($nome, $cognome)", $cn);
    if (!
    $result) {
    die(
    'Invalid query: ' . mysql_error());
    }

    Ad occhio, potresti aver bisogno di racchiudere $nome e $cognome tra apici, nella query.

    Inoltre, ma non credo sia direttamente collegato al problema, presta attenzione quando usi die: se non gli passi nessun argomento, lo script termina senza mostrare nessuna informazione. È molto più utile che lo script termini mostrando un messaggio d'errore, per avere almeno un'idea di dove ci sono stati problemi. Ad esempio:
    Codice PHP:
    $cn = mysql_connect("localhost", "crestissima", "********") or die("Cannot connect to database " . mysql_error());
    mysql_select_db("my_crestissima", $cn) or die("Cannot select database " . mysql_error());
    Altra osservazione non direttamente connessa al problema: le funzioni mysql_* sono deprecate, devi usare mysqli o PDO al loro posto (mysqli ha una sintassi molto simile a quella che già usi).

    Ultima osservazione, nomi di tag ed attributi HTML in maiuscolo sono la "vecchia scuola", ultimamente si preferisce la scrittura in minuscolo.
    Grazie mille per i suggerimenti.
    Funziona tutto! :)
    Ne approfitto per chiedere un altro consiglio.
    Sapreste indicarmi come posso creare un menù a tendina, nella pagina html, che abbia come valori i dati di un campo del database?
    ad esempio, avendo il campo del database "euro", vorrei che il menù a tendina contenga tutti i valori che appartengono al campo euro. in modo che, aggiungendo un record alla colonna "euro", la lista del menù a tendina si aggiorni e contenga quindi anche il nuovo record.
    Grazie ancora per la disponibilità!

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se per "menù a tendina", intendi una select box da usare in un form, i passi da fare sono:
    1. Leggere i dati dal database e memorizzarli in un array (in PHP/MySQL, con un'operazione di select)
    2. Scorrere l'array, stampandone il contenuto (vedi esempio)


    L'aggiornamento in tempo reale del contenuto del menù è più complicato, dovresti realizzare l'invio del form in AJAX/AJAJ con JavaScript e, quando il server risponde con il messaggio di conferma, manipolare il DOM aggiungendo una nuova opzione alla select box.
    Non te lo consiglio, a meno che tu non lo ritenga strettamente necessario: il menù viene comunque aggiornato correttamente ricaricando la pagina. Nel caso tu voglia comunque provare, jQuery o framework come AngularJS potrebbero essere d'aiuto.

    Per stampare il contenuto dell'array, supponendo che questo si chiami $entries:
    Codice HTML:
    <select name="my_select">
    <?php foreach ($entries as $entry): ?>
        <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>

  5. #5
    Guest

    Predefinito

    Mahh non c'è niente di difficile, l'unica cosa che devi gestire è quando decidere di fare la chiamata, l'esempio sotto fa una chiamata al caricamento della pagina, esempio miaPagina.php chiama la pagina prove.php si fa tornare un json e lo appende dentro la select...È la base... ;) Devi imparare per forza queste cose...Ciao

    Ps:Ovviamente devi includere JQUERY sono nei due script e css a dire il vero il css mi sa che ne basta uno solo, che è una libreria Javascript, se vuoi fare pagine e chiamate dinamiche direi che devi per forza imparare a muovertici.

    Pagina index.php o .html

    Codice HTML:
    <html>
        <head> 
            <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <META http-equiv="X-UA-Compatible" content="IE=edge">
            <script type="text/javascript" src="js/JQuery.js"></script>
            <script type="text/javascript" src="js/jquery-ui.js"></script>
            <link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />
            <link rel="stylesheet" type="text/css" href="css/jquery-ui.theme.min.css" />  
        </head>
        <body onload="invia()">
        <select id="miaSelect" >
            <option> </option>
        </select>
        </body>
    </html>
    
    <script type="text/javascript">
      function invia(){
            $.ajax({
                url:'prova.php',
                type:'POST',
                dataType: 'json',
                success: function( data ) {
                    //alert(data);
                    $.each(data, function(i, value) {
                        $('#miaSelect').append($('<option>').text(value).attr('value', value));
                    });
                }
            });   
      }   
    </script>


    pagina prova.php


    Codice PHP:


    <?php

    include "model/connessione.php";
    //Crei qui la tua connessione
    $db = new connessione();
    $db = $db->apriConnessione();
    //----------------------------

    $query = "SELECT euro FROM miaTabella";
    $result = mysqli_query($db,$query);
    //Creo un array dove mettere il Json
    $array=array();
    //faccio la fetch con i risultati $risultato['euro'], euro è il nome della colonna se vuoi altre colonne aggiungi alla select e recupererai con $risultato['nomeColonna']
    while ($risultato = mysqli_fetch_assoc($result)) {
    $euro = $risultato['euro'];
    //Inserisco i risultati in un array
    $array[]=$euro;
    }
    //faccio l'encode Json dei miei dati
    $array = json_encode($array);
    //printo la risposta ad Ajax, sarebbe che al success function(data) di Ajax questo echo è il data,
    //cioè la risposta che il server da al client, quindi occhio ai print perchè i print quando sei in chiamata sono resitituiti al client.
    echo $array;

    ?>

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •