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

    PHP - Concatenazione campi select

    Salve a tutti,

    sto impazzendo per realizzare su un form la concatenazione di due campi select.

    Entrando nel concreto, ho il campo select dove posso scegliere la provincia d'italia e il secondo campo select dove dovrei scegliere il comune in base alla regione che ho scelto prima.

    Problema: Dopo aver scelto la provincia, come faccio a far comparire nel campo comune solo i comuni della provincia che ho scelto.

    Ho due tabelle mysql dove nella prima ho le province per regione d'italia e nella seconda i comuni per sigla provincia.

    Ho letto di ajax e ho anche scaricato un esempio che faceva proprio per il problema che ho posto, solo che non conosco bene ajax ne javascript e quindi non sono riuscito a adattarlo al mio codice, qualcuno di voi sa indicarmi come fare o suggerirmi un sito anche in inglese dove mi spiega passo passo quello che dovrei fare?

    Grazie in anticipo.

  2. #2

    Re: PHP - Concatenazione campi select

    Originariamente inviato da massimiliano76
    Salve a tutti,

    sto impazzendo per realizzare su un form la concatenazione di due campi select.

    Entrando nel concreto, ho il campo select dove posso scegliere la provincia d'italia e il secondo campo select dove dovrei scegliere il comune in base alla regione che ho scelto prima.

    Problema: Dopo aver scelto la provincia, come faccio a far comparire nel campo comune solo i comuni della provincia che ho scelto.

    Ho due tabelle mysql dove nella prima ho le province per regione d'italia e nella seconda i comuni per sigla provincia.

    Ho letto di ajax e ho anche scaricato un esempio che faceva proprio per il problema che ho posto, solo che non conosco bene ajax ne javascript e quindi non sono riuscito a adattarlo al mio codice, qualcuno di voi sa indicarmi come fare o suggerirmi un sito anche in inglese dove mi spiega passo passo quello che dovrei fare?

    Grazie in anticipo.

  3. #3
    Nessuno che sappia?

  4. #4
    Ciao,

    gentilmente, EVITIAMO i CONTINUI, ed inutli, UP. Se qualcuno ti potrà aiutare e soprattutto se ne avrà voglia lo farà.

    Inoltre, quello che chiedi, è molto più javascript che php, dato che php si deve limitare a restituire i dati richiesti, per come fai già con le province ed il tuo problema sta nell'acquisire i dati tramite ajax e popolare poi la select.

    Ti sposto li dove sicuramente troverai maggiore aiuto, ma evita continui UP gentilmente!
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Leggi qui
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    scusa sarò stupido ma secondo me c'è del codice inutile in quell'esempio e inoltre per come ho strutturato l'applicazione mi risulta difficile adattarlo.

    Quello che vorrei sapere è se tramite ajax posso tramite l'onchange della prima select passare il valore selezionato alla stessa pagina della select e se si come.

    Sto leggendo milioni di esempi e una marea di codice, c'è chi usa gli array, c'è chi usa routine di connessione al db senza dare un minimo di struttura al codice, so che sono un po' pretenzioso ma vorrei fare una cosa un po' pulita e così mi risulta difficile, lo so che dovrei studiarmi javascript ma non ho tempo in questo momento e quello che sto cercando mi serve abbastanza urgentemente.



    Quello che sto cercando è:


    codice htm con innesti php

    codice javascript/ajax

    e routine di connessione al database e selezione.


    Non so se mi sono spiegato.

    Grazie in anticipo.

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Io non so cosa hai letto, ne tanto meno cosa vuoi fare esattamente, l'esempio era indicativo non specifico, forse l'operazione più pulita è usare jquery.com
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Allora ritorno alla carica:


    ricapitolando la situazione:

    ho un form con due campi select

    il primo è provincia che viene popolato tramite query al db

    il secondo è comune che dovrebbe essere popolato a seconda della scelta che si fa in provincia.

    Ho utilizzato ajax e javascript prendendo e riadattando un esempio preso da un posto su questo forum.

    Posto il codice

    il campo della form che gestisce l'onchange è:

    <td valign="bottom" width="30px" colspan="2">
    <select id="provincia" onchange="loading()" name="provincia" size="1" style="border: 1px solid #0452a5;" >
    <option value="Seleziona" selected> Seleziona</option>
    <?php
    $provincia = new province();
    while ($result->hasNext()){
    $provincia = $result->next();
    ?>
    <option value="<?php echo $provincia->sigla_provincia; /*.';'. $provincia->desc_provincia*/?>">
    <?php echo $provincia->desc_provincia?>

    </option>

    <?php } ?>
    </select>
    </td>


    dove loading() è una funzione javascript che ho incluso nella pagina tra le head dell'html

    ed il testo è:


    var http = createRequestObject();

    function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if (browser == "Microsoft Internet Explorer") {
    ro = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
    ro = new XMLHttpRequest();
    }
    return ro;
    }

    function loading() {
    var id = document.getElementById('provincia').value;
    http.open("GET", "../../ADMIN-APP-CO/selectComune.php?sigla=" + id, true);
    http.onreadystatechange = getComune;
    http.setRequestHeader("connection", "close");
    alert('lo stato vale http.readyState: ' +http.readyState);
    http.send(null);
    }

    function getComune() {
    var newOption;
    var where = (navigator.appName == "Microsoft Internet Explorer") ? -1
    : null;
    var Comune = document.getElementById('comune');
    while (Comune.options.length) {
    Comune.remove(0);
    }
    id = document.getElementById('provincia').value;

    if (id == 'Seleziona') {
    document.getElementById('comune').disabled = true;
    newOption = document.createElement("option");
    newOption.value = 'Seleziona';
    newOption.text = 'Seleziona';
    Comune.add(newOption, where);
    } else {
    if (http.readyState == 4) {
    if (http.status == 200) {
    var response = http.responseText;
    if (response == '') {
    document.getElementById('comune').disabled = true;
    newOption = document.createElement("option");
    newOption.value = 'Seleziona';
    newOption.text = 'Seleziona';
    State.add(newOption, where);
    } else {
    coppia = response.split(',');
    max = coppia.length;
    newOption = document.createElement("option");
    newOption.value = 'Seleziona';
    newOption.text = 'Seleziona';
    Comune.add(newOption, where);
    for (x = 0; x < max; x++) {
    val = coppia[x].split('-');
    newOption = document.createElement("option");
    newOption.value = val[1];
    newOption.text = val[1];
    Comune.add(newOption, where);
    }
    document.getElementById('comune').disabled = false;
    }
    }
    }
    }
    }


    e la pagina di selectComune.php che dovrebbe farmi la query per restituirmi il risultato dei comuni è:



    <?php

    require_once 'C:/xampp/htdocs/ADMIN-APP/ADMIN-APP-CO/business/ComuniLogic.php';
    require_once 'C:/xampp/htdocs/ADMIN-APP/ADMIN-APP-CO/models/comuni.php';

    $sigla=$_GET["sigla"];

    $logic= new ComuniLogic();
    $comune = new comuni();

    $comune->sigla_provincia=$sigla;
    $result = $logic->getComuni($comune);
    $ncomune = new comuni();
    $arrComuni[] = '';
    $i=1;
    while($result->hasNext()){
    $ncomune = $result->next();
    $arrComuni[]=array('com_id'=>$i,'com_name'=>$ncomune->nome_comune);
    }

    echo $arrComuni;


    ?>


    Il problema è che non riesco a recuperare la sigla della provincia passata dallo javascript facendo la $_GET in questo modo nel selectComune.php viene effettuata (so che passa di lì) la query con una "where sigla_provincia =" senza avere il valore della provincia.


    Mi potete aiutare indicandomi dove sbaglio?

    Grazie mille.

  9. #9
    Devi mettere un evento onChange nella prima select.
    Quando selezioni il valore la onChange dovrà lanciare uno script AJAX che a sua volta richiama un file php che svolge la query che ti interessa e inserisce i risultai nella seconda select.

    <select name='provincia' id='provincia' onChange='cercaComune()'>
    </select>
    ....
    <select name='comune' id='comune'>
    </select>

    lo script ajax potrebbe essere qualcosa di questo tipo:
    var xmlhttp;
    function cercaComune(){
    xmlhttp=GetXmlHttpObject();
    p= document.getElementById('provincia').value;

    if (xmlhttp==null){
    alert ("Browser does not support HTTP Request");
    return;
    }
    var url="associaComuneProvincia.php";
    url=url+"?p="+p;
    url=url+"&sid="+Math.random();
    xmlhttp.onreadystatechange=dataChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }

    function dataChanged(){
    if(xmlhttp.readyState == 4) {
    if (xmlhttp.status == 200) {
    var resp = xmlhttp.responseText;

    if(resp) {
    var values = resp.split(';');
    var select = document.getElementById('IBAN');
    while (select.options.length) {
    select.remove(0);
    }
    var limit = values.length;

    for(i=0; i < limit; i++) {
    var pair = values[i].split(';');
    addOption(select, pair[0], pair[0]);
    }
    }
    } else {
    alert(xmlhttp.responseText);
    }
    }
    }

    function addOption(select, value, text) {
    var option = document.createElement("option");
    option.value = value,
    option.text = text;
    try {
    select.add(option, null);
    } catch(e) {
    select.add(option);
    }
    }

    function GetXmlHttpObject(){
    if (window.XMLHttpRequest){
    return new XMLHttpRequest();
    }
    if (window.ActiveXObject){
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
    }

    function createXmlHttpRequest(){
    var xmlhttp = null;
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = stateChanged;
    return xmlhttp;
    }


    mentre il file php potrebbe essere semplicemente
    $p=$_GET['p']
    $query = "SELECT DISTINCT(Comune) FROM nome_tabella WHERE Provincia='P'";
    $res = mysql_query($query);
    while($r_c = mysql_fetch_array($res))
    $ret .=$r_c['Provincia'].",";

    if(strlen($ret) > 0){
    $ret = substr($ret, 0, strlen($ret) - 1);
    }
    echo rtrim($ret,',');

    mysql_close($connessione);


    Cosi dovrebbe funzionarti...

  10. #10
    perdonami l'onchange c'è, l'ho anche postato, potresti dirmi dov'è l'errore nel codice che ho postato?

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.