Funzioni Javascript e PHP

È ansible chiamare una funzione da PHP usando onsubmit da JavaScript? Se così fosse, qualcuno potrebbe darmi un esempio di come sarebbe stato 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 ordinamento, si digita la quantità di ogni elemento desiderato, si invia Invia e si dovrebbe aggiungere l’ordine alla tabella.

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 eseguito prima del rendering della pagina Web). Non hai modo di chiamarti in un altro.

… ma puoi ottenere il risultato di uno script PHP esterno

C’è una funzione Javascript chiamata xhttprequest che ti permette di chiamare qualsiasi script sul server Web e ottenere la sua risposta. Quindi, per risolvere il tuo problema, puoi creare uno script PHP che restituisca del testo (o XML o JSON), quindi chiamalo e analizzi la risposta con Javascript.

Questo processo è ciò che chiamiamo AJAX ed è molto più facile farlo con un buon strumento di te stesso. Dai un’occhiata a JQuery , è una libreria Javascript potente e facile da usare con gli 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 $_POST success: function(msg) { alert( "Data Saved: " + msg ); // what you do once the request is completed } 

Sembra che tu voglia AJAX .

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

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

È indirettamente ansible chiamare una funzione PHP utilizzando JavaScript. Come altre persone hanno già menzionato, vorrai fare qualche tipo di richiesta – questo non deve necessariamente essere Ajax. Potrebbe essere sincrono. Senza sapere esattamente cosa stai cercando di realizzare, ecco cosa vorrei suggerire:

  • Albind un gestore di eventi all’opzione di invio del modulo (o utilizzare l’invio standard se non si utilizzerà Ajax)
  • Raggruppa tutti i parametri che devono essere passati alla funzione PHP in un POST o nella stringa di query dell’indirizzo alla pagina.
  • Avvia la richiesta (in modo asincrono o tramite invio)
  • Nello script PHP che è la destinazione della richiesta, estrai i parametri da $ _ POST o $ _ GET.
  • Chiama la funzione PHP che ti serve con i parametri.
  • Ripristina la risposta e analizzala in base alle esigenze una volta completata la richiesta.

Di nuovo, questo è un po ‘generale, ma anche la tua domanda. Spero che questo dia una sorta di direzione.

Il più vicino a cui andrai sarà xajax che ti permetterà di avvolgere una funzione PHP in una chiamata AJAX. L’ho usato un bel 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 fa tutta la tua logica regolare e poi restituisce un object ObjectResponse che manipola il browser tramite AJAX (caselle di avviso, modifica HTML, CSS, ecc.). Registri la tua funzione con xajax e poi xajax sputerà qualche javascript nella tua sezione HTML.

Nel tuo codice HTML hai appena chiamato la funzione javascript generata da xajax e si occupa del resto tramite AJAX.

Dovrai fare qualcosa come:

 

E poi 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)); 

Per far funzionare questa bellezza devi andare sul sito web di jQuery , scaricarlo e includere il file jquery.js.

Non ho provato quanto sopra ma dovrebbe funzionare. In bocca al lupo.

Siamo spiacenti, la tua domanda è troppo semplice. A seconda della funzione PHP che vuoi chiamare su formulari, Ajax non ti aiuterà. Sei a conoscenza delle differenze fondamentali (clientide / serveride) tra PHP e JavaScript?

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

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

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/

In bocca al lupo!