2013-07-26 15 views
5

il mio nome è contatti.php che hanno due bottoni di invio; voglio che se si preme il pulsante Inserisci funzione inserto è chiamato e, se selezionate viene premuto select è called.i hanno scritto seguente codice:come chiamare la funzione php dal pulsante di invio?

//contacts.php 
<?php 
if(isset($_REQUEST['select'])) 
{ 
    select(); 
} 
else 
{ 
    insert(); 
} 
?> 

<html> 
<body> 
<form action="contacts.php"> 
<input type="text" name="txt"/> 
<input type="submit" name="insert" value="insert" /> 
<input type="submit" name="select" value="select"/> 
</form> 

<?php 
function select() 
{ 
    //do something 
} 
function insert() 
{ 
    //do something 
} 
?> 

ma non funziona Prega di aiutare

+2

Non mezzi di lavoro? –

risposta

11
<?php 
if (isset($_REQUEST['insert'])) { 
    insert(); 
} elseif (isset($_REQUEST['select'])) { 
    select(); 
} 

il codice chiama insert() anche se nessun pulsante viene premuto, che avverrà quando viene visualizzato prima pagina.

1

Se si utilizza return funzione all'interno di restituire il risultato, è necessario utilizzare eco per stampare il risultato durante la chiamata della funzione.

if(isset($_REQUEST['select'])) 
{ 
    echo select(); 
} 
elseif(isset($_REQUEST['insert'])) 
{ 
    echo insert(); 
} 
+1

Questo è un _if_ piuttosto significativo. – Barmar

+0

@Barmar Hai dimenticato ')' in prima 'se' e'() 'in elseif. :) –

+0

@Barmar vedere un'altra stessa domanda dello stesso utente http://stackoverflow.com/questions/17873067/unable-to-make-mysql-connection-on-data-post –

1

metodo post uso, perché è sicuro

//contacts.php 
<?php 
if(isset($_POST['select'])) 
{ 
    select(); 
} 
else 
{ 
    insert(); 
} 
?> 

<html> 
<body> 
<form action="contacts.php" method="post"> 
<input type="text" name="txt"/> 
<input type="submit" name="insert" value="insert" /> 
<input type="submit" name="select" value="select"/> 
</form> 

<?php 
function select() 
{ 
    //do something 
} 
function insert() 
{ 
    //do something 
} 
?> 
+0

'post' non è più sicuro di 'arrivare ' –

+0

E anche se lo è, non dovrebbe influire sul corretto funzionamento dello script. – Barmar

+1

@Dagon, perché dovrebbe essere? – liyakat

0
<?php 
$insert = $_POST['insert']; 
$select = $_POST['select']; 

if ($insert) { 
insert(); 
} 

if ($select) { 
select(); 
} 

else { 
echo 'press any button...'; 
} 
?> 

<html> 
<body> 
<form action="contacts.php" method="post"> 
<input type="text" name="txt"/> 
<input type="submit" name="insert" value="insert" /> 
<input type="submit" name="select" value="select"/> 
</form> 

<?php 
function select() { 
echo 'you pressed the [select] button'; 
exit; 
} 

function insert() { 
echo 'you pressed the [insert] button'; 
exit; 
} 
?> 
+0

Giustamente è già stato sottolineato che si stanno usando parole riservate come nome di una funzione. È sufficiente rinominare le funzioni in qualcosa come button_insert(), button_select() o qualsiasi altra cosa –

+0

no no e no. php non è mysql –

1

Come è stato descritto da diverse persone (che riassumono i commenti precedenti), si hanno due opzioni.

Il primo è quello di inviare i dati tramite POST o GET al server direttamente e riserva (refresh) la pagina in base a quello che fate all'interno select() e inserire().

Anche se questo non è il posto giusto per una discussione GET POST v, convenzione è quello di utilizzare POST per l'invio di dati al server. POST è leggermente più sicuro perché le informazioni non sono memorizzate nel browser. Per ulteriori informazioni sui due qui: http://www.w3schools.com/tags/ref_httpmethods.asp

La seconda opzione è utilizzare AJAX per eseguire l'attività senza aggiornare la pagina Web. In breve, AJAX utilizza i metodi Javascript che inserisci nella tua pagina per comunicare con il tuo server, evitando così la necessità per il PHP sul server di modificare effettivamente qualsiasi cosa nella pagina (che richiederebbe un aggiornamento). Un esempio di codice di AJAX può essere trovato qui: http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

+0

Sta usando GET, poiché è l'impostazione predefinita. E '$ _REQUEST' combina il contenuto di' $ _GET' e '$ _POST', quindi non importa quale metodo usa. Come è questa una "risposta"? – Barmar

Problemi correlati