Quello che mi sembra strano è che abbia funzionato finora. In effetti fai un group by su un campo assente dalla query. Forse è questo che produce l'errore quando non ci sono più doppioni.
Il più semplice sarebbe di fare il controllo prima dell'inserimento dei dati.
codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled</title> <script language="JavaScript" type="text/javascript"> <!-- function svuota(aSelect) { //---------- Prima svuoto tutti valori tranne quello selezionato nella select selezionata value = aSelect.value; numElement = aSelect.length; var i = 0; for (j=numElement-1;j>=0;j--) { curOption = aSelect.options(j); if (curOption.value != value) { aSelect.remove(j); } // if (curOption.value != value) } // for (j=numElement-1;j>=0;j--) //---------- adesso per ogni select rimuovo il valore scelto var k = 0; for (k=1;k<=9;k++) { comboName = "combo"+k; svuota2(aSelect,comboName); } // for (k=1;k<=9;k++) } // function svuota(unValore) function svuota2(aSelect,selectDaSvuotare) { if (aSelect.id == selectDaSvuotare) { return; } // if (aSelect.id == selectDaSvuotare) var objSelectDaSvuotare = document.getElementById(selectDaSvuotare); numElement = objSelectDaSvuotare.length; for (j=numElement-1;j>=0;j--) { curOption = objSelectDaSvuotare.options(j); if (curOption.value == aSelect.value) { objSelectDaSvuotare.remove(j); } // if (curOption.value == aSelect.value) } // for (j=numElement-1;j>=0;j--) } // function svuota2(aSelect,selectDaSvuotare) //--> </script> </head> <body><? //---------------- Soltanto se il tasto il cui nome è sublit con il valore "invio" è stato cliccato if ($submit == "invio") { //--------------- controllo che un numero sia presente una volta sola // inserendo i valori di ciascun combo in un array $arrControllo = array(); for ($i=1;$i<=9;$i++) { $nameCombo = "combo$i"; $arrControllo[] = $$nameCombo; } // for ($i=1;$i<=9;$i++) //--------------- Adesso riordino l'array asort($arrControllo); //--------------- Adesso copio l'array in una stringa $lista = implode("", $arrControllo); //--------------- Se la lista è <> da 123456789 allora c'è un errore if ($lista != "123456789") { print "errore "; } else { print "nessun errore "; } // if ($lista != "123456789") print $lista; exit; } // if ($submit == "invio") ?> <form action="test195.php" method="post"><? //--------------- Inizio bufferizzazione per creare le 9 combo ob_start() ?> <select id="pippo" name="pippo" onchange="svuota(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select><? //--------------- Inserisco il codice bufferizzato nella variabile $a $a = ob_get_contents(); ob_end_clean();?> <? //--------------- Stampo a video le nove combo rimpiazzando l'id e il nome for ($i=1;$i<=9;$i++) { print str_replace("pippo","combo$i",$a)."\n"; } // for ($i=1;$i<=9;$i++) ?> <input type="submit" value="reset" name="submit"><input type="submit" value="invio" name="submit"> </form> </body> </html>

Rispondi quotando