Scusate ma avevo perso anche io questa discussione, il sistema di notifica del forum dopo un po' mi da i form come già letti, anche se non è vero per me. Comunque...
Ora ne sparo un'altra! Niente Ajax vai di JSON
Può sembrare una sboronata ma non lo è.
JavaScript Object Notification è un componente del core di PHP dalla versione 5.2 e quindi utilizzabile facilmente, lato PHP ha solo tre funzioni
json_encode() json_decode() json_last_error().
Lato Javascript è un po' più complesso ma tutto sommato non difficile, in fondo dobbiamo solo chiedere al php di darci una stringa formattata con i dati in uscita dal database e poi tramite un ciclo formare le opzioni per la select.
Parti dalla prima select, quella con i prodotti, un utente fa click su quella e parte la richiesta al php che risponde con una stringa formattata in json che letta dallo stesso javascript scrive i giusti campi option nella seconda select e così via.
Per la stringa in PHP è facile, letto il database relativamente alla domanda, per esempio domanda = azoto, risposta: [1]:flangiato,filettato[2]:500,800 valori presi a caso, non conosco minimamente la materia, ma non importa il concetto di base dovrebbe essere questo.
PHP:
// Ora il php, letto il database risponde:
/*
Convert PHP array to JSON
--
Using:
- on server side: echo(arr2json([PHP array]))
- on client side(JavaScript): var obj = eval('(' + [XMLHTTPRequest.responseText] + ')');
*/
function arr2json($arr){
foreach($arr as $k=>&$val) $json[] = $k.':'.php2js($val);
if(count($json) > 0) return '{'.implode(',', $json).'}';
else return '';
}
function php2js($val){
if(is_array($val)) return arr2json($val);
if(is_string($val)) return '"'.addslashes($val).'"';
if(is_bool($val)) return 'Boolean('.(int) $val.')';
if(is_null($val)) return '""';
return $val;
}
?>
L'esempio l'ho preso dalle pagine del PHP, ovviamente non so se andrà bene al tuo caso, comunque non conoscendo ancora la struttura del tuo database, gli esempi fatti sono solo esempi appunto.
Sulla questione dell'accessibilità relativa al javascript in parte concordo con borgo, ma qui bisogna fare una scelta di campo.
O si implementano funzionalità per il quale serve il javascript e basta, oppure si torna ad un vecchio metodo, ovvero nel tuo caso tre pagine, ognuna col suo form, la prima per la prima select che chiama la seconda che chiama la terza che da anche la risposta.
Un po' un casino, meglio il Web 2.0
Dipende anche dal target dell'utenza, se ho capito bene sono prodotti che saranno visualizzati da installatori, non dai semplici clienti di un ferramenta, se ho capito bene un'utenza con sistemi operativi eterogenei ma tutti con browser che usano javascript, magari qualcuno avrà ancora internet explorer 5, ma non è certo un problema.
Per borgo
vedo dal tuo secondo esempio, quello con nome e cognome che ancora usi le label nel modo errato