Domanda

È possibile chiamare una funzione da PHP usando onsubmit da JavaScript? In tal caso qualcuno potrebbe darmi un esempio di come sarebbe fatto?

function addOrder(){
    $con = mysql_connect("localhost", "146687", "password");
    if(!$con){
        die('Could not connect: ' . mysql_error())
    }

    $sql = "INSERT INTO orders ((user, 1st row, 2nd row, 3rd row, 4th row)
    VALUES ($session->username,1st variable, 2nd variable, 3rd variable, 4th variable))";

    mysql_query($sql,$con)
    if(mysql_query($sql,$con)){
        echo "Your order has been added";
    }else{
        echo "There was an error adding your order to the databse: " . mysql_error();
    }
}

Questa è la funzione che voglio chiamare. È un sistema di ordinazione, inserisci la quantità di ogni elemento che desideri, premi invia e dovrebbe aggiungere l'ordine alla tabella.

È stato utile?

Soluzione

Non puoi chiamare una funzione PHP da Javascript ...

Javascript è una lingua client (viene eseguita sul browser Web, dopo aver ricevuto la pagina Web) mentre PHP è sul lato server (viene eseguita prima del rendering della pagina Web). Non hai modo di fare una chiamata all'altra.

... ma puoi ottenere il risultato di uno script PHP esterno

Esiste una funzione Javascript chiamata xhttprequest che consente di chiamare qualsiasi script sul server Web e ottenere la sua risposta. Quindi, per risolvere il tuo problema, puoi creare uno script PHP che genera del testo (o XML o JSON), quindi chiamarlo e analizzare la risposta con Javascript.

Questo processo è ciò che chiamiamo AJAX , ed è molto più semplice farlo con un buon strumento di te stesso. Dai un'occhiata a JQuery , è una libreria Javascript potente ma facile da usare con helper AJAX integrati.

Un esempio con JQuery (lato client):

$.ajax({
   type: "POST", // the request type. You most likely going to use POST
   url: "your_php_script.php", // the script path on the server side
   data: "name=John&location=Boston", // here you put you http param you want to be able to retrieve in 

Non puoi chiamare una funzione PHP da Javascript ...

Javascript è una lingua client (viene eseguita sul browser Web, dopo aver ricevuto la pagina Web) mentre PHP è sul lato server (viene eseguita prima del rendering della pagina Web). Non hai modo di fare una chiamata all'altra.

... ma puoi ottenere il risultato di uno script PHP esterno

Esiste una funzione Javascript chiamata xhttprequest che consente di chiamare qualsiasi script sul server Web e ottenere la sua risposta. Quindi, per risolvere il tuo problema, puoi creare uno script PHP che genera del testo (o XML o JSON), quindi chiamarlo e analizzare la risposta con Javascript.

Questo processo è ciò che chiamiamo AJAX , ed è molto più semplice farlo con un buon strumento di te stesso. Dai un'occhiata a JQuery , è una libreria Javascript potente ma facile da usare con helper AJAX integrati.

Un esempio con JQuery (lato client):

<*>POST success: function(msg) { alert( "Data Saved: " + msg ); // what you do once the request is completed }

Altri suggerimenti

Sembra che tu voglia AJAX .

Questo è un argomento troppo grande per una singola risposta, ma questo dovrebbe farti andare.

Fondamentalmente, Javascript invierà una richiesta HTTP a uno script PHP sul tuo server e quindi farà qualcosa con la risposta. JSON è probabilmente qualcosa che vorresti conoscere anche tu.

È possibile indirettamente chiamare una funzione PHP utilizzando JavaScript. Come altre persone hanno già detto, vorrai fare un qualche tipo di richiesta - questo non deve necessariamente essere Ajax. Potrebbe essere sincrono. Senza sapere esattamente cosa stai cercando di realizzare, ecco cosa suggerirei:

  • Allega un gestore eventi all'opzione di invio del modulo (o usa l'invio standard se non intendi utilizzare Ajax)
  • Raggruppa tutti i parametri che dovranno essere passati alla funzione PHP in un POST o nella stringa di query dell'indirizzo alla pagina.
  • Attiva la richiesta (in modo asincrono o tramite invio)
  • Nello script PHP che è la destinazione della richiesta, estrarre i parametri da $ _ POST o $ _ GET.
  • Chiama la funzione PHP che ti serve con i parametri.
  • Riporta indietro la risposta e analizzala secondo necessità una volta completata la richiesta.

Ancora una volta, questo è un po 'generale, ma lo è anche la tua domanda. Spero che questo dia una sorta di direzione.

Il più vicino che otterrai sarà xajax che ti permetterà di avvolgere una funzione PHP in una chiamata AJAX . L'ho usato un po 'prima di iniziare a lavorare con Zend Framework e ho trovato troppo difficile implementarlo in modo OO.

Con xajax scrivi una funzione PHP che esegue tutta la tua logica normale e quindi restituisce un oggetto ObjectResponse che manipola il browser tramite AJAX (caselle di avviso, modifica HTML, CSS, ecc.). Registri la tua funzione con xajax e quindi xajax sputerà javascript nella sezione del tuo HTML.

Nel tuo HTML devi semplicemente chiamare quella funzione javascript che xajax ha generato e si occupa di tutto il resto tramite AJAX.

Ti consigliamo di fare qualcosa del tipo:

<form action="add_order.php" method="POST" id="add_order_form">
<!-- all of your form fields -->
<input type='submit' value='Add Order'>
</form>

<script type="text/javascript">
$("#add_order_form").submit(function() {
    var action = $("#add_order_form").attr("action");
    var data = $("#add_order_form").serialize();
    $.post(action, data, function(json, status) {
        if(status == 'success') {
            alert(json.message);
        } else {
            alert('Something went wrong.');
        }
    }, "json"); 
    return false;
});
</script>

E quindi avere un file PHP chiamato add_order.php con qualcosa del tipo:

$success = 0;
$con = mysql_connect("localhost", "146687", "password");
if(!$con) {
    $message = 'Could not connect to the database.';
} else {
    // SANITIZE DATA BEFORE INSERTING INTO DATABASE
    // LOOK INTO MYSQL_REAL_ESCAPE_STRING AT LEAST,
    // PREFERABLY INTO PREPARED STATEMENTS
    $query_ok = mysql_query("INSERT INTO `orders` ....");
    if($query_ok) {
        $success = 1;
        $message = "Order added.";
    } else {
        $message = "Unable to save information";
    }
}

print json_encode(array('success' => $success, 'message' => $message));

Affinché questa bellezza funzioni, dovrai visitare il sito web jQuery , scaricarlo e includere il jquery file .js.

Non ho testato quanto sopra ma dovrebbe funzionare. Buona fortuna.

Siamo spiacenti, la tua domanda è troppo semplice. A seconda di quale la funzione PHP che vuoi chiamare su form invia Ajax non ti aiuterà. Sei a conoscenza delle differenze fondamentali (lato client / lato server) tra PHP e JavaScript?

Sì, un altro grande e facile tutorial per imparare ajax è:

http://24ways.org/2005/easy-ajax-with- prototipo /

Il prototipo è un'altra cosa che consiglio se non sei andato troppo lontano con il tuo progetto e hai bisogno di ripristinare molte funzionalità.

http://www.prototypejs.org/

Buona fortuna!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top