• User

    Tag select e database

    Ciao a tutti, avrei bisogno del vostro aiuto:
    in una pagina ho un tag select che popolo con i cognomi ottenuti dalla tabella 'elenco_soci'.
    Dalla lista vorrei ottenere, sulla base della scelta effettuata, nella stessa pagina, direttamente sotto il tag select, alcunii campi reletivi al cognome scelto nella select.
    Ho provato in vari modi e mi sono accorto che non riesco ad assegnare ad una variabile il cognome scelto nel tag select.
    Come posso ovviare?
    Grazie


  • Consiglio Direttivo

    Ciao francodance. 🙂

    Recuperato il valore della select ti basta eseguire una query sulla tabella impostando come WHERE cognome='$cognome'
    Ti consiglio pero' di utilizzare gli id, se nella tabella hai più persone con lo stesso cognome come potrai immaginare ti usciranno i dati di tutte queste coincidenze. 😉


  • User

    Grazie per la risposta Samyon, ma come faccio a recuperare il valore della select senza inviare action in un'altra pagina?
    ho questo form:
    <code>
    <form method="POST" action="cerca_socio.php">
    Scegliere un cognome dalla lista:
    <select id="s_cognome" name="s_cognome">
    <?php
    include "./inc/config.php";
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die('Errore nella connessione. Verificare i parametri nel file
    config.php');
    mysql_select_db($db_name, $db)
    or die('Errore nella selezione del database. Verificare i parametri
    nel file config.php');
    // costruzione query
    $query="SELECT * FROM elenco_soci ORDER BY cognome";
    $risultato=mysql_query($query,$db);
    while($riga = mysql_fetch_array($risultato)){
    $s_cognome=$riga['cognome'];
    echo "<option value = $s_cognome > s_cognome";
    }
    ?>
    </select>
    <input type="submit" value="Invia" />
    </form>
    </code>
    e funziona normalmente nella pagina cerca_socio.php.

    Se, invece voglio ottenere il risultato direttamente sotto la select, nella stessa pagina, come devo fare?


  • Consiglio Direttivo

    Puoi utilizzare la stessa pagina, ma dovrai ricaricarla se vuoi usare PHP.

    Recuperi s_cognome con $cognome=$_POST['s_cognome']; e dopo la select se $cognome è valorizzato fai la query per visualizzarti gli altri dati 😉


  • User

    Ma per fare questo nel form action devo mettere i doppi apici vuoti? Oppure devo mettere il nome della pagina stessa, in questo caso 'visualizza_socio.php'?
    Grazie.


  • Consiglio Direttivo

    Il nome della stessa pagina. 😉


  • User

    [php]<br><br>
    <div id="visualizza_socio" align="center">
    VISUALIZZA SOCIO
    <br><br>
    <form method="POST" action="visualizza_socio.php">
    Scegliere un cognome dalla lista:
    <select id="s_cognome" name="s_cognome">
    <?php
    include "./inc/config.php";
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die('Errore nella connessione. Verificare i parametri nel file
    config.php');
    mysql_select_db($db_name, $db)
    or die('Errore nella selezione del database. Verificare i parametri
    nel file config.php');
    // costruzione query
    $query="SELECT * FROM elenco_soci ORDER BY cognome";
    $risultato=mysql_query($query,$db);
    while($riga = mysql_fetch_array($risultato)){
    $s_cognome=$riga['cognome'];
    echo "<option value = $s_cognome > $s_cognome";
    }
    ?>
    </select>
    <input name="submit" type="submit" value="Invio">
    </form>
    </div>

    <?php
    if($_POST["s_cognome"]){
    include "./inc/config.php";
    $cognome=$_POST['s_cognome'];

    // connessione al database
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die("Errore nella connessione. Verificare i parametri nel file
    ./inc/config.php");    
    
    // seleziona database
    mysql_select_db($db_name, $db)
    or die("Errore nella selezione del database. Verificare i parametri
    nel file ./inc/config.php");
    
    // costruzione query
    $query="SELECT * FROM elenco_soci WHERE cognome = '$cognome'";
    
    // risultato query
    $risultato=mysql_query($query,$db);
    
    echo "<div id='cerca_socio'>
        <table width='60%' align='center'>
        <tr><th colspan='7' align='left'>Dati Anagrafici</th></tr>
        <tr>
            <th align='left'>id</th>
            <th align='left'>Data Iscrizione</th>
            <th align='left'>Data Nascita</th>
            <th align='left'>Cognome</th>
            <th align='left'>Nome</th>
            <th align='left'>Tel. Abitazione</th>
            <th align='left'>Tel. Cellulare</th>
        </tr>
        ";
    // Riga contenente i dati
    while($riga = mysql_fetch_array($risultato)){
        $id=$riga['id_socio'];
        $data_iscrizione=date('d/m/Y', $riga['data_iscrizione']);
        $data_nascita=date('d/m/Y', $riga['data_nascita']);
        echo "
        <tr>
            <td>$riga[id_socio]</td>
            <td>$data_iscrizione</td>
            <td>$data_nascita</td>
            <td>$riga[cognome]</td>
            <td>$riga[nome]</td>
            <td>$riga[telefono_abitazione]</td>
            <td>$riga[telefono_cellulare]</td>
        </tr>
        </table>
        ";
        }
        
        // connessione al database
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die("Errore nella connessione. Verificare i parametri nel file
    ./inc/config.php");    
    
    // seleziona database
    mysql_select_db($db_name, $db)
    or die("Errore nella selezione del database. Verificare i parametri
    nel file ./inc/config.php");
    
    // costruzione query
    $query="SELECT * FROM pagamenti WHERE id_socio = '$id' ORDER BY data DESC";
    
    // risultato query
    $risultato=mysql_query($query,$db);
    
    echo "<br><br>
        <table width='60%' align='center'>
        <tr><th colspan='5' align='left'>Pagamenti</th></tr>
        <tr>
            <th align='left'>id</th>
            <th align='left'>Data Versamento</th>
            <th align='left'>Causale</th>
            <th align='left'>Descrizione</th>
            <th align='left'>Importo</th>
        </tr>
        ";
    // Riga contenente i dati
    $totale=0;
    while($riga = mysql_fetch_array($risultato)){
        $id_socio=$riga['id_socio'];
        $importo=$riga['importo'];
        $totale=$totale+$importo;    
        echo "
        <tr>
            <td>$riga[id_socio]</td>
            <td>$riga[data]</td>
            <td>$riga[causale]</td>
            <td>$riga[descrizione]</td>
            <td>&euro; $riga[importo]</td>
        </tr>
        ";
        }
    echo"
    <tr><td>&nbsp;</td></tr>
    <tr><td>&nbsp;</td></tr>
    <tr>
        <td colspan='5'><b>Totale Versato: &euro; ".$totale.",00</b></td>
    </tr>
    </table><br></div>";
    mysql_close($db);
    

    }
    ?>[/php]

    Mi potresti dire cosa sbaglio?


  • User

    Se metto la stesso nome in action mi apre una nuova pagina, se metto i doppi apici torna all'index, ma credo che prima faccia qualcos'altro, solo che è così rapido che non riesco a vedere cosa fa prima di andare all'index.


  • Consiglio Direttivo

    Prova così:
    [php]<br><br>
    <div id="visualizza_socio" align="center">
    VISUALIZZA SOCIO
    <br><br>
    <form method="POST" action="visualizza_socio.php">
    Scegliere un cognome dalla lista:
    <select id="s_cognome" name="s_cognome">
    <?php
    require_once "./inc/config.php";
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die('Errore nella connessione. Verificare i parametri nel file
    config.php');
    mysql_select_db($db_name, $db)
    or die('Errore nella selezione del database. Verificare i parametri
    nel file config.php');
    // costruzione query
    $query="SELECT * FROM elenco_soci ORDER BY cognome";
    $risultato=mysql_query($query,$db);
    while($riga = mysql_fetch_array($risultato)){
    $s_cognome=$riga['cognome'];
    echo "<option value = $s_cognome > $s_cognome </option>"; // mancava il tag di chiusura
    }
    ?>
    </select>
    <input name="submit" type="submit" value="Invio">
    </form>
    </div>

    <?php
    if($_POST["s_cognome"]){
    require_once "./inc/config.php";
    $cognome=$_POST['s_cognome'];

    // connessione al database
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die("Errore nella connessione. Verificare i parametri nel file
    ./inc/config.php");

    // seleziona database
    mysql_select_db($db_name, $db)
    or die("Errore nella selezione del database. Verificare i parametri
    nel file ./inc/config.php");

    // costruzione query
    $query="SELECT * FROM elenco_soci WHERE cognome = '$cognome'";

    // risultato query
    $risultato=mysql_query($query,$db);

    echo "<div id='cerca_socio'>
    <table width='60%' align='center'>
    <tr><th colspan='7' align='left'>Dati Anagrafici</th></tr>
    <tr>
    <th align='left'>id</th>
    <th align='left'>Data Iscrizione</th>
    <th align='left'>Data Nascita</th>
    <th align='left'>Cognome</th>
    <th align='left'>Nome</th>
    <th align='left'>Tel. Abitazione</th>
    <th align='left'>Tel. Cellulare</th>
    </tr>
    ";
    // Riga contenente i dati
    while($riga = mysql_fetch_array($risultato)){
    $id=$riga['id_socio'];
    $data_iscrizione=date('d/m/Y', $riga['data_iscrizione']);
    $data_nascita=date('d/m/Y', $riga['data_nascita']);
    echo "
    <tr>
    <td>".$riga['id_socio']."</td>
    <td>".$data_iscrizione."</td>
    <td>".$data_nascita."</td>
    <td>".$riga['cognome']."</td>
    <td>".$riga['nome']."</td>
    <td>".$riga['telefono_abitazione']."</td>
    <td>".$riga['telefono_cellulare']."</td>
    </tr>
    </table>
    ";
    }

    // connessione al database
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die("Errore nella connessione. Verificare i parametri nel file
    ./inc/config.php");

    // seleziona database
    mysql_select_db($db_name, $db)
    or die("Errore nella selezione del database. Verificare i parametri
    nel file ./inc/config.php");

    // costruzione query
    $query="SELECT * FROM pagamenti WHERE id_socio = '$id' ORDER BY data DESC";

    // risultato query
    $risultato=mysql_query($query,$db);

    echo "<br><br>
    <table width='60%' align='center'>
    <tr><th colspan='5' align='left'>Pagamenti</th></tr>
    <tr>
    <th align='left'>id</th>
    <th align='left'>Data Versamento</th>
    <th align='left'>Causale</th>
    <th align='left'>Descrizione</th>
    <th align='left'>Importo</th>
    </tr>
    ";
    // Riga contenente i dati
    $totale=0;
    while($riga = mysql_fetch_array($risultato)){
    $id_socio=$riga['id_socio'];
    $importo=$riga['importo'];
    $totale=$totale+$importo;
    echo "
    <tr>
    <td>".$riga['id_socio']."</td>
    <td>".$riga['data']."</td>
    <td>".$riga['causale']."</td>
    <td>".$riga['descrizione']."</td>
    <td>€". $riga['importo']."</td>
    </tr>
    ";
    }
    echo"
    <tr><td> </td></tr>
    <tr><td> </td></tr>
    <tr>
    <td colspan='5'><b>Totale Versato: € ".$totale.",00</b></td>
    </tr>
    </table><br></div>";
    mysql_close($db);
    }
    ?>[/php]

    @francodace said:

    se metto la stesso nome in action mi apre una nuova pagina, se metto i doppi apici torna all'index, ma credo che prima faccia qualcosaltro, solo che è così rapido che non riesco a vedere cosa fa prima di andare all'index.
    Ma la pagina dove c'è questo script si chiama visualizza_socio.php?


  • User

    Ho fatto copia e incolla, mi fa lo stesso difetto:
    se lascio in action 'visualizza_socio.php' mi fa visualizzare regolarmente i dati, ma in una nuova pagina (che poi è la stessa);
    se invece nell'action metto i doppi apici va nella index.
    Prima di andare nella index ho l'mpressione che faccia qualcosa per un brevissimo tempo, si può fermare in qualche modo per vedere cosa fa?


  • User

    Si la pagina si chiama 'visualizza_socio.php'.


  • Consiglio Direttivo

    Perdonami che intendi con "ma in una nuova pagina (che poi è la stessa)" ?
    Dici per il fatto che ricarica la pagina?


  • User

    Scusami, intendo che mentre la pagina 'visualizza_socio.php' è visualizzata in un contesto di layout a tre colonne in posizione centrale quando clicco sul pulsante invio associato alla select mi si visualizza questa stessa pagina con i dati forniti, ma fuori da questo contesto.

    Fammi sapere se non mi sono spiegato bene.
    Grazie.


  • Consiglio Direttivo

    Ah, la pagina allora è richiamata dentro un'altra. 🙂

    Beh allora come action devi richiamare la pagina che include visualizza_socio.php. 😉


  • User

    No, la pagina è richiamata dentro il div centrale del layout:
    se vuoi provare ti do l'indirizzo del sito, ci sono dei dati fittizi che servono per le prove.


  • Consiglio Direttivo

    Si ho capito, ma la pagina principale con il layout a 3 colonne e questo div centrale che richiama visualizza_socio.php, come si chiama? 🙂


  • User

    la pagina principale si chiama 'index.php'.
    Dalla colonna di sx (div id 'col-sx'), attraverso un menù carico le pagine nel div centrale (div id 'col-contenuti') e nel div in oggetto carico 'visualizza socio.php'.
    Mi si visualizza la select già popolata dai cognomi, effettuo la scelta, clicco su invia e la stessa pagina mi viene visualizzata come se fosse una nuova pagina, fuori dal contesto, bianca, ma con i dati esatti.

    ciao e grazie ancora.


  • User

    Scusa, cerco di essere più chiaro:

    la pagina principale si chiama 'index.php' ed è divisa in 3 col + heder e footer.
    Dalla colonna di sx (div id 'col-sx'), attraverso un menù, scelgo le pagina da visualizzare che vengono caricate nel div centrale (div id 'col-contenuti').
    In questo caso, nel div in oggetto, carico la pagina 'visualizza socio.php' e vedo la select già popolata dai cognomi.
    Effettuo la scelta, clicco su invia e la stessa pagina 'visualizza.php' mi viene visualizzata fuori da questo contesto, come se fosse una nuova pagina, bianca, ma con i dati esatti, relativi alla scelta della select.

    Io invece vorrei che i dati mi comparissero sotto il tag select, ma nello stesso contesto.

    ciao e grazie ancora.


  • Consiglio Direttivo

    L'url allora è:
    vvv.domain.ext/index.php?qualchecosa=qualcos'altro

    :)?

    Oppure fai tutto tramite POST? 🙂

    EDIT: proviamo a tagliare la testa al toro. Come action metti <? echo $_SERVER['PHP_SELF']; ?>
    😉


  • User
    
    <br><br>
    <div id="visualizza_socio" align="center">
    VISUALIZZA SOCIO
    <br><br>
    <form method="POST" <? echo $_SERVER['PHP_SELF']; ?>>
    Scegliere un cognome dalla lista:
    <select id="s_cognome" name="s_cognome">
    <?php
    require_once "./inc/config.php";
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die('Errore nella connessione. Verificare i parametri nel file
    config.php');
    mysql_select_db($db_name, $db)
    or die('Errore nella selezione del database. Verificare i parametri
    nel file config.php');
    // costruzione query
    $query="SELECT * FROM `elenco_soci` ORDER BY `cognome`";
    $risultato=mysql_query($query,$db);
    while($riga = mysql_fetch_array($risultato)){
    $s_cognome=$riga['cognome'];
    echo "<option value = $s_cognome > $s_cognome </option>"; // mancava il tag di chiusura
    }
    ?>
    </select>
    <input name="submit" type="submit" value="Invio">
    </form>
    </div>
    
    <?php
    if($_POST["s_cognome"]){
    require_once "./inc/config.php";
    $cognome=$_POST['s_cognome'];
    
    // connessione al database
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die("Errore nella connessione. Verificare i parametri nel file
    ./inc/config.php");
    
    // seleziona database
    mysql_select_db($db_name, $db)
    or die("Errore nella selezione del database. Verificare i parametri
    nel file ./inc/config.php");
    
    // costruzione query
    $query="SELECT * FROM elenco_soci WHERE cognome = '$cognome'";
    
    // risultato query
    $risultato=mysql_query($query,$db);
    
    echo "<div id='cerca_socio'>
    <table width='60%' align='center'>
    <tr><th colspan='7' align='left'>Dati Anagrafici</th></tr>
    <tr>
    <th align='left'>id</th>
    <th align='left'>Data Iscrizione</th>
    <th align='left'>Data Nascita</th>
    <th align='left'>Cognome</th>
    <th align='left'>Nome</th>
    <th align='left'>Tel. Abitazione</th>
    <th align='left'>Tel. Cellulare</th>
    </tr>
    ";
    // Riga contenente i dati
    while($riga = mysql_fetch_array($risultato)){
    $id=$riga['id_socio'];
    $data_iscrizione=date('d/m/Y', $riga['data_iscrizione']);
    $data_nascita=date('d/m/Y', $riga['data_nascita']);
    echo "
    <tr>
    <td>".$riga['id_socio']."</td>
    <td>".$data_iscrizione."</td>
    <td>".$data_nascita."</td>
    <td>".$riga['cognome']."</td>
    <td>".$riga['nome']."</td>
    <td>".$riga['telefono_abitazione']."</td>
    <td>".$riga['telefono_cellulare']."</td>
    </tr>
    </table>
    ";
    }
    
    // connessione al database
    $db=mysql_connect($db_host,$db_user,$db_pass);
    if ($db==false)
    die("Errore nella connessione. Verificare i parametri nel file
    ./inc/config.php");
    
    // seleziona database
    mysql_select_db($db_name, $db)
    or die("Errore nella selezione del database. Verificare i parametri
    nel file ./inc/config.php");
    
    // costruzione query
    $query="SELECT * FROM pagamenti WHERE id_socio = '$id' ORDER BY data DESC";
    
    // risultato query
    $risultato=mysql_query($query,$db);
    
    echo "<br><br>
    <table width='60%' align='center'>
    <tr><th colspan='5' align='left'>Pagamenti</th></tr>
    <tr>
    <th align='left'>id</th>
    <th align='left'>Data Versamento</th>
    <th align='left'>Causale</th>
    <th align='left'>Descrizione</th>
    <th align='left'>Importo</th>
    </tr>
    ";
    // Riga contenente i dati
    $totale=0;
    while($riga = mysql_fetch_array($risultato)){
    $id_socio=$riga['id_socio'];
    $importo=$riga['importo'];
    $totale=$totale+$importo;
    echo "
    <tr>
    <td>".$riga['id_socio']."</td>
    <td>".$riga['data']."</td>
    <td>".$riga['causale']."</td>
    <td>".$riga['descrizione']."</td>
    <td>&euro;". $riga['importo']."</td>
    </tr>
    ";
    }
    echo"
    <tr><td>&nbsp;</td></tr>
    <tr><td>&nbsp;</td></tr>
    <tr>
    <td colspan='5'><b>Totale Versato: &euro; ".$totale.",00</b></td>
    </tr>
    </table><br></div>";
    mysql_close($db);
    }
    ?>
    
    

    non va

    mi si carica sempre a parte

    francodace.altervista.org
    se vuoi provare, fai l'iscrizione ed io ti do i privilegi per accedere alla pagina in esame.

    ciao