Ψάχνω για μια απλή λύση για την κλήση μιας PHP συνάρτησης μόνο όταν γίνεται κλικ σε μια ετικέτα.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
ΠΡΟΗΓΗΣΗ: ο κώδικας html και ο κώδικας PHP βρίσκονται στο ίδιο αρχείο PHP
Πρώτον, καταλάβετε ότι έχετε τρεις γλώσσες που συνεργάζονται μεταξύ τους:
PHP: Απαντά σε αιτήματα όπως το κλικ σε έναν σύνδεσμο (GET) ή η υποβολή μιας φόρμας (POST).
HTML & JavaScript: (εκτός από το NodeJS).
Υποθέτω ότι το αρχείο σας μοιάζει κάπως έτσι:
<!DOCTYPE HTML>
<html>
<?php
function runMyFunction() {
echo 'I just ran a php function';
}
if (isset($_GET['hello'])) {
runMyFunction();
}
?>
Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>
Επειδή η PHP ανταποκρίνεται μόνο σε αιτήματα (GET, POST, PUT, PATCH και DELETE μέσω $_REQUEST), με αυτόν τον τρόπο πρέπει να εκτελέσετε μια συνάρτηση PHP, παρόλο που'βρίσκονται στο ίδιο αρχείο. Αυτό σας δίνει ένα επίπεδο ασφάλειας, "Πρέπει να τρέξω αυτό το σενάριο για αυτόν τον χρήστη ή όχι; ".
Εάν δεν θέλετε να ανανεώσετε τη σελίδα, μπορείτε να κάνετε ένα αίτημα στην PHP χωρίς ανανέωση μέσω μιας μεθόδου που ονομάζεται Ασύγχρονη JavaScript και XML (AJAX).
Αυτό όμως είναι κάτι που μπορείτε να αναζητήσετε στο YouTube. Απλά αναζητήστε "jquery ajax",
Συνιστώ το Laravel σε όποιον είναι νέος για να ξεκινήσει σωστά: http://laravel.com/
Σε javascript, κάντε μια λειτουργία ajax,
function myAjax() {
$.ajax({
type: "POST",
url: 'your_url/ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
Στη συνέχεια, καλέστε την από την html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
Και στο ajax.php σας,
if($_POST['action'] == 'call_this') {
// call removeday() here
}
Θα πρέπει να το κάνετε αυτό μέσω AJAX. Συνιστώ ανεπιφύλακτα να χρησιμοποιήσετε το jQuery για να το κάνετε αυτό πιο εύκολο για εσάς....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};