Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    Listbox Collegati : [Php + Javascript] ?

    Premessa: Non so se è una discussione più da forum PHO o da forum JAVASCRIPT. (Scusate se ho sbagliato )

    Ho bisogno di un paio di Listbox che siano collegati tra loro. Sarebbero i soliti listbox che selezionando un paese del mondo si aggiorna l'altro listbox permettendo la scelta delle regioni del paese selezionato.

    Fin qui tutto ok con pezzi javascript scaricati proprio da javascript.html.it .

    Il mio problema è che entrambi i campi PAESE e REGIONE devono essere pescati da database MYSQL perchè in futuro possano essere modificati, cancellati, implementati, ecc...

    Ho pensato di poter "dinamicizzare" lo script facendo compilare gli ARRAY con dei FOR in php corredati da recordset. Così gli array javascript sarebbero compilati al primo caricamente e possono agire indisturbati.

    A parte la difficoltà nello scrivere questo codice avete altre idee + diffuse?
    Questa ha il "punto debole" di basarsi sui VALUE= NOME PAESE x fare la selezione lato client, mentre preferirei lavorare su ID numerici pescati da DB.

    Sicuramente esiste qualcosa di più professionale e utilizzato (non so se AJAX potrebbe dare una mano.. non vorrei scrivere assurdità :rollo: ).

    Ps= non mi scrivete soluzioni basate sul POST di tutta la form perchè è una possibilità scartata in partenza. Mi serve un aggiornamento lato client sulle listbox.

    Grazie in anticipo!

  2. #2
    allora
    funzione provincia ( prende l'id della provincia selezionato dal select)
    Codice PHP:
    function province($prov){
    if(
    $prov=="" OR  $prov==0){
    $sql "SELECT * FROM province";
    }else{
    $sql "SELECT * FROM province WHERE ID = '{$prov}'";
    }
    $query mysql_query($sql) or die("Errore Province: ".mysql_error());
    while(
    $row mysql_fetch_array($query)){
    echo 
    "<option value=".$row['ID'].">".$row['PROVINCIA']."</option>";
    }

    questo è il js che aggiorna in automatico il secondo select

    codice:
    var req;
    function loadXMLDoc(key) {
       var url="inc/comuni.php?country="+key;
       getObject("zona").innerHTML = 'Attendere Prego...';
       try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
       catch(e) {
          try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
          catch(oc) { req = null; }
       }
       if (!req && typeof XMLHttpRequest != "undefined") { req = new 
    XMLHttpRequest(); }
       if (req != null) {
          req.onreadystatechange = processChange;
          req.open("GET", url, true);
          req.send(null);
       }
    }
    function processChange() {
       if (req.readyState == 4 && req.status == 200) {
          getObject("zona").innerHTML = req.responseText;
          document.res_request.state.focus();
       }
    }
    
    function getObject(name) {
       var ns4 = (document.layers) ? true : false;
       var w3c = (document.getElementById) ? true : false;
       var ie4 = (document.all) ? true : false;
    
       if (ns4) return eval('document.' + name);
       if (w3c) return document.getElementById(name);
       if (ie4) return eval('document.all.' + name);
       return false;
    }
    questo invece è i comuni sql per stamapre i comuni della provincia selezionata
    Codice PHP:
    <?php
    if(!isset($_GET['country'])){ echo "<select><option>Selezionare Provincia</option></select>";}
         else{ 
    $sql "SELECT * FROM comuni WHERE ID_PROVINCIA = {$_GET['country']}";
    $query mysql_query($sql) or die("Errore Province: ".mysql_error());
    echo 
    "<select name=\"comuni\">";
    while(
    $row mysql_fetch_array($query)){
    echo 
    "<option value=".$row['ID'].">".$row['COMUNE']."</option>";
    }
    echo 
    "</select>";
    }
    ?>
    quest ultima pagina viene inclusa nel js alla terza riga
    codice:
    inc/comuni.php?country="+key;
    poi modificala a tue impostazioni

  3. #3

  4. #4
    Sto provando il codice ma non mi è molto chiaro come disporlo. Posso chiederti un paio di file già pronti in cui devo modificare i dati del database? Una volta capito il funzionamento poi li adatterò al mio sito.

    grazie

  5. #5
    ti posterò al più presto un link dove scaricare

  6. #6

  7. #7
    Mi accodo anche io per i files.

  8. #8

  9. #9
    Siccome non ho tantissimo tempo per realizzare il form non è che qualcun'altro ha qualche idea alternativa e un po' meno complicata?

    Grazie

  10. #10
    nn ho avuto tempo cmq fai così

    form.php
    Codice PHP:

    <script type="text/javascript">
    var req;
    function loadXMLDoc(key) {
       var url="comuni.php?country="+key;
       getObject("zona").innerHTML = 'Attendere Prego...';
       try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
       catch(e) {
          try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
          catch(oc) { req = null; }
       }
       if (!req && typeof XMLHttpRequest != "undefined") { req = new 
    XMLHttpRequest(); }
       if (req != null) {
          req.onreadystatechange = processChange;
          req.open("GET", url, true);
          req.send(null);
       }
    }
    function processChange() {
       if (req.readyState == 4 && req.status == 200) {
          getObject("zona").innerHTML = req.responseText;
          document.res_request.state.focus();
       }
    }

    function getObject(name) {
       var ns4 = (document.layers) ? true : false;
       var w3c = (document.getElementById) ? true : false;
       var ie4 = (document.all) ? true : false;

       if (ns4) return eval('document.' + name);
       if (w3c) return document.getElementById(name);
       if (ie4) return eval('document.all.' + name);
       return false;
    }</script>

    <?php
    function comuni($id_provincia){
    $sql "SELECT * FROM comuni WHERE ID_PROVINCIA = {$id_provincia}";
    $query mysql_query($sql) or die("Errore Province: ".mysql_error());
    while(
    $row mysql_fetch_array($query)){
    echo 
    "<option value=".$row['ID'].">".$row['COMUNE']."</option>";
    }
    }
    ?>
    <form action="" method="post">
    <table>
            <tr>
          <td>Provincia:</td>
          <td><select  name="provincia" onchange="loadXMLDoc(this.value);"><option value="0">Province</option><?php province($_POST['provincia']);?></select></td>
        </tr>
            <tr>
          <td >Comune:</td>
          <td ><div id="zona"><select name="comune"><option>Selezionare Provincia</option></select></div></td>
        </tr>
    </table>
    </form>
    dopo creato questa pagina ne crei un'altra chiamata comuni.php

    comuni.php
    Codice PHP:
    <?
    if(!isset($_GET['country'])){ echo "<select><option>Selezionare Provincia</option></select>";}
         else{ 
    $sql "SELECT * FROM comuni WHERE ID_PROVINCIA = {$_GET['country']}";
    $query mysql_query($sql) or die("Errore Province: ".mysql_error());
    echo 
    "<select name=\"comuni\">";
    while(
    $row mysql_fetch_array($query)){
    echo 
    "<option value=".$row['ID'].">".$row['COMUNE']."</option>";
    }
    echo 
    "</select>";
    }
    ?>
    e il gioco e fatto...come puoi vedere preleva le info dal db se ti serve sql dimmelo ok..cmq nn è complicata anzi e semplicissimo da capire

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