value zaten işaretlenince gelecek, otomatikmen value verilirse checkboxın anlamı kalmaz.

öncelikle şunu belirteyim kullandığn yol güzel bir yol değil, neden dersen,

$gelen=$_POST['a'];
dediğinde gelen değişkeni bir dizi oluyor, ve dizi de sadece senin işaretlediklerin çıkıyor,
3. kutu 5. kutu ayrıı yok, senin sadece 5. yi işaretlersen yine 1. işaretlenmiş gibi davranacaktır.



o yüzden,

<input type=\"checkbox\" name=\"a[]\" value=\"\"> satırındaki name e, ya array dışında bir değişken ver, ya da illa dizi ile işlem yapmak isterim diyorsan
a[] yerine, sıra belirt, yani
<input type=\"checkbox\" name=\"a[0]\"><br>
<input type=\"checkbox\" name=\"a[1]\"><br>
<input type=\"checkbox\" name=\"a[2]\"><br>

şeklinde olsun, o zman onay.php de istediğin işlem doğru çalışmaya başlar
$a=$_POST[a];
while($i<count($a)) {
$i+=1;
if($a[$i]=="on")
$guncelle = mysql_query (" update dosya set onay='1' WHERE id='$a[$i]' ");

sorgusu o zman çalışacaktır