Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    ciclo javascript con allinterno una funzione php

    ciao a tutti, sto cercando di realizzare un ciclo con javascript che a sua volta carichi un ciclowhile php.

    il problema sono le variabili.

    questo è quello che ho realizzato/copiato che ovviamente non va.
    Codice PHP:
      <script>
    function setProvincia(chooser) {
        var newElem;
        var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
        var provinciaChooser = chooser.form.elements["provincia"];
        while (provinciaChooser.options.length) {
            provinciaChooser.remove(0);
        }
        var choice = chooser.options[chooser.selectedIndex].value;
        var db = provinciadb[choice];
        newElem = document.createElement("option");
        newElem.text = "Tutti";
        newElem.value = "";
        provinciaChooser.add(newElem, where);
        if (choice != "") {
            for (var i = 0; i < db.length; i++) {
                newElem = document.createElement("option");
                newElem.text = db[i].text;
                newElem.value = db[i].value;
                provinciaChooser.add(newElem, where);
            }
        }
    }
        
    <?php
      
    for ($i=0$i $numrows$i++) {?>
    provinciadb[<?php echo($i);?>]  = [ <?php 
                $result 
    province($i);    
                
    $virgola="0";
                while (
    $province mysql_fetch_array($result)){
                    if(
    $virgola>"0"){echo ",";}
                    echo 
    "{value:\"".$province[0]."\", text:\"".$province[1]."\"}";
                    
    $virgola=++$virgola;
                }
                
    ?>];
    <?php ?>   
    </script>
    la seconda parte è il problema, fin tanto che tengo la funzione non dinamica funziona.
    cosi:
    Codice PHP:
    provinciadb["1"]  = [ <?php 
                $result 
    province("1");    
                
    $virgola="0";
                while (
    $province mysql_fetch_array($result)){
                    if(
    $virgola>"0"){echo ",";}
                    echo 
    "{value:\"".$province[0]."\", text:\"".$province[1]."\"}";
                    
    $virgola=++$virgola;
                }
                
    ?>];
    solo che ripeterla 20 volte e poi ripeterla altre 110 volte per i comuni mi sembra complicato e lungo....volevo realizzare un ciclo. qualcuno è in grado di aiutarmi?
    grazie mille.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Non puoi sono due ambienti diversi, quando richiami la funzione setProvincia il php (che sta sul server) ha già finito di "lavorare". Invece di popolare le select cosi usa ajax fai una ricerca qui sul forum c'è una discussione che tratta molto bene l'operazione.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ho risolto:
    Codice PHP:
      <script>    
     var provinciadb = new Object()
      var comunedb = new Object()
    <?php 
    for ($i=1;$i<=20 ;$i++ )
    {
    ?>
    provinciadb[<?php echo $i;?>]  = [ <?php 
                $result 
    province($i);    
                
    $virgola="0";
                while (
    $province mysql_fetch_array($result)){
                    if(
    $virgola>"0"){echo ",";}
                    echo 
    "{value:\"".$province[0]."\", text:\"".$province[1]."\"}";
                    
    $virgola=++$virgola;
                }
                
    ?>];  
    <?php ?>
    function setProvincia(chooser) {
        var newElem;
        var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
        var provinciaChooser = chooser.form.elements["provincia"];
        while (provinciaChooser.options.length) {
            provinciaChooser.remove(0);
        }
        var choice = chooser.options[chooser.selectedIndex].value;
        var db = provinciadb[choice];
        if (choice != "") {
            for (var i = 0; i < db.length; i++) {
                newElem = document.createElement("option");
                newElem.text = db[i].text;
                newElem.value = db[i].value;
                provinciaChooser.add(newElem, where);
            }
        }
    }
    </script>
    in pratica il php scrive javascript. unica cosa che se voglio aggiungere i comuni questi devono essere caricati tutti in un colpo con questo sistema e caricare più di 8000 comuni rende il caricamento della pagina eterno.

    avevo gia visto la soluzione ajax+php solo che conoscendo solo php la trovavo un po complicata. :P

    comunque mi sa che mi butto sulla possibilità che mi hai indicato.

    ciao e grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ho provato il metodo postato da rikka che è quello che nel complesso capisco meglio. ma proprio non vuole andare. di php ci capisco anche se non sono certo una cima. mentre di javascript ci capisco gran poco e non riesco a capire il perchè...

    mi sa che opterò alla soluzione full php con ricaricamento della pagina ad ogni select anche se è una rottura e poco estetico.

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.