Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: elenco menu "dinamico"

  1. #1

    elenco menu "dinamico"

    ciao,
    scusate la stupidità della domanda ma non sono pratica con il php.
    nella mia pagina di inserimento dati in uno stesso form (php+mysql), tra gli altri campi, ho un menu NAZIONE, che va a pescare i valori dalla tabella NAZIONI.
    e fino a qua niente di strano. quello che non so fare, è far comparire nel menu REGIONI, la lista delle regioni, prese dalla tabella REGIONI, dinamicamente in base alla nazione selezionata.
    e poi non permettere di scegliere la regione fino a che non ho scelto la nazione.

    grazie

    lilli

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, tralasciando javascript/ajax quindi tutto in php e con ricaricamento pagina dopo selezione NAZIONE, e' abbastanza selezionare la nazione, sull'onchange della select(almeno questo con javascript) esegui il submit del form e passi il value della select alla pagina. Con questo fai una query per estrarre tutte le regioni che come campo nazione(o identificativo di quella) avranno quella selezionata. Torni quindi alla pagina con la nazione gia selezionata e la seconda select con tutte le regioni estratte.
    Volendo puoi non visualizzare la seconda select fino a che non e' stata selezionata la nazione.

    Calcola poi che se vengono compilati altri campi e poi viene selezionata la nazione, la pagina ricarica e perdi gli altri dati( fai quindi i vari controlli per recuperare tutti i dati gia inseriti)

  3. #3
    brutta questa cosa della ricarica dei dati quando inserisco la nazione.
    come si farebbe con ajax? è troppo complicato o puoi spiegarmelo?

    grazie!

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    guarda ci sono parecchie guide sull'utilizzo di ajax. E' cmq del codice come javascript e metodi specifici per un certo tipo di funzionamento. In pratica ti da la possibilta' di eseguire query o comunque un ricaricamento parziale (o altre funzionalita' ) su una sola o piu' parti della pagina interessate senza ricaricare il tutto.

    questo e' lo script javascritp/ajax che esegue appunto la chiamata asincrona:

    Codice PHP:
    function ahah(url,target,delayfunction_extrapost){    

        
        var 
    type "GET";
        if(
    window.XMLHttpRequest){
              var 
    req=new XMLHttpRequest();
        }else if(
    window.ActiveXObject){
              var 
    req=new ActiveXObject("Microsoft.XMLHTTP");
        }
        if(
    req!=undefined){
            if(
    post)
                
    type "POST";
            
    req.open(type,url,true);
            if(
    post){
                
    req.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
            }
            
            
    req.onreadystatechange=function(){
                if(
    req.readyState!=4){
                    
                }else{                                                                
                    
    ahahDone(requrl,target,delayfunction_extra);
                }
            };
            
            
    req.send(post);
        }
    }

    function 
    ahahDone(requrl,target,delayfunction_extra){
        
        
        
        if(
    req.readyState==4)
        {
            
            
            if(
    req.status==200)
            {
                if(
    target)
                {
                    
    document.getElementById(target).innerHTML='';
                    
    document.getElementById(target).innerHTML=req.responseText;                                                
                }    
                
                if (
    function_extra){ 
                                                 
                    
    setTimeout(function_extra100);
                    
                }
            }
        }

    Supponendo che nella tua pagina hai un <div> che contiene le select interessate, con onchange al posto di eseguire il submit del form, richiami ahah() passando come parametri (se in get) solo la url effettiva che esegue la ricerca e creazione delle select, e come secondo parametro l'id del div da ricaricare.

    In questo modo viene eliminato innerHTML del div richiamato e rigenerato con quello crato nella pagina richiamata.

    Es.: Il div interessato contiene "testo di prova", richiami ahah('cerca.php', 'idDiv'), a questo punto cerca.php esegue un echo 'new text'; Se tutto corretto vedrai senza alcun ricaricamento il nuovo testo nel div interessato.

    PS se non l'hai mai usato sembrera' un casino ma e' piuttosto semlplice.. chiedi pure.

  5. #5
    ok. ci guardo.
    GRAZIE MILLE

  6. #6
    ciao,
    avevo lasciato perdere la cosa e ora l'ho ripresa in mano.
    funziona tutto ma ho ancora qualche dubbio su quello che hai scritto.

    a che serve tutta la parte del POST nel caso req!=undefined

    che cos'è il post che passo qui req.send(post);

    a che serve function_extra e delay?

    grazie mille ancora

  7. #7

  8. #8
    sì grazie, avevo già visto la pillola.
    però vorrei implementarlo con ajax...

    così com'è funziona bene, volevo solo chiarire i miei dubbi.

  9. #9
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, if(req!=undefined){.... qui controlla semplicemente se e' stata creata l istanza diciamo per eseguire il tutto.


    Il parametro post che viene passato in pratica determina se la richiesta in ajax sara' equivalente ad una GET o POST.

    ahah('http://sito.it/index.php...', 'id_del_Tag') senza passare altro esegue come fosse una get.

    var urlScript = 'http://sito.it/index.php';
    var urlPost = 'fase=insert&stringa='+String;
    ahah(urlScript, 'div_del_tag', null, 'nomealtrafunzione()', urlPost);

    Cosi' esegue come fosse una post. La funzione extra la passi solo se vuoi , e' opzionale.

    Dato che la chimata ajax e' asincrona in questo caso, potrebbe capitare chiamando dopo ahah(...) venisse eseguita subito anche l'altra prima che ahah() sia completata.

    Chiamandola invece come funzione extra viene eseguita solo quando ahah() ha finito di eseguire.

    Notare che la funzione extra e' passata sotto forma di stringa.

    Il delay non e' utilizzato effettivamente comunque non e' altro che quel 100(statico nella funzione) per il setTimeout

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    19
    anche io ho un problema del genere e anche io non sono molto abile con php...è la prima volta che lo uso!
    il mio problema è un form per l'inserimento di nuovi utenti in un forum, ho un menu a tendina dal quale l'amministratore puo scegliere quanti utenti inserire, e dopo che ha scelto il numero dovrebbe comparire una tabella che gli permette di inserire il numero di utenti scelto...
    il problema è che non riesco a leggere il numero scelto!
    come devo 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 © 2025 vBulletin Solutions, Inc. All rights reserved.