J'ai
index.php
<select id="year_list" name="year_list" onchange="check_year_event('year_list', 'event_list');" > . . . </select>
<select id="event_list" name="event_list" onchange="check_year_event('year_list', 'event_list');" > . . . </select>
.
.
.
<?php
function checkYearandEvent($year, $event) {
$year_event = mysql_query("SELECT * FROM year_event WHERE year = '$event' AND event = '$event'")
if (mysql_num_rows($year_event) > 0) {
// do this
}
}
?>
myscripts.js
function check_year_event(year_id, event_id) {
var year = document.getElementById(year_id).value;
var event = document.getElementById(event_id).value;
// call PHP function (but I don't know how): checkYearandEvent(year, event);
}
Ma question est de savoir comment puis-je appeler le PHP fonction chaque fois que l'utilisateur modifie la valeur de l'un des éléments select
.
Vous devez utiliser Ajax. Il y a un exemple de base:
myscripts.js
function AjaxCaller(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
if(!xmlhttp && typeof XMLHttpRequest!='undefined'){
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function callPage(url, div){
ajax=AjaxCaller();
ajax.open("GET", url, true);
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
if(ajax.status==200){
div.innerHTML = ajax.responseText;
}
}
}
ajax.send(null);
}
function check_year_event(year_id, event_id) {
var year = document.getElementById(year_id).value;
var event = document.getElementById(event_id).value;
callPage('file.php?year='+year+'&'+'event=+'+event,document.getElementById(targetId));
}
fichier.php
<?php
function checkYearandEvent($year, $event) {
$year_event = mysql_query("SELECT * FROM year_event WHERE year = '$event' AND event = '$event'")
if (mysql_num_rows($year_event) > 0) {
// do this
}
}
echo checkYearandEvent($_GET['year'], $_GET['event']);
?>
Vous ne pourrez pas faire cela dans la façon dont vous pourriez être en expôture. =PHP est exécuté sur le serveur, avant que le navigateur ne reçoit le code HTML. D'autre part, JavaScript s'exécute dans le navigateur et n'a aucune connaissance du PHP ( ou tout autre langage côté serveur) utilisé pour créer le HTML.
Pour "appeler" une fonction PHP, vous devez émettre une demande sur le serveur (souvent appelée AJAX). Par exemple, vous pourriez avoir un checkYear.php
script qui vérifie l'événement et renvoie certains HTML indiquant si le chèque a réussi. Lorsque le fragment HTML revenait au JavaScript, vous l'injectez dans la page.
J'espère que cela t'aides!
JavaScript est une langue côté client, PHP= est une langue latérale du serveur. Par conséquent, vous ne pouvez pas appeler PHP Fonctions directement à partir du code JavaScript. Cependant, ce que vous pouvez FAIT EST POST AN AJAX Demande (cela appelle A PHP fichier dans les coulisses) et utilisez-le pour exécuter votre PHP= CODE et renvoyez toutes les données dont vous avez besoin dans le JavaScript.
Fondamentalement, vous mélangez des scripts du côté serveur (PHP) et du côté client (JS).
Il est cependant possible - merci par exemple. Ajax. Parce que vous n'êtes pas spécifique à propos de ce que vous avez exactement besoin d'être fait après que la boîte de sélection change, je ne peux que vous indiquer quelques ressources et proposer la suite:
onchange
événement a été tiré) - par exemple. Utiliser . Post () = fonction jQuery,json_encode()
en PHP, mais HTML RAW est également correct) et utilisez-le dans JS,Il peut y avoir plusieurs façons de faire cela. Celui que je préfère, utilise MooTools
Request
objet.
Par exemple, vous avez un script appelé ajaxCallable.php
, qui reçoit à travers $_REQUEST
variables certains paramètres, alors vous faites (au côté JavaScript):
function check_year_event(year_id, event_id) {
var year = document.getElementById(year_id).value;
var event = document.getElementById(event_id).value;
var myRequest = new Request({method: 'get', url: 'ajaxCallable.php'});
myRequest.send('yearVar=' + year + '&eventVar=' + event);
}
ensuite, votre ajaxCallable.php
sera en mesure d'accéder aux variables: $_REQUEST['yearVar']
et $_REQUEST['eventVar']
.
Je travaillais sur un projet cette semaine et j'ai trouvé un moyen facile d'appeler un script PHP d'un onclick (). Ça va comme ça.
Je définis un appel onglick () appelé dans ce cas sur un div appelé "la facebaritem" ...
<a><div class="sidebarItem" onclick="populate('#content', 'help', 'open')">Click me for new content</div></a>
Ensuite, j'ai fait une simple fonction JS qui charge un fichier externe dans le conteneur cible ...
function populate($container, $page, $item){
$($container).load('cyclorama/includes/populate.php?$page='+$page+'&$item='+$item);}
Ensuite, j'écris un petit fichier PHP qui obtient l'article $ page et $, interroge la base de données et renvoie le nouveau contenu.
<?php
$page = $_GET['$page'];
$item = $_GET['$item'];
$getContentQuery = "SELECT content FROM myTable WHERE page='".$page."' AND item='".$item."'";
$content = mysql_query($getContentQuery, $db);
$myContent = mysql_fetch_assoc($content);
echo $myContent['content'];?>
Le script php résonne le nouveau contenu et il est chargé dans le conteneur. Je pense qu'il y a beaucoup d'endroits que cela pourrait servir. Je serais intéressé à trouver s'il y a des raisons évidentes de ne pas le faire. Il n'utilise pas AJAX juste JavaScript et PHP mais il est rapide et relativement facile.