Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    13

    php&js, passare dati contenuti in un input

    Ciao a tutti,
    ho un campo input dove l'utente può inserire un dato: quando fa questo ho messo una funzione javascript (on change) che dovrebbe caricare una pagina (pag2.php) passandogli il contenuto dell'input, ma non so come indicarglielo!! qualcuno mi sa aiutare?

    -----PAG1----------------
    Codice:
    <html>
    <body>
    <h1>PAGINA 1</h1>
    <form name="data" method="get" action="pag2.php">
    <input name="gg" id="casellag" value="" onchange="window.location.href='pag2.php?gg=**cont enuto input**';"></input>
    </form>
    </body>
    </html>

    -------PAG2-------
    Codice:
    <html>
    <body>
    <h1>PAGINA 2 caricata!</h1>
    <?php
    echo"Parametro passato: ". $_GET['gg'];
    ?>
    </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    insomma sono proprio le basi

    <form name="myform" action="myscript.php" method="post">

    <select name="quellochemipare" onchange="this.form.submit()" >

    <option value="00">00</option>
    <option value="01">01</option>
    <option value="02">02</option>
    <option value="03">03</option>


    </select>

    </form>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    13
    no in realtà non voglio usare una select: l'utente effettua delle operazione e tramite js viene aggiornata la casella input (nascosta all'utente): al variare di questa casella io devo caricare dinamicamente con php una pagina passandogli i valori contenuti nell'input. Per prenderli sono riuscito con
    codice:
    onChange="javascript:document.nomeform.submit()"
    però ho notato che OnChange si attiva solo se è l'utente che modifica direttamente il campo, nel mio caso non parte; quindi mi chiedevo esiste un'altra funziona più adatta?grazie

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    In teoria l'evento onchange viene generato nel momento in cui il valore contenuto nel value viene modificato, che sia da js o da input fatto dall'utente.

    fai attenzione che devi fare :

    <input type="hidden" onChange="javascript:this.form.submit()" />

    Ma sincremante nn capisco perche' vuoi fare una cosa del genere.

    Cioe' a sto punto non ti conviene fare tutto con ajax ??

    1) L'utente arriva alla pagina con la form
    2) L'utente inserisce i dati
    3) Quando cambia un parametro fondamentale blocchi la form, invii i dati con ajax e attendi il risultato dell'operazione
    4) A terminazione visualizzi il messaggio di esecuzione terminata con successo/errore
    5) Rilasci la form per ulteriori modifiche ai valori.

    cosi' non gestire submit nascoste che potrebbero disorientare l'utente.
    Inoltre non devi gestire cambi pagina e passaggio di parametri che richiedono necessariamente il ripopolamento della form.


    puoi fare una cosa del tipo

    <form name="myform" action="" method="post" onsubmit="miafunzionejs(this);return false" >
    ... dati
    </form>

    Cosi' a generarsi dell'evento "submit" vai a gestire tutto nella funzione specificata passando il riferimento del form.

    Pensaci.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    13
    si io ajax non l'ho mai usato... però leggendo qualche spiegazione potrebbe andare benissimo... ora ti spiego + nel dettaglio il mio caso: ho un database contenente articoli (vari avvenimenti accaduti in diverse date dell'anno): ora l'utente può impostare un giorno a scelta tramite un calendarietto tipo quello delle compagnie aeree per selezionare le date di partenza ecc. che ho realizzato in js. al cambiare dei giorni che scrivo in quelle famose input nascoste viene ricaricata la stessa pagina php ma passando i parametri mi carica articoli diversi. a grandi linee come sarebbe applicabile ajax sul mio progetto? grazie scusa la poca competenza in materia!

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Se vuoi fare in ajax allora devi ripensare alla pagina.

    1- imposti la gestione calendario con js
    2- imposti il completamento di un campo in una form con la data selezionata( puoi metterlo anche hidden).
    3- imposti l'onchange sul campo data che popoli al punto precedente.
    4- colleghi l'evento onchange con una funzione js che opera come segue :
    4.1 - la funzione si avvia prendendo come parametro l'elemento
    4.2 - la funzione blocca eventuali altri input
    4.3 - la funzione esegue il codice ajax visualizzando un pannello di caricamento dati
    4.4 - il codice ajax invoca lo script php passandogli la data settata al punto 2
    4.5 - il codice php controlla la data, esegue la query formatta la risposta in html
    4.6 - il codice php risponde con l'html creato e codificato con rawurlencode
    4.7 - il risultato arriva alla funzione di callback della parocedura ajax
    4.8 - la funzione di callback esegue unescape della risposta e la scrive in un div
    4.9 - la funzione di callback rilascia la risorsa bloccata al punto 4.2

    Cosi' non devi spostarti tra le pagine ma fai tutto su un'unica pagina.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    13
    in questa maniera è vero non ricarico mai la pagina come faccio con solo php... in termini tecnici cosa è meglio? cioè un programmatore web coi fiocchi sceglierebbe un approccio con solo php o si appoggierebbe ad ajax? ti chiedo questo perchè non mi dispiacerebbe intraprendere la mansione!

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    La decisione pone sempre i suoi problemi.

    Cioe' Ajax e javascript sono definiti assolutamente non accessibili, quindi se devi fare un sito ad alta accessibilita' dappi che js+ajax non va bene.
    D'altro canto js e ajax aumentano a dismisura l'usabilita' del sito quindi puoi inserire molteplici funzionalita' diverse in un'unica pagina senza costringere l'utente a noiosi redirect.

    Qui dipende dal rapporto accessibilita' / usabilita' che vuoi dare al sito, sinceramente io veco che oramai anche il borwser piu' marcio x smart phone gestisce i js per cui alla fine secondo me ajax rimane una soluzione sempre valida.

    Ovviamente devi sempre considerare che l'utente potrebbe avere js disabilitato, anche se ormai sono davvero in pochi, e quindi il tuo sito nn gli funzionerebbe.
    Tuttavia se pensi a quanti siti utlizzano js e ajax vedrai che alla fine tutti i discorsi fatti sull'accessibilita' vanno a frantumarsi contro l'enorme diffusione di queste tecniche di interazione.

    Dal canto mio io preferisco usare ajax proprio perche' mi evita di dover gestire tutta la parte di redirect etc. E una buona progettazione ti consente di riutillzzare tranquillamente il codice php anche per funzionalita' ajax differenti. Poi considera che alla fine puoi anche usare gli script php fatti x ajax con i form normali senza ajax.


    considera questo

    Codice PHP:

    <form name="mioform" action="mioscript.php" method="post" onsubmit="funzioneAjax(this);return false">

    <input type="hidden" name="noscript" value="1" />

    campi vari


    </form>

    <?
    // il file mioscript.php


    if( $_REQUEST["campo1"] )
    {
    /*...controllo e setta valore*/}

    // fine controlli e settaggio vars

    // esecuzione salvataggi/update/select o altro


    // Forgiatura della risposta in formato richiesto

    if( $_POST["noscript"] )
    {
    // echo o redirect a pagina di uscita
    }
    else
    {
    // risposta in formato xml o json per ajax
    }
    ?>
    Nella funzione js ignori il campo noscript e non lo invii allo script.
    QUindi se l'utente ha disabilitato js il form viene inviato come submit normale e verra' intercettato il campo noscript e quini lo script gestira' la risposta come normale script php con reidirect oppure echo del risultato.

    Se invece hai ajax il campo no script non lo fai inviare come parametro e lo script rispondera' con il formato da te scelto alla funzione ajax di callback.

    QUindi con questa tecnica puoi avere un sito altamente usabile ed accessibile perche' anche se l'utente non usa js i form verranno inviati lo stesso.

    Ovviamente se nn usa js non potra' nemmeno gestire pannelli o animazion etc ma questo e' un altro problema. Eventualemente puoi fare 2 versioni una con ajax e una senza e nei form imposti quel parametro di controllo.

    Le soluzioni sono tantissime e differenti. io preferisco pero' imporre i js sul sito e con iltag <noscript></noscript> Visualizzo il sempre il messaggio "Devi abilitare javascript per poter accedere alle funzionalita' del sito". Visto che l'utenza che non usa js e' talmente poca nei mei sistemi/siti che e' trascurabile.

    Quindi devi decidere . Se ti vuoi cimentare puoi sempre provare con jquery cosi' eviterai di perdere un sacco di tempo a scrivere codice js per gestire ajax che non e' cosi' immediato come sembra proprio perche' e' completamente asincrono.

    In bocca al lupone.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    13
    ...questa si che è una risposta esaustiva!! i tuoi consigli mi saranno molto utili! grazie mille!!

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Di nulla se ti serve altro fammi pure un fischio

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.