Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Collegamento form DB

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    163

    Collegamento form DB

    Ciao a tutti e vi ringrazio in anticipo,

    brevemente son abbastanza ignorante in materia, ma a mozzichi e bocconi, leggendo e vedendo tutorial sono riuscito a fare un "mezzo" sito personale.

    Ora fiero e contento di quel che ho fatto, vorrei creare dei form per la registrazione utenti; niente di che, chiedendo nome,città e mail e sotto piazzarci un bell bottone "iscriviti"!Quindi da quel poco che ho imparato e capito, mi creo il mio buon .html:

    <html>
    <body>

    <form action="riceviDatiFormFinale.php">
    <INPUT type="TEXT" name="Nome" maxlength="50" size="30">



    <INPUT type="TEXT" name="Città" maxlength="30" size="20">



    <INPUT type="TEXT" name="Email" maxlength="30" size="20">




    <INPUT type="SUBMIT" value="Invia">

    </form>
    </body>
    </html>

    Poi ho scaricato XAMPP attivando Apache e mysql; ho creato dalla funzionalita di PhpMyAdmin un database chiamato "prova" contenente 3 tabelle: nome,città e email.
    Ho anche creato un file php che ovviamente ho chiamato riceviDatiFormFinale.php:

    <?php

    $nome = $_REQUEST["comboNome"];
    $citta = $_REQUEST["comboCittà"];
    $email = $_REQUEST["comboEmail"];

    $ris = $nome . $citta . $email;

    print($ris);

    ?>

    che penso mi serve quando lo richiamo nel html


    Ora il mio dilemma è?? Ammesso che ho fatto bene questi passaggi appena scritti, come faccio a far comunicare le form con il db?Cioè...come faccio a dire al db leggi nei campi nome,città e email quando si preme INVIA?!?!?

    Sto nelle mani di Kaifa che in questo caso son le mie...

    Grazie a tutti per l'aiuto e spero di esser stato il più trasparente e comprensibile possibile.

    Grazie, grazie di nuovo!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469

    Re: Collegamento form DB

    Originariamente inviato da Dom82
    Ammesso che ho fatto bene questi passaggi appena scritti
    Purtroppo no, oddio, funzionare funzionerà pure, ma non è un modo ortodosso per raggiungere il tuo scopo.

    <form action="riceviDatiFormFinale.php">
    Qui specifica il method e il name, così
    codice:
    <form method="post" name="registrazione" action="riceviDatiFormFinale.php">
    Questo perché poi nello script php potrai usare la variabile $_POST per ricevere i dati, l'uso di $_REQUEST è in genere sconsigliato.
    Altra cosa, non usare caratteri accentati per assegnare i nomi dei campi di un form, potrebbero nascere incompatibilità con alcuni set di caratteri, quindi usa Citta invece di Città.

    I dati li ricevi così
    Codice PHP:
    $nome $_POST["Nome"];
    $citta $_POST["Citta"];
    $email $_POST["Email"];

    $ris $nome $citta $email;

    print(
    $ris); 
    Per quanto riguarda il db, di tabella fanne solo una con le colonne nome, citta e email, perché crei 3 diverse tabelle? Diventerebbe un casino prendere i dati giusti per ogni utente.

    Per inviare i dati al db devi effettuare un collegamento con questo codice
    Codice PHP:
    $host "localhost"//nome dell'host, in locale con xampp è questo
    $user "root"//di default mysql usa questo, se l'hai cambiato metti il tuo
    $pass ""//di default mysql non ha la password settata, se l'hai impostata scrivila qui
    $dbname "nomedb"//il nome che hai dato al database
    $conn mysql_connect($host$user$pass) or die('Impossibile stabilire una connessione col database: ' mysql_error());
    mysql_select_db($dbname,$conn) or die('Impossibile selezionare il database: ' mysql_error()); 
    Fatto questo devi inserire i dati nel db
    Codice PHP:
    $query "INSERT INTO tabella (nome, citta, email) VALUES ('" $nome "','" $citta ."','" $email "'"); //prepara la query da eseguire
    mysql_query($query); //esegue la query inserendo i dati nel db 
    Se i dati devi prenderli invece fai così
    Codice PHP:
    $query "SELECT * FROM tabella WHERE email='" $email "'";
    $result mysql_query($query); //esegue la query leggendo i dati relativi all'utente con email $email
    $dati mysql_fetch_row($result);
    echo 
    "Nome: " $dati['nome'] . " - Città: " $dati['citta'] . " - Email : " $dati['email']; 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    163
    GRAZIE per i consigli, cerchero di tradurli sul mio codice. Ti farò sapere...grazie INFINITE!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    163
    Ciao e vi ringrazio,soprattuto il tipo che mi ha aiutato prima...

    ho modificato seguendo i consigli dell'amico su, ma eseguendo l'html costituito dal seguente testo :

    <html>
    <body>

    <form method="post" name="registrazione" action="riceviDatiFormFinale.php">




    <INPUT type="TEXT" name="Nome" maxlength="50" size="30">



    <INPUT type="TEXT" name="Città" maxlength="30" size="20">



    <INPUT type="TEXT" name="Email" maxlength="30" size="20">




    <INPUT type="SUBMIT" value="Invia">

    </form>
    </body>
    </html>

    e a sua volta eseguendo il php "riceviDatiFormFinale.php" costituito cosi:


    <?php


    $nome = $_POST["Nome"];
    $citta = $_POST["Citta"];
    $email = $_POST["Email"];

    $ris = $nome . $citta . $email;

    print($ris);;



    $host = "localhost"; //nome dell'host, in locale con xampp è questo
    $user = "root"; //di default mysql usa questo, se l'hai cambiato metti il tuo
    $pass = ""; //di default mysql non ha la password settata, se l'hai impostata scrivila qui
    $dbname = "prova"; //il nome che hai dato al database
    $conn = mysql_connect($host, $user, $pass) or die('Impossibile stabilire una connessione col database: ' . mysql_error());
    mysql_select_db($dbname,$conn) or die('Impossibile selezionare il database: ' . mysql_error());





    $query = "SELECT * FROM tabella WHERE email='" . $email . "'";
    $result = mysql_query($query); //esegue la query leggendo i dati relativi all'utente con email $email
    $dati = mysql_fetch_row($result); <--27esima riga
    echo "Nome: " . $dati['nome'] . " - Città: " . $dati['citta'] . " - Email : " . $dati['email'];
    ?>





    al momento che clicco dopo aver inserito i dati nei 3 form,mi restituisce:

    " Lucapippo@hotmail.it
    Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\xampp\htdocs\riceviDatiFormFinale.php on line 27
    Nome: - Città: - Email : "



    dove Luca è la striga che ho inserito al primo form e pippo@hotmail.it è il terzo form.

    Dov'è l'errore?

    Grazie...caffè pagato!

  5. #5
    C'è una funzione molto utile mysql_error(): essa ti fornisce il motivo per il quale fallisce un'interazione con il db.

    Quindi per capire il motivo di quel tipo di errore riscrivi le righe 26 e 27 così:

    $result = mysql_query($query) or die (mysql_error());
    $dati = mysql_fetch_row($result) or die (mysql_error());

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Intanto qui
    Originariamente inviato da Dom82
    <INPUT type="TEXT" name="Città" maxlength="30" size="20">
    non hai sostituito Città con Citta.

    Di conseguenza questa variabile
    $citta = $_POST["Citta"];
    non viene valorizzata dato che in $_POST il dato Citta non esiste e infatti questo
    $ris = $nome . $citta . $email;
    print($ris);
    non stampa la città che hai inserito nel form, ma solo il nome e l'email

    Per quanto riguarda l'errore: tu vai a provare a prendere dal db la entry con email uguale a quella contenuta nella variabile $email, ma la domanda è "nel db tale entry esiste?", se non esiste $result non conterrà niente e quindi mysql_fetch_row() va in errore.

    Sostituisci questo
    Codice PHP:
    $query "SELECT * FROM tabella WHERE email='" $email "'";
    $result mysql_query($query); //esegue la query leggendo i dati relativi all'utente con email $email
    $dati mysql_fetch_row($result);   [B]<--27esima riga[/B]
    echo 
    "Nome: " $dati['nome'] . " - Città: " $dati['citta'] . " - Email : " $dati['email']; 
    con questo
    Codice PHP:
    $query "SELECT * FROM tabella WHERE email='" $email "'";
    $result mysql_query($query); //esegue la query leggendo i dati relativi all'utente con email $email
    if(mysql_num_rows($result) > 0) {
        
    $dati mysql_fetch_row($result);   [B]<--27esima riga[/B]
        echo 
    "Nome: " $dati['nome'] . " - Città: " $dati['citta'] . " - Email : " $dati['email'];
    }
    else {
        echo 
    "
    Nel db non ho trovato alcuna entry con email " 
    $email;


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 © 2024 vBulletin Solutions, Inc. All rights reserved.