un approccio basilare per capire la logica...
codice:
<?php
$loc['r'] = $_POST['regione'];
$loc['p'] = $_POST['provincia'];
$loc['c'] = $_POST['comune'];
?>
...
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select name="regione">
<?php
// cicli sulle regioni e se loc['r'] != '' allora metti l'opzione a selected
?>
</select>
<?php if ($loc['r'] != '') { ?>
<select name="provincia">
<?php
// cicli sulle province nel DB WHERE regione = loc['r'] e
se loc['p'] != '' metti l'opzione a selected
?>
</select>
<?php if ($loc['p'] != '') { ?>
<select name="comune">
<?php
// cicli sui comuni nel DB WHERE regione = loc['r'] AND provincia = loc['p']
e se loc['c'] != '' allora metti l'opzione a selected
?>
</select>
<?php } // fine if ($loc['p'] != '') ?>
<?php } // fine if ($loc['r'] != '') ?>
</form>