Debes de tener siempre pero siempre presente que PHP se ejecuta en el lado del servidor y JavaScript en el del cliente. Los eventos del DOM (Modelo de Objetos del Documento) no pueden ser detectados desde el lado del servidor; solo desde el lado del cliente.
Lo que te sugiero hacer es realizar la asignación del valor mediante una petición asíncrona (AJAX), para que así tengas a ambos lenguajes por separado, obteniendo un código más limpio, y los cambios en el lado del cliente generen nuevos valores en el lado del servidor.
Un pequeño ejemplo:
Código Javascript
:
Ver originaldocument.querySelector("#foo").addEventListener("change", function(){
var ajax = new XMLHttpRequest(), valor = this.value;
ajax.open("GET", "ejemplo.php?variable=" + valor, true);
ajax.send();
ajax.addEventListener("load", function(){
if (this.status == 200){
console.log("La asignación del nuevo valor se realizó satisfactoriamente");
}
}, false);
ajax.addEventListener("error", function(){
console.log("Ha ocurrido un error: " + this.statusText);
}, false);
}, false);
Código PHP:
Ver original//ejemplo.php
$bar = $_GET['variable'];
Cuando se elija un valor del combo, se ejecutará una petición asíncrona en la que se enviará el valor seleccionado hacia el archivo "ejemplo.php" mediante el método GET. Este lo recibe y cuando esta operación se haya completado o haya ocurrido un error, se mostrará un mensaje en la consola del navegador advirtiendo de esto al usuario.
Más información:
AJAX.
Un saludo