21. april 2005 - 12:40Der er
6 kommentarer og 1 løsning
checkboxe i php
hej. koden ser således ud: ... $db->query("SELECT * FROM fejl_mastertegning, fejl_mastertegning_aarsager WHERE fejl_mastertegning.id = '$id' AND fejl_mastertegning_aarsager.fejlmastertegningid = '$id'");
$db->next_record();
$array = $db->f(fejlaarsagid); if ($db2->f(id) == $array) print '<input type="checkbox" name="fejlaarsagid[]" value ="'.$db2->f(id).'" checked="true"> '.$db2->f(navn).'<br>'; else print '<input type="checkbox" name="fejlaarsagid[]" value ="'.$db2->f(id).'"> '.$db2->f(navn).'<br>';
Problemet er at variablen $array kan have flere forskellige værdier samtidig(derfor har jeg kaldt den for array i denne tråd :-)), hvis brugeren har checked flere checkboxe! men hvis jeg henter oplysningerne fra databasen i tilfælde ar redigering, så bliver kun den ene checkbox "checked" :( hjælp mig :)
aah, nu tror jeg jeg fatter det.. Du har en liste over eksisterende mulige fejlårsager, og så vil du lave en række checkboxe hvor brugeren kan associere sin fejlmelding med én eller flere årsager, samtidig med at de årsager der allerede er markeret (i databasen) til at hænge sammen med fejlen, skal have deres checkboxe checked="true" Er det sådan??
så du har en query først som henter alle de forskellige fejlårsager ind i $db2?
Det nemmeste er vel at læse dem ind i en Array, og så køre igennem $db en gang, og så igen gennem $db2 for at skrive ud... Det giver 3 loops i stedet for 1, men det burde virke:
$fejlkilder = Array(); while ($db2->nextrecord()) $fejlkilder[$db2->f('id')]=Array('navn'=>$db2->f('navn')); while ($db->nextrecord()) $fejlkilder[$db->f('id')]['ischecked']=1; foreach ($fejlkilder as $fejlid=>$fejl) print '<input type="checkbox" name="fejlaarsagid[]" value ="'.$fejlid.'"'.((isset($fejl['ischecked']))?' checked="true"':'').'> '.$fejl['navn'].'<br>';
$db2->query("SELECT * FROM fejlaarsag WHERE fejlaarsagtypeid = '$fejlaarsagtypenavn'"); while ($db2->next_record()){ print '<input type="checkbox" name="fejlaarsagid[]" value ="'.$db2->f(id).'"'; $db->query("SELECT * FROM fejl_mastertegning_aarsager WHERE fejl_mastertegning_aarsager.fejlmastertegningid = '$id'");
while ($db->next_record()){ if ($db2->f(id) == $db->f(fejlaarsagid)) print 'checked="true"'; } print '> '.$db2->f(navn).'<br>'; }
Hvis det er det sidste du har skrevet som virker for dig, så nægter jeg at modtage pointene, for det fostår jeg ikke. Hvis du har brugt noget fra mit forslag (som er langt fra ideelt kan jeg se nu - men da du er kommet videre så...) vil jeg gerne...
Cheers ;^J
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.