Visualizzazione risultati 1 fino 3 di 3

Discussione: Menu a tendina prende opzioni da database, ma non riesco a visualizzarle

  1. #1
    Guest

    Predefinito Menu a tendina prende opzioni da database, ma non riesco a visualizzarle

    Mi spiego meglio, ho un tabella nel database di questo tipo:



    Ora ho creato una pagina di registrazione dove, in teoria, dovrei visulizzare tutte le provincie in ordine, dentro un menù a tendina.
    Succesivamente dopo la registrazione l'id della regione viene salvato, isieme a gli altri dati, nella tabella utneti nel camapo "id_provincia" (per poi essere facilmente richimato).

    Il mio problema come potete notare QUI e che il menù scorre, ma non si visualizzano le provincie.
    Mi potreste coretesemente aiutare?
    Ah, dimenticavo la pagina di registrazione:

    REGIOSTRAZIONE.PHP

    Codice PHP:
    <?php
    //richiede la conessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    $provincie = (isset($_POST['provincia'])) ? trim($_POST['provincia']) : ''; // Metto nella variabile 'residenza' il dato inviato dal modulo, se non viene inviato dò di default ''
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    $mail = addslashes($mail);
    $provincie = addslashes($residenza);
    }


    // Controllo il Nome Utente
    if(strlen($user) < 6 || strlen($user) > 12)
    die(
    'Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 6 || strlen($pass) > 12)
    die(
    'Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
    die(
    'Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
    die(
    'Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
    die(
    'Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {

    // Crypt della password per garantire una miglior sicurezza
    $pass = md5($pass);


    // Genero una stringa casuale di Attivazione
    $attivazione = '';
    for(
    $x=1; $x<=32; $x++)
    $attivazione.=rand(0,9);
    $attivazione = md5($attivazione);
    $subject = "Attivazione al sito";
    $message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="sito/attivazione.php?code='.$attivazione.'">Attiva account</a>';
    // Header dell'email, per madnarla in formato html
    $headers = "From: NomeSito <miamail>\r\n";
    $headers .= "Reply-To: miamail\r\n";
    $headers .= "Return-Path: miamail\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    // Invio L'email
    mail($mail, $subject, $message, $headers);

    // Query per l'inserimento dell'utente nel database
    $strSQL = "INSERT INTO utenti (user,pass,mail,residenza,attivazione)";
    $strSQL .= "VALUES('$user', '$pass', '$mail', '$provincia', '$attivazione')";
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());

    // Reindirizzo l'utente ad una pagina di conferma della registrazione
    header('Location: registrato.php');
    exit;
    }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <head>
    <title>Registrazione</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" />
    <br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" />
    <br />
    <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" />
    <br />
    <br>
    <select name="provincia">
    <?php
    $strQuery
    ="select provincia from provincie";
    $elenco=mysql_query($strQuery) or die(mysql_error());
    while(
    $row_provincie=mysql_fetch_array($elenco)){
    $id=$row_provincie[id];
    $nome=$row_provincie[nome];
    echo
    '<option value="'.$id.'">'.$nome.'</option>';
    }
    ?>
    </select>
    <br>
    <br>
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>
    Ultima modifica di zomer : 06-07-2009 alle ore 22.16.16

  2. #2
    Guest

    Predefinito

    Come fai a prelevare due campi se ne selezioni solo uno
    Codice PHP:
    $strQuery="select provincia from provincie";
    dovresti sostituirlo con
    Codice PHP:
    $strQuery="select provincia, id_regione from provincie";
    Inoltre,
    Codice PHP:
    while($row_provincie=mysql_fetch_array($elenco)){
    $id=$row_provincie[id];
    $nome=$row_provincie[nome];
    echo
    '<option value="'.$id.'">'.$nome.'</option>';
    }
    ... dovresti sostituire con
    Codice PHP:
    while($row_provincie=mysql_fetch_array($elenco)){
    $id=$row_provincie['id_regione'];
    $nome=$row_provincie['provincia'];
    echo
    '<option value="'.$id.'">'.$nome.'</option>';
    }
    le colonne nome e id non esistono nella tabella

  3. #3
    Guest

    Predefinito

    Hai ragione, mi sono incasinato con questo script di registrazione, ma ora tutto funziona. Ti faccio sapere se si salva id_regione nella tabella utenti.

    EDIT

    Ho provato a registrarmi e dice

    Errore 003, contattare l'amministratore Unknown column 'residenza' in 'field list'
    il mio codice ora è:

    Codice PHP:
    <?php
    //richiede la conessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    $provincie = (isset($_POST['provincia'])) ? trim($_POST['provincia']) : ''; // Metto nella variabile 'residenza' il dato inviato dal modulo, se non viene inviato dò di default ''
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    $mail = addslashes($mail);
    $provincie = addslashes($residenza);
    }


    // Controllo il Nome Utente
    if(strlen($user) < 6 || strlen($user) > 12)
    die(
    'Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 6 || strlen($pass) > 12)
    die(
    'Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
    die(
    'Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
    die(
    'Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
    die(
    'Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {

    // Crypt della password per garantire una miglior sicurezza
    $pass = md5($pass);


    // Genero una stringa casuale di Attivazione
    $attivazione = '';
    for(
    $x=1; $x<=32; $x++)
    $attivazione.=rand(0,9);
    $attivazione = md5($attivazione);
    $subject = "Attivazione al sito";
    $message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="sito/attivazione.php?code='.$attivazione.'">Attiva account</a>';
    // Header dell'email, per madnarla in formato html
    $headers = "From: NomeSito <miamail>\r\n";
    $headers .= "Reply-To: miamail\r\n";
    $headers .= "Return-Path: miamail\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    // Invio L'email
    mail($mail, $subject, $message, $headers);

    // Query per l'inserimento dell'utente nel database
    $strSQL = "INSERT INTO utenti (user,pass,mail,residenza,attivazione)";
    $strSQL .= "VALUES('$user', '$pass', '$mail', '$provincia', '$attivazione')";
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());

    // Reindirizzo l'utente ad una pagina di conferma della registrazione
    header('Location: registrato.php');
    exit;
    }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <head>
    <title>Registrazione</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" />
    <br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" />
    <br />
    <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" />
    <br />
    <br>
    <select name="provincia">
    <?php
    $strQuery
    ="select provincia, id_regione from provincie";
    $elenco=mysql_query($strQuery) or die(mysql_error());
    while(
    $row_provincie=mysql_fetch_array($elenco)){
    $id=$row_provincie['id_regione'];
    $nome=$row_provincie['provincia'];
    echo
    '<option value="'.$id.'">'.$nome.'</option>';
    }
    ?>
    </select>
    <br>
    <br>
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>
    provate anche voi a registrarvi vi dovrebbe uscire la pagina "in costruzione"
    LINK
    Ultima modifica di zomer : 06-07-2009 alle ore 22.39.29

Regole di scrittura

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