Me toca repetir porque cada vez que edito me manda a Capcha :\
Prueba que pasaria si tu PHP fuera esto:
Código PHP:
Ver original<?php
/*
@author Pablo Bozzolo (italico76)
*/
$id_cliente = isset($_GET['clientes']) ?
$_GET['clientes'] : null;
// simulo DB
$clientes = [];
$clientes[12]['nombre'] = 'Juan Perez';
$clientes[12]['ubicaciones'] = [101=>'Rosario',502=>'Buenos Aires'];
$clientes[34]['nombre'] = 'Mery Pinto';
$clientes[34]['ubicaciones'] = [150=>'Cordoba',701=>'Santa Fe',502=>'Buenos Aires'];
$out = "<select name=\"ubicaciones\" id=\"ubicaciones\" size=\"3\">\n";
$cliente = $clientes[$id_cliente];
$ubicaciones = $cliente['ubicaciones'];
foreach ($ubicaciones as $id_ubicacion => $ubicacion)
$out .= "\t<option value=\"$id_ubicacion\">$ubicacion</option>\n";
$out .= '</select>';
echo $out;
Creo hay formas mas eficientes..... como enviar los datos y construir el HTML desde el cliente... pero esta es la mas facil
.. y asi como esta no te va a funcionar lo que sugiero....... pero el formulario seria algo como:
Código PHP:
Ver original<form action="clientes_controller.php?action=listar" name="frm" id="frm">
<div id="selecciones">
<div id="containerSel1">
<SELECT name="clientes" id="clientes" size="3">
<?php foreach ($clientes as $id => $cliente): ?>
<option value="<?= $id ?>"><?= $cliente['nombre']; ?></option>
<?php endforeach; ?>
</SELECT>
<div>
<div id="outputAjax">
<SELECT name="ubicaciones" id="ubicaciones" size="3">
</SELECT>
</div>
</div>
</form>
EDIT: te aconsejo uses la funcion Ajax() de Alexis88 ... finalmente es la mejor opcion