Visualizzazione risultati 1 fino 13 di 13

Discussione: [script] Aiuto per creazione codice "di scelta"

  1. #1
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito [script] Aiuto per creazione codice "di scelta"

    Ciao a tutti.
    Vengo subito al punto: io avrei necessità di creare un a paginetta che racchiuda tutti i risultati contenuti qui, ma con un sistema di "scelta campi".

    Cioè, due campi dove poter scegliere tra una lista di nomi e, una volta fatta la scelta, un terzo campo dove poter visualizzare il risultato (ore di percorrenza e costo del volo).

    Es: Partenza da "Roma" e Arrivo a "New York" = 12 ore / 12.500€
    Partenza da "Roma" e Arrivo a "Istanbul" = 8 ore / 8.500€
    ecc. ecc.

    Dal momento che io sono un perfetto ignorante in queste cose:
    C'è qualche persona di buon cuore che riesca almeno a crearmi la "base" di quello che mi serve e di indicarmi più o meno "come" e "dove" inserire tutte le imformazioni che servono ?

    Graaaassie.

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Diciamo che in questo post ti do i fondamenti, per il resto cerca di continuare da solo...

    Come base devi crearti una pagina in cui inserire questi controlli:
    Codice HTML:
    <form name="modulo" id="modulo" method="post">
    <select name="partenza" id="partenza">
       <option value="Roma">Roma</option>
       <option value="Milano">Milano</option>
       <option value="Venezia">Venezia</option>
       ...
    </select>
    <select name="arrivo" id="arrivo">
       <option value="Roma">Roma</option>
       <option value="Milano">Milano</option>
       <option value="Venezia">Venezia</option>
       ...
    </select>
    </form>
    A questo punto le strade sono due:
    - o elabori direttamente i risultati via JavaScript, per conoscere quali sono i due aeroporti selezionati ti serve il codice
    Codice:
    document.modulo.partenza[document.modulo.partenza.getSelectedIndex()].value
    document.modulo.arrivo[document.modulo.arrivo.getSelectedIndex()].value
    - in alternativa, puoi impostare un file di "action" al modulo e crearti una pagina PHP che utilizzi i valori impostati dagli aeroporti dal codice
    Codice:
    $_POST['partenza']
    $_POST['arrivo']
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito

    Intanto grazie,
    ...però quello che continuo a non capire è in che modo io possa far visualizzare i risultati delle varie scelte.

    Cioè, se scelgo un "volo" Roma / Milano, come faccio a far visualizzare la risposta (che sarebbe - per esempio - : 2 ore / 5.000€) ? O una scelta Venezia / Roma (che sarebbe : 5 ore / 8.500€) ?

    Immagino che i dati vadano inseriti in apposite stringhe e che poi queste abbiano un collegamento al form priincipale... Il problema è questo.

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Più o meno... devi avere in memoria una tabella con tutte le varie corrispondenze. In JavaScript il modo più semplice per realizzarla è questo: in testa alla pagina metti una tabella costruita nel modo seguente.

    ATTENZIONE: l'ordine dei dati sia per le partenze che per l'arrivo deve essere lo stesso dei due moduli...
    Codice:
    var dati_voli = new Array ();
    // partenza da Roma...
    dati_voli[0] = new Array (
       "0 ore / 0 &euro;", // ... arrivo a Roma. Privo di senso ma utile per evitare casini dopo ;-)
       "2 ore / 5.000 &euro;", // ... arrivo a Milano
       "3 ore / 7.000 &euro;", // ... arrivo a Venezia
       ...
    );
    
    // partenza da Milano...
    dati_voli[1] = new Array (
       "2 ore / 5.000 &euro;", // ... arrivo a Roma
       "0 ore / 0 &euro;", // ... arrivo a Milano. Vedi sopra per Roma ;-)
       "1 ora / 3.000 &euro;", // ... arrivo a Venezia
       ...
    );
    
    // ... continua in modo simile con le altre partenze
    Sempre in testa al codice, aggiungi questa funzione:
    Codice:
    function aggiorna ()
    {
       document.getElementById ("risultato").innerHTML = dati_voli[document.modulo.partenza.getSelectedIndex()][document.modulo.arrivo.getSelectedIndex()];
    }
    Poi modifica leggermente il codice del modulo rispetto a quanto scritto sopra:
    Codice HTML:
    <form name="modulo" id="modulo">
    <select name="partenza" id="partenza" onchange="aggiorna()">
       <option value="Roma">Roma</option>
       <option value="Milano">Milano</option>
       <option value="Venezia">Venezia</option>
       ...
    </select>
    <select name="arrivo" id="arrivo" onchange="aggiorna()">
       <option value="Roma">Roma</option>
       <option value="Milano">Milano</option>
       <option value="Venezia">Venezia</option>
       ...
    </select>
    </form>
    <span id="risultato">Seleziona due aeroporti per visualizzare il prezzo del volo</span>
    Ecco, a questo punto dovresti avere tutto funzionante...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito

    Molto beeeeene.
    Immagino che quelle que parti di codice debbano essere inserite tra <script type="text/javascript"> e </script> , giusto ?

    Dopodiché, una volta che continuo con l'inserimento delle varie città, il pezzetto di codice dati_voli[0] = new Array, andrà ad aumentare di una unità ad ogni inserimento di città ?
    Es...
    dati_voli[0] = new Array... // Roma
    dati_voli[1] = new Array... // Milano
    dati_voli[2] = new Array... // Venezia

    Poi, inserendo come hai detto l'ordine esatto nei due moduli, se io dopo mi trovassi costretto ad inserire una nuova città tra Milano e Venezia (le città le dovrò inserire in ordine alfabetico) dovrò variare anche tutta la serie dei numerini di conseguenza oppure posso aggiungere l'ultimo numero senza problemi tra due numeri differenti ?
    Es...
    dati_voli[0] = new Array... // Roma
    dati_voli[1] = new Array... // Milano
    dati_voli[35] = new Array... // nuovo inserimento
    dati_voli[2] = new Array... // Venezia


    ...Uffff... lo so che magari per te (voi) è uno stress rispondere a queste sciocchezze i quanto le considerate "scemate", ma io proprio non ho assolutamente idea neppure dell'ABC di queste cose...
    mi spiace stressarvi.

  6. #6
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da popoworld Visualizza messaggio
    Molto beeeeene.
    Immagino che quelle que parti di codice debbano essere inserite tra <script type="text/javascript"> e </script> , giusto ?

    Dopodiché, una volta che continuo con l'inserimento delle varie città, il pezzetto di codice dati_voli[0] = new Array, andrà ad aumentare di una unità ad ogni inserimento di città ?
    Es...
    dati_voli[0] = new Array... // Roma
    dati_voli[1] = new Array... // Milano
    dati_voli[2] = new Array... // Venezia
    Fino a qui è tutto esatto... aggiungo, se non era chiaro, che per "testa della pagina" intendevo i tag <head> ... </head>.
    Citazione Originalmente inviato da popoworld Visualizza messaggio
    Poi, inserendo come hai detto l'ordine esatto nei due moduli, se io dopo mi trovassi costretto ad inserire una nuova città tra Milano e Venezia (le città le dovrò inserire in ordine alfabetico) dovrò variare anche tutta la serie dei numerini di conseguenza oppure posso aggiungere l'ultimo numero senza problemi tra due numeri differenti ?
    Es...
    dati_voli[0] = new Array... // Roma
    dati_voli[1] = new Array... // Milano
    dati_voli[35] = new Array... // nuovo inserimento
    dati_voli[2] = new Array... // Venezia


    ...Uffff... lo so che magari per te (voi) è uno stress rispondere a queste sciocchezze i quanto le considerate "scemate", ma io proprio non ho assolutamente idea neppure dell'ABC di queste cose...
    mi spiace stressarvi.
    Per quanto riguarda le partenze, non dovrebbero esserci problemi... anche se ti consiglio comunque di inserire in fondo all'elenco le nuove aggiunte. Sugli arrivi, invece, devi tassativamente aggiungerli rispettivamente nell'ordine in cui sono elencati i dati. Quindi, se aggiungi una nuova partenza e un nuovo arrivo in fondo all'elenco, dovrai:
    - aggiungere in tutti gli array di partenze un ulteriore elemento, che colleghi ciascuna partenza con il nuovo arrivo, in fondo alla lista (ah, ricorda che dopo l'ultimo elemento non ci va la virgola ;-D)
    - aggiungere un nuovo array di partenze in fondo all'elenco, che colleghi la nuova partenza con tutti gli aeroporti precedenti, sempre nello stesso ordine degli elenchi.

    Stammi bene...

    P.S. Nessun problema... se per le risposte sappiamo che non è sufficiente una ricerca nel forum, non mordiamo mica... :-D
    Ultima modifica di dementialsite : 09-11-2007 alle ore 15.08.20
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  7. #7
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito

    ...O al limite, con un lavoro da certosino, potrei anche andarmi a cambiare tutti i numerini degli array dopo che ho inserito la nuova città (spero si possa fare, perchè nell'elenco, le città dovranno essere necessariamente in ordine alfabetico)...

    La paginetta che esce con tutto quel codice (anche qui spero che gli elenchi poi si possano inserire in un txt e richiamarli tramite un "include" - altrimenti mi viene fuori una pagina che sarà più lunga della bibbia) per ora è così.

    Fino qua ci siamo, vero ?

  8. #8
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Allora... a testare lo script non funziona... tra i possibili errori:
    - sul primo array dati_voli[0] hai messo una virgola di troppo (sopra ti ho detto che l'ultima voce dell'elenco non ha bisogno della virgola, ricordi?)
    - non hai inserito i dati dei voli per le partenze da Venezia (devi scrivere alcune righe con dati_voli[2] = etc...)

    Prova a sistemare queste cose per prime. Altre risposte alle tue domande:
    - puoi anche memorizzare in ordine alfabetico gli aeroporti, ma allora non solo dovrai stare attento a riassegnare correttamente i numeri delle partenze, ma anche inserire al posto giusto la loro corrispondenza con arrivo. Ad esempio, se oltre agli aeroporti di Milano e Venezia, volessi aggiungere quello di Roma, devi modificare il codice da così:
    Codice:
    var dati_voli = new Array ();
    
    // partenze da Milano
    dati_voli[0] = new Array (
       "0 / 0", // arrivo a Milano
       "1 / 1" // arrivo a Venezia
    );
    
    // partenze da Venezia
    dati_voli[1] = new Array (
       "1 / 1", // arrivo a Milano
       "0 / 0" // arrivo a Venezia
    );
    ... a così:
    Codice:
    var dati_voli = new Array ();
    
    // partenze da Milano
    dati_voli[0] = new Array (
       "0 / 0", // arrivo a Milano
       "2 / 2", // arrivo a Roma
       "1 / 1" // arrivo a Venezia
    );
    
    // partenze da Roma
    dati_voli[1] = new Array (
       "2 / 2", // arrivo a Milano
       "0 / 0", // arrivo a Roma
       "3 / 3" // arrivo a Venezia
    );
    
    // partenze da Venezia
    dati_voli[2] = new Array (
       "1 / 1", // arrivo a Milano
       "3 / 3", // arrivo a Roma
       "0 / 0" // arrivo a Venezia
    );
    Spero che si capisca...
    - altra cosa: ovviamente una volta che l'hai perfezionato puoi tranquillamente scrivere il tutto in un file a parte e usare include(); di PHP. Ricorda che quella funzione si limita a copiare meccanicamente il codice a parte e inserirlo così com'è nel file contenitore...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  9. #9
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito

    Vado con ordine pure io...

    la virgoletta l'ho tolta (io avevo capito che non serviva nell'ultima voce dell'ultimo array, sorry) e ho aggiunto anche i valori per venezia.

    Si, per la questione elenco alfabetico, credo di aver capito: oltre che a rinumerare tutti gli array consecutivi al nuovo inserimento, dovrò poi inserire nell'elenco di ogni array la lista esatta dei form, (se nei form, inserisco una città tra Roma e Milano, questa città dovrà risultare in mezzo alle altre due anche nelle liste di tutti gli array), giusto?

    ....ma continua a non funzionare.
    ...Magari ho fatto qualche altra sciocchezza io, mah...
    Per esempio, io tutta la fuzione "function aggiorna () ecc. ecc.", l'ho inserita all'interno dello script.
    ...E poi mi chiedo: ma non dovrebbe esserci una qualche sorta di tastino che ti permetta di visualizzare il risultato ? (o un campetto, chessò)...

    ...In ogni caso, se per te non è un problema, puoi guardare come ho scritto il codice nella paginetta, che intanto è tutto visibile.

  10. #10
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Scusami, errore mio (anche stavolta mi sono confuso con Java...): nella funzione aggiorna() al posto di getSelectedIndex() devi mettere solo selectedIndex (senza parentesi).

    Prova a vedere se così va... stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  11. #11
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito

    Oserei dire: "perfetto"

    Ovviamente grazie mille per l'aiuto e per la pazienza.

    [EDIT]
    ...E te pareva che andasse tutto bene...
    ...Cioè, funziona tutto bene, però ho dei problemi se provo ad inserire 4 elenchi differenti nella stessa pagina...
    ...Ho dato un nome differente ad ogni blocco dei form
    ...Ho provato a rinominare i vari moduli nei form per diversificarli (modulo1 / modulo2 ecc.)
    ...Ho fatto la stessa cosa con select name "partenza" e select name "arrivo"
    dopodichè ho riportato i nomi nei 4 differenti script e ho variato queste stringhe:
    Codice:
    function aggiorna ()
    {
       document.getElementById ("risultato").innerHTML = dati_voli[document.modulo1.partenza1.selectedIndex]
    [document.modulo1.arrivo1.selectedIndex];
    }
    (ovviamente ad ogni script gli ho dato un numero differente)
    Ma non funziona nulla lo stesso ... dov'è il problema ?
    Ultima modifica di popoworld : 10-11-2007 alle ore 01.56.13 Motivo: nuovo problema

  12. #12
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Sei sicuro di aver scritto tutto bene? Perché nell'ultimo link che hai messo vedo una sfilza di aeroporti ma solamente 3 record riguardanti i voli (e nemmeno associati tra loro)...

    Altra cosa: quando scrivi l'unica riga della funzione aggiorna() non andare a capo, anche se sarà un po' lunga... non vorrei che lo prendesse male in questo modo...

    Stammi bene...
    Ultima modifica di dementialsite : 10-11-2007 alle ore 11.59.32
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  13. #13
    popoworld non è connesso Utente giovane
    Data registrazione
    14-12-2006
    Messaggi
    32

    Predefinito

    Eccomi qua...
    Funziona tutto, grazie mille

    Si, ora lo vedi un "pò così", ma è perchè prima di inserire tutti gli array con i relativi risultati (sono "solo" 1039 stringhe di record con 4 risultati cadauna... una sciocchezza inserirle tutte a mano, ahahah) volevo vedere se funzionavano tutte le "modifichine" che ho fatto, e soprattutto se mi prendeva i txt inseriti nell'array tramite 'include' (e li prende) .
    Ora "funzionanti" ci sono solo i voli disponibili in partenza da Amsterdam, ma piano piano inserirò tutto il resto...
    I dubbi che avevo prima sul come poter far vedere 4 script differenti, l'ho risolto inserento tutti i risultati in quello che mi hai dato te; avevo solo paura ad andare a toccare il codice che mi avevi scritto, sai com'è: se non si capiscono le cose è sempre meglio non metter mano... ma invece mi è andata bene.
    Grazie ancora.
    Ultima modifica di popoworld : 10-11-2007 alle ore 13.41.14 Motivo: dimenticanze e correzioni varie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •