Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    pulsanti che richiamano una funzione php?

    Buon giorno,
    una piccola domanda: se ho una funzione php che esegue alcune operazioni, c'e modo di richiamarla tramite link, qualcosa tipo "onpress" senza dover per forza inviare il tutto ad un'altra pagina e richiamare tale funzione da essa.
    Grazie
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    quello che vuoi fare tu è operare a livello server allo scatenarsi di un evento lato client, lo puoi fare con ajax, ti servirà dunque conoscere un pò di javascript e appoggiarti a una pagina php che svolge la funzione che ti serve

  3. #3
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    ma scusa, ma se in ogni caso devo usare una pagina di appoggio, allora a sto punto è inutile pure usare javascript.
    Io pensavo di mettere tutto dentro ad una funzione e richiamare tale funziona come fosse un "href" dentro ad un link.
    "To iterate is human, to recurse, divine." (R.(Heller))

  4. #4
    Non puoi fare direttamente quello che dici, ma con Javascript puoi fare una via di mezzo. Tramite Javascript dici al browser di effettuare un'altra richiesta HTTP - diciamo in background - ad una pagina qualunque, che puo' essere uno script PHP con l'operazione che ti serve, ed utilizzare poi l'output restituito da quella richiesta. Questa tecnica si chiama AJAX e trovi un milione di esempi in giro per la rete.

  5. #5
    Io ho usato spesso questo metodo:
    Un frame di altezza 0 nella pagina. All'evento onpress, reindirizzi il frame alla pagina php che esegue la tua funzione.

  6. #6
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ok, cercherò qualche esempio in rete.

    @quit10: vorrei evitare l'utilizzo di frame per non avere problemi di validazione e roba varia.
    "To iterate is human, to recurse, divine." (R.(Heller))

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    AJAX serve a fare richieste al server in maniera asincrona, senza richiedere che venga ricaricata la pagina per intero, javascript server a creare l'oggetto della richiesta asincrona e a gestirlo oltre a rilevare l'evento che scatena la funzione che si appoggia a una pagina php. Ti faccio un esempio banale:

    //lo script è formato da 2 pagine php


    //PRIMA PAGINA

    <html>
    <head>
    <title>Esempio di richiesta asincrona</title>
    <script language='javascript'>
    var oggetto_richiesta; //dichiaro globalmente una variabile che sarà l'oggetto della richista asincrona

    function crea_oggetto_richiesta(){//crea l'oggetto della richiesta asincrona a seconda del browser
    if (window.XMLHttpRequest) return new XMLHttpRequest(); // per IE7+, Firefox, Chrome, Opera, Safari
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); // per IE6, IE5
    return null;
    }


    function refresha_post(v1, v2){
    oggetto_richiesta = crea_oggetto_richiesta(); //creo l'oggetto della richiesta asincrona
    if(oggetto_richiesta==null){
    alert("Aggiornare il browser!");
    return;
    }
    var url = "opera.php"; //pagina php
    oggetto_richiesta.onreadystatechange=lavora;
    oggetto_richiesta.open("POST", url, true);
    oggetto_richiesta.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    oggetto_richiesta.send("parametro1="+v1+"&parametr o2="+v2); //passo i parametri via post ( reperibili nell'array $_POST)
    }

    function lavora(){//viene evocata ad ogni cambio di stato della richiesta
    if(oggetto_richiesta.readyState == 4){ //4 = pronto cioè la richiesta è stata effettuata con successo... in poche parole la proprietà responseText di oggetto_richiesta restituirà l'output della pagina php esterna
    document.getElementById('destinazione').innerHTML = oggetto_richiesta.responseText;
    }
    else document.getElementById('destinazione').innerHTML = "...caricamento";//facoltativa si può anche mettere un'animazione per rendere l'idea del caricamento
    }

    </script>
    </head>
    <body>



    da questa pagina effettuerò la richiesta asincrona che aggiornerà il testo nel div sottostante (evidenziato dai bordi rossi) senza ricaricare la pagina.
    Aggiorna:

    <button onclick="refresha_post('div aggiornato ', this.innerHTML)">con post</button>

    </p>
    <div id='destinazione' style='border: medium solid red'>div non ancora aggiornato</div>
    </body>
    </html>


    //SECONDA PAGINA (opera.php)

    <?php
    /*
    questa pagina può effettuare operazioni su file o database presenti sul server senza che la pagina visualizzata dall'utente venga aggiornata
    in questo caso per fare un qualcosa di visibile mi limito a dare un output creato allo scatenarsi di un evento lato client( click su un button ),
    ma in realtà posso fare qualunque cosa lato server come su una normale pagina php... perchè questa è una normale pagina php!!!
    */
    $prima_parte_output = $_REQUEST['parametro1'];
    $seconda_parte_output = $_REQUEST['parametro2'];
    echo "$prima_parte_output $seconda_parte_output";
    ?>


    //FINE SCRIPT

    Ti devi comunque appoggiare a una pagina php se vuoi fare richieste al server, le alternative sono i frame o ancora peggio caricare all'inizio tutti i dati che potrebbero servire, AJAX evita di appesantire le pagine (se usato saggiamente), inoltre anche l'utente finale sarà felice di non dover ricaricare l'intera pagina per ottenere un pagina modificata solo in parte.

  8. #8
    Perchè utilizzare i frame (tralaltro sconsigliatissimi) quando si può usare ajax??

    Cmq ti consiglio di utilizzare prototype o jquery...molto più semplice e completo!

  9. #9
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Ciao Samleo,
    purtroppo non conosco javascript e nè tantomeno ajax.
    Ho fatto una piccola, lieve infarinatura di jquery ma ancora non ho capito come gestire queste operazioni tramite jquery.
    A questo punto l'unica soluzione alla mia portata mi sembra quella di mettere un action alla stessa pagina.
    Avresti da consigliarmi una piccola guida possibilmente in italiano) all'utilizzo di jquery? Sono in tanti a dirmi che è semplice da usare e che promette grandi risultati...
    "To iterate is human, to recurse, divine." (R.(Heller))

  10. #10
    Io mi sono trovato meglio con prototype.

    Puoi trovare qualche esempio qui:

    http://www.webmasterpoint.org/ajax/3...pe-js-ajax.asp

    Ciao ciao

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.