Visualizzazione risultati 1 fino 23 di 23

Discussione: Chiamata funzione PHP con onclick

  1. #1
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito Chiamata funzione PHP con onclick

    Salve a tutti!
    Come da titolo volevo creare una funzione php che venisse richiamata dalla funzione onclick (nell'HTML).
    Inoltre mi piacerebbe che la variabile (creata dentro alla funzione) venga restituita.
    Il problema che non so come fare.
    Grazie Mille!

  2. #2
    Guest

    Predefinito

    Inizia con lo studiare.
    PHP un linguaggio lato SERVER. Una volta elaborato restituisce una pagina statica visualizzata dal browser.

    La gestione degli elementi della pagina (DOM) degli eventi e quant'altro riguardi la pagina visualizzata nel browser demandata a linguaggi lato CLIENT quale JavaScript (che non JAVA).

  3. #3
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    E fino qua ci ero arrivato anchio...il punto e che non riesco a combinare questi 2 linguaggi

  4. #4
    Guest

    Predefinito

    Intanto non puoi mischiare i due codici perch come detto uno viene eseguito dal server e l'altro dal client e quindi in tempi e maniere differenti.
    L'unica cosa che puoi fare passare dei dati dall'uno all'altro.

    Descrivi quello che vuoi fare e come stai tentando di farlo.

  5. #5
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Concordo con vplaza .

    E aggiungo: per fare quanto chiedi, in generale, un modo effettuare una chiamata AJAX o AJAJ (tramite JavaScript) verso una pagina PHP che applichi la funzione di cui hai bisogno e ne restituisca il risultato.

    A volte pi semplice, ma non sempre possibile, scrivere una funzione equivalente in JavaScript.

  6. #6
    darbula non  connesso Utente attivo
    Data registrazione
    24-04-2011
    Messaggi
    377

    Predefinito

    Il codice PHP verr interpretato alla prima connessione della pagina e non cambier pi.. Devi passare i dati da ajax a una pagina php, la pagina PHP avr la tua funzione...
    Ecco un esempio di come aggiungere un nuovo elemento tramite ajax o jquery Onclick su elementi creati con script non funziona

  7. #7
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    Vi descrivo cosa volevo fare...praticamente volevo che al click di un pulsante si incrementi una variabile e che questa variabile ad ogni click venga scritta (sovrascritta) su un file..

  8. #8
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Questo richieder AJAX.

    Ti servir una pagina PHP che mantenga lo stato della variabile condivisa, e possa essere interrogata per restituire il valore della variabile oppure incrementarlo. Risulta abbastanza naturale modellare la richiesta del valore tramite richiesta GET, e richiesta di incremento tramite POST.

    C'era una discussione simile: controllo pulsante, anche quella con stato condiviso e AJAX. Vedi se ti utile.

  9. #9
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    interessante mzanella...la cosa interessante da fare sarebbe quella di leggere dal file la variabile che viene incrementata cosi ogni volta che si ricarica la pagina il contatore non si azzera...
    Come posso modificare?
    Codice PHP:
    // Legge lo stato condiviso e lo restituisce come vettore associativo 
    function read_status() { 
        
    $filename "pos.txt"
        if (!
    file_exists($filename) || !is_readable($filename)) { 
            
    touch($filename); 
        } 

        
    $status file_get_contents($filename); 
        if (
    stripos($status"on") === 0) { 
            return array( 
                
    'pulsante1' => "on"
                
    'pulsante2' => "off" 
            
    ); 
        } else { 
            return array( 
                
    'pulsante1' => "off"
                
    'pulsante2' => "on" 
            
    ); 
        } 


    // Scrive lo stato condiviso 
    function write_status($status) { 
        
    $filename "pos.txt"

        
    file_put_contents($filename$status['pulsante1']); 


    // Inverte lo stato, restituendone una copia 
    function switch_status($status) { 
        return array( 
            
    'pulsante1' => $status['pulsante2'], 
            
    'pulsante2' => $status['pulsante1'
        ); 




    // Se  stato premuto un pulsante/richiesto un cambiamento dello stato condiviso... 
    if (isset($_POST['pulsante'])) { 
        
    $pulsante $_POST['pulsante']; 

        
    // Legge lo stato condiviso 
        
    $status read_status(); 

        
    // Se il pulsante premuto era abilitato, inverte lo stato 
        
    if ($status[$pulsante] === "on") { 
            
    $status switch_status($status); 
            
    write_status($status); 
        } 

        
    // Restituisce lo stato condiviso 
        
    echo json_encode($status); 


    // Altrimenti, mostra semplicemente lo stato attuale senza intervenire attivamente 
    else { 
        echo 
    json_encode(read_status()); 


  10. #10
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Basta semplificare il codice che hai trovato nell'altra discussione, anzich "fare calcoli" sullo stato di n pulsanti basta leggere il valore. Qualcosa del genere:
    Codice PHP:
    // Legge il valore della variabile (stato condiviso) dal file
    function read_value() {
        
    $filename "valore.txt";
        if (!
    file_exists($filename) || !is_readable($filename)) { 
            
    touch($filename); 
        } 

        
    $value file_get_contents($filename); 
        
    // Se il file era vuoto, si assume valore 0
        
    if (empty($value)) {
            
    $value 0;
        }

        return 
    $value;


    // Scrive lo stato condiviso 
    function write_value($value) { 
        
    $filename "valore.txt"

        
    file_put_contents($filename$value); 
    }



    // Se  stato l'incremento della variabile...
    if (isset($_POST['incrementa'])) { 
        
    // Legge il valore dallo stato condiviso 
        
    $value read_value();

        
    // Effettua l'incremento
        
    $value $value 1;

        
    // Salva il valore modificato
        
    write_value($value);
        
         
    // Restituisce il valore modificato
        
    echo json_encode($value); 


    // Altrimenti, mostra semplicemente il valore attuale senza intervenire attivamente 
    else { 
        echo 
    json_encode(read_value()); 

    Questa pressapoco l'idea, naturalmente occorre impostare il $filename con il nome del file da leggere/scrivere, effettuare eventuali controlli, ecc. ecc.
    In quell'esempio, per attivare l'incremento occorre effettuare una richiesta POST in cui il campo incrementa sia definito.

  11. #11
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    scusa l'ignoranza ma come faccio ad effettuare una richiesta POST al click del pulsante?

  12. #12
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Nell'altra discussione (controllo pulsante) c' il codice completo, incluso quello per effettuare una richiesta POST. In ogni caso:

    Codice HTML:
    ...
    <button id="my_button">Richiesta POST</button>
    ...
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script>
         $('#my_button').click(function () {
            $.post("indirizzo_pagina.php", {incrementa: "true"}, eventuale_funzione_di_callback);
        });
    </script>
    Dove al posto di indirizzo_pagina.php va usato il percorso della pagina PHP verso cui effettuare la richiesta, e eventuale_funzione_di_callback una funzione (JavaScript) che verr invocata quando la chiamata AJAX terminer (puoi usarla, ad esempio, per mostrare il nuovo valore della variabile).

    L'esempio usa jQuery... che caldamente consigliato! Se hai dubbi guarda la documentazione del metodo post.

  13. #13
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    su eventuale_funzione_di_callback metto un document.write?

  14. #14
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    inoltre nella pagina controller.php non ho la variabile incrementa

  15. #15
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    su eventuale_funzione_di_callback metto un document.write?
    Dipende da cosa vuoi fare!

    inoltre nella pagina controller.php non ho la variabile incrementa
    E chi ha mai parlato di una variabile incrementa?

  16. #16
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    Lo so sono stupido e ignorante...mi potresti strutturare il codice completo del pulsante e del controller.php :(

  17. #17
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Non intendevo dire questo...

    Il codice del controller.php gi c', pochi messaggi indietro: chiamata funzione ph con onclick # 10.

    Quello del pulsante praticamente lo stesso del precedente, con qualche abbellimento diventa cos:
    index.html
    Codice HTML:
    <body>
    	<h1>Chiamata funzione PHP on click</h1>
    
    	<p>Valore corrente della variabile condivisa: <span id="value"></span></p>
    
    
    	<button id="read_value">Leggi valore</button>
    	<button id="update_value">Incrementa valore</button>
    
    	<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    	<script>
    		// Mostra il valore indicato
    		function show_value(value) {
    			var container = $('#value');
    			container.html(JSON.parse(value));
    		}
    
    
    		// Associa il click alla lettura e stampa della variabile
    		$('#read_value').click(function () {
    			$.get("controller.php", show_value);
    		});
    
    
    		// Associa il click all'incremento e stampa della variabile
    		$('#update_value').click(function () {
    			$.post("controller.php", { incrementa: "true" }, show_value);
    		});
    	</script>
    </body>
    Puoi vederne un esempio funzionante nel mio spazio AlterVista.

    Non sapendo in che modo intendessi stampare il valore del contatore, ho supposto ci fosse uno <span> predisposto per contenerlo, di conseguenza la stampa consiste nell'accedere a questo <span> ed inserirvi il valore restituito dalle chiamate AJAX.

  18. #18
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    Mzanella e proprio quello che volevo fare solo che il valore rimane sempre visualizzato😉😉

  19. #19
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Esatto, con il codice proposto il valore viene "inserito" dentro allo <span> come un normale testo, e viene sostituito alle successive pressioni dei tasti.

    Tu invece come lo volevi?

  20. #20
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    Cosi lo volevo pero al posto di scomparire ogni volta che ricarichi la pagina , resta sempre visualizzato

  21. #21
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    sufficiente effettuare la richesta GET appena lo <span> pronto:
    Codice HTML:
    $('#value').ready(function () {
    	$.get("controller.php", show_value);
    });
    Il codice diventa quindi:
    Codice HTML:
    <body>
    	<h1>Chiamata funzione PHP on click</h1>
    
    	<p>
    		Valore corrente della variabile condivisa: <span id="value"></span>
    	</p>
    
    
    	<button id="read_value">Leggi valore</button>
    	<button id="update_value">Incrementa valore</button>
    
    	<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    	<script>
    		// Mostra il valore indicato
    		function show_value(value) {
    			var container = $('#value');
    			container.html(JSON.parse(value));
    		}
    
    
    		// Mostra il valore al caricamento dall pagina
    		$('#value').ready(function () {
    			$.get("controller.php", show_value);
    		});
    
    
    		// Associa il click alla lettura e stampa della variabile
    		$('#read_value').click(function () {
    			$.get("controller.php", show_value);
    		});
    
    
    		// Associa il click all'incremento e stampa della variabile
    		$('#update_value').click(function () {
    			$.post("controller.php", { incrementa: "true" }, show_value);
    		});
    	</script>
    </body>

  22. #22
    tuttitrucchiInvitaAmici non  connesso Utente giovane
    Data registrazione
    16-07-2015
    Messaggi
    81

    Predefinito

    Sono senza parole... TI RINGRAZIO DI CUORE!

  23. #23
    mzanella non  connesso Altervistiano Junior
    Data registrazione
    29-12-2015
    Messaggi
    634

    Predefinito

    Prego !

Regole di scrittura

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