Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Select collegate

  1. #1

    Select collegate

    ho due select riempite da db:
    Codice PHP:
    function selectSection() {
        global 
    $config;
        try {
            
    $result $config->getPdo()->query("SELECT * FROM sezioni");
            return 
    $result;
        } catch (
    Exception $e) {
            die(
    $e->getMessage());
        }
    }

    function 
    selectCategory($sec) {
        global 
    $config;
        try {
            
    $result $config->getPdo()->query("SELECT * FROM categorie WHERE sezione_FK=" $sec);
            return 
    $result;
        } catch (
    Exception $e) {
            die(
    $e->getMessage());
        }

    nella pagina richiamao queste due funzioni:
    Codice PHP:
                <tr>
                    <td>Sezione:</td>
                    <td>
                        <select name="sezione">
                            <option value="*">*</option>
                            <?php
                            
    foreach (selectSection () as $rowSection) {
                                echo 
    "<option value='" $rowSection['sezione_id'] . "'>" $rowSection['sezione_nome'] . "</option>";
                            }
                            
    ?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>Categoria:</td>
                    <td>
                        <select name="categoria" id="categoria">
                            <option value="*">*</option>
                            <?php
                            
    foreach (selectCategory($sec) as $rowCat) {
                                echo 
    "<option value='" $rowCat['sezione_id'] . "'>" $rowCat['sezione_nome'] . "</option>";
                            }
                            
    ?>
                        </select>
                    </td>
                </tr>
    io vorrei che la sconda select sia riempita in base al aprametro passato alla funzione.
    come faccio a passare il parametro alla funzione prendendolo dalla prima select??

  2. #2
    ho provato a fare una cosa del genere:
    Codice PHP:
    <?php
    if ($_SERVER['REQUEST_METHOD'] == "POST") {
        
    selectCategory();
    }
    ?>
                <form action="<?php $_SERVER['PHP_SELF']; ?>"  name="cat" method="post">
                    <tr>
                        <td>Sezione:</td>
                        <td>
                            <select name="sezione" onchange="document.forms['cat'].submit();">
                                <option value="*">*</option>
                                <?php
                                
    foreach (selectSection () as $rowSection) {
                                    echo 
    "<option value='" $rowSection['sezione_id'] . "'>" $rowSection['sezione_nome'] . "</option>";
                                }
                                
    ?>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>Categoria:</td>
                        <td>
                            <select name="categoria" id="categoria">
                                <option value="*">*</option>
                                <?php
                                
    foreach (selectCategory () as $rowCat) {
                                    echo 
    "<option value='" $rowCat['categoria_id'] . "'>" $rowCat['categoria_nome'] . "</option>";
                                }
                                
    ?>
                            </select>
                        </td>
                    </tr>
                </form>
    il metodo selectCategory:
    Codice PHP:
    function selectCategory() {
        global 
    $config;
        
    $sec $_POST['sezione'];
        try {
            
    $result $config->getPdo()->query("SELECT * FROM categorie WHERE sezione_FK=" $sec " ORDER BY categoria_nome");
            return 
    $result;
        } catch (
    Exception $e) {
            die(
    $e->getMessage());
        }

    ovviamente nn ha funzionato.
    nessuno ha qualche idea??

  3. #3

    Re: Select collegate

    Originariamente inviato da fermat
    io vorrei che la sconda select sia riempita in base al aprametro passato alla funzione.
    come faccio a passare il parametro alla funzione prendendolo dalla prima select??
    Non puoi farlo col solo PHP, devi usare Javascript.

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    Se non ti serve in tempo reale usa questo:

    codice:
    <?php 
    $_POST['sezione'] = (isset($_POST['sezione'])) ? $_POST['sezione'] : '';
    ?> 
                <form action="<?php $_SERVER['PHP_SELF']; ?>"  name="cat" method="post"> 
                    <tr> 
                        <td>Sezione:</td> 
                        <td> 
                            <select name="sezione" onchange="document.forms['cat'].submit();"> 
                                <option value="*">*</option> 
                                <?php 
                                foreach (selectSection () as $rowSection) { 
                                    echo "<option value='" . $rowSection['sezione_id'] . "'>" . $rowSection['sezione_nome'] . "</option>"; 
                                } 
                                ?> 
                            </select> 
                        </td> 
                    </tr> 
                    <tr> 
                        <td>Categoria:</td> 
                        <td> 
                            <select name="categoria" id="categoria"> 
                                <option value="*">*</option> 
                                <?php 
                                foreach (selectCategory ($_POST['sezione']) as $rowCat) { 
                                    echo "<option value='" . $rowCat['categoria_id'] . "'>" . $rowCat['categoria_nome'] . "</option>"; 
                                } 
                                ?> 
                            </select> 
                        </td> 
                    </tr> 
                </form>
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  5. #5
    eh si lo so.
    così ho ottenuto qualcosa:
    Codice PHP:
    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['azione']) == "changeSel") {
        selectCategory();
    }
    ....
    <script type="text/javascript">
        function changeSelect() {
            document.articoli.azione = 'changeSel';
            document.articoli.submit();
        }
    </script>
    <fieldset>
        <legend>Aggiungi articolo</legend>
        <table>
            <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="articoli">
                <tr>
                    <td>Titolo:</td>
                    <td><input type="text" name="titolo" value="" /></td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td>
                        <textarea id="testo_articolo" name="testo" rows="40" cols="80">
                        </textarea>
                        <script type="text/javascript">
                            CKEDITOR.replace(
                            'testo_articolo',
                            {
                                language : 'it'
                            }
                        );
                        </script>
                    </td>
                </tr>
                <tr>
                    <td>Sezione:</td>
                    <td>
                        <select name="sezione" onchange="changeSelect();">
                            <option value="*">*</option>
                            <?php
                            
    foreach (selectSection () as $rowSection) {
                                echo 
    "<option value='" $rowSection['sezione_id'] . "'>" $rowSection['sezione_nome'] . "</option>";
                            }
                            
    ?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>Categoria:</td>
                    <td>
                        <select name="categoria" id="categoria">
                            <option value="*">*</option>
                            <?php
                            
    foreach (selectCategory () as $rowCat) {
                                echo 
    "<option value='" $rowCat['categoria_id'] . "'>" $rowCat['categoria_nome'] . "</option>";
                            }
                            
    ?>
                        </select>
                    </td>
                </tr>
    .........
    adesso la seconda select è popolata ma ad ogni submit mi ricarica la prima select e riprende il primo valore.

  6. #6
    Originariamente inviato da gasmor
    Se non ti serve in tempo reale usa questo:

    codice:
    <?php 
    $_POST['sezione'] = (isset($_POST['sezione'])) ? $_POST['sezione'] : '';
    ?> 
                <form action="<?php $_SERVER['PHP_SELF']; ?>"  name="cat" method="post"> 
                    <tr> 
                        <td>Sezione:</td> 
                        <td> 
                            <select name="sezione" onchange="document.forms['cat'].submit();"> 
                                <option value="*">*</option> 
                                <?php 
                                foreach (selectSection () as $rowSection) { 
                                    echo "<option value='" . $rowSection['sezione_id'] . "'>" . $rowSection['sezione_nome'] . "</option>"; 
                                } 
                                ?> 
                            </select> 
                        </td> 
                    </tr> 
                    <tr> 
                        <td>Categoria:</td> 
                        <td> 
                            <select name="categoria" id="categoria"> 
                                <option value="*">*</option> 
                                <?php 
                                foreach (selectCategory ($_POST['sezione']) as $rowCat) { 
                                    echo "<option value='" . $rowCat['categoria_id'] . "'>" . $rowCat['categoria_nome'] . "</option>"; 
                                } 
                                ?> 
                            </select> 
                        </td> 
                    </tr> 
                </form>
    grazie ma purtroppo mi serve in tempo reale.
    uno sceglie la sezione e la select sotto si riempie con le relative categorie.

    come ho detto sopra quello che scritto funzionerebbe ma mi ricarica ogni volta la pagina e di conseguenza la prima select.

  7. #7

  8. #8
    risolto così.
    ajax:
    codice:
            <script type="text/javascript">
                function changeSelect(str) {
                    if (str == "") {
                        document.getElementById("categoria").innerHTML = "<option value='*'>*</option>";
                        return;
                    }
                    if (window.XMLHttpRequest) {
                        xmlhttp=new XMLHttpRequest();
                    } else {
                        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    xmlhttp.onreadystatechange = function() {
                        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                            document.getElementById("categoria").innerHTML = "<option value='*'>*</option>";
                            document.getElementById("categoria").innerHTML = xmlhttp.responseText;
                        }
                    }
                    xmlhttp.open("GET","home.php?sid=" + str, true);
                    xmlhttp.send();
                }
            </script>
    select:
    Codice PHP:
                <tr>
                    <td>Sezione:</td>
                    <td>
                        <select name="sezione" onchange="changeSelect(this.value);" id="sezione">
                            <option value="*">*</option>
                            <?php
                            
    foreach (selectSection () as $rowSection) {
                                echo 
    "<option value='" $rowSection['sezione_id'] . "'>" $rowSection['sezione_nome'] . "</option>";
                            }
                            
    ?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>Categoria:</td>
                    <td>
                        <select name="categoria" id="categoria">
                        </select>
                    </td>
                </tr>
    richiamo query:
    Codice PHP:
    if (isset($_GET['sid'])) {
        
    $sid $_GET['sid'];
        
    $result $config->getPdo()->query("SELECT * FROM categorie WHERE sezione_FK=" $sid " ORDER BY categoria_nome");
        foreach (
    $result as $rowCat) {
            echo 
    "<option value='" $rowCat['categoria_id'] . "'>" $rowCat['categoria_nome'] . "</option>";
        }

    ho solo un problema: nn mi aggiunge l'asterisco come valore iniziale.
    sapete come fare??

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.