Ciao !!!
ho letto solo ora ma cerchero' di recuperare velocemente.
Il tuo esempio e' sicuramente funzionante ma anche un po' complesso, io sono veramente poco pratico
di PHP ma se si tratta di fare cose semplici ci arrivo peor' sono a zero con programmazione ad oggeti
javascript ed ajax.
Ad essere sincero avevo presto questa strada. Un po' piu' semplice ed alla mia portata.
In pratica ho trovato un esempio abbastanza compensibile che mi aveva funzionato e lo
stavo adattando alla mia esigenza. Te lo posto dimmi tu se puo' andare bene.
<?php
global $wpdb;
// carica tutte le gare
$gare = $wpdb->get_results("SELECT id,nome,luogo,data FROM ".$wpdb->prefix."gpaltvt_gare order by data");
$anni = $wpdb->get_results("SELECT DISTINCT(date_format(`data`, '%Y')) AS id FROM ".$wpdb->prefix."gpaltvt_gare order by id");
?>
<!DOCTYPE html>
<html>
<head>
<script>
function populate(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
// da qui in poi lo devo mettere a punto i dati hard code devo sostituirli con quelli letti da DB e che sono nell'arry anni
// stavo solo cercando di fare qualche test per capire la logica del programma che avevo trovato.
if(s1.value == "2016"){
// con la riga seguente ho avuto un problema con il carattere |
var optionArray = ["|","<?php foreach ( $gare as $gara ) { echo $gara->id;echo chr(124);echo $gara->nome; } ?>" ];
} else if(s1.value == "2017"){
// la riga che segue deve essere cambiata per visualizzare solo le gare 2017 ma qui non ci sono ancora
// arrivato
var optionArray = ["|","avenger|Avenger","challenger|Challenger","cha rger|Charger"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
</head>
<body>
<h2>Visualizza Classifica
Anno:
<select id="slct1" name="slct1" onchange="populate(this.id,'slct2')">
<option value=""></option>
<?php
foreach ($anni as $anno)
{
$year=$anno->id;
echo "<option value=".$year.">".$year."</option>";
}
?>
</select>
Gara:
<select id="slct2" name="slct2"></select>
<hr />
</body>
</html>
cosa ne pensi ????
in pratica all'interno della funzione populate stavo cercando di inserire questo:
if(s1.value == "2016"){
var optionArray = ["|","<?php foreach ( $gare as $gara ) { if ( preg_match($year1,$gare->data) ) { echo $gara->id;echo chr(124);echo
$gara->nome; } } ?>" ];
in pratica anche se s1.valure == "2016" e' solo una prova e deve essere cambiato quello che segue invece potrebbe essere corretto come logica , ovvero se year1, adesso assegnato a mano a 2016, e' contenuto in data lo visualizza. questa e' l'idea ma non funge ,penso di avere problemi con la sintassi !
Grazie mille per il tuo aiuto.