Avatar billede zehrid Nybegynder
21. april 2005 - 12:40 Der 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">&nbsp;'.$db2->f(navn).'<br>';            else
    print '<input type="checkbox" name="fejlaarsagid[]" value ="'.$db2->f(id).'">&nbsp;'.$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 :)
Avatar billede knudx Nybegynder
21. april 2005 - 13:10 #1
Hvad er forskellen på $db og $db2?
Og indeholder din variabel $array nogen array? Hvis ikke, så giv den et andet navn, ellers er det forvirrende...

Skal du udskrive en række checkboxe, skal der vel stå noget i retning af

while ($db->nextrecord()) {
  print '<input type="checkbox" name="fejlaarsagid[]" value ="'.$db2->f(id).'"';
  if ($db->f('id')==$db2->f('id')) print ' checked="true"';
  print '>&nbsp;'.$db2->f(navn).'<br>';
}
?!?
Avatar billede knudx Nybegynder
21. april 2005 - 13:16 #2
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??
Avatar billede zehrid Nybegynder
21. april 2005 - 13:26 #3
jaa ! præcis :-)
Avatar billede knudx Nybegynder
21. april 2005 - 13:40 #4
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"':'').'>&nbsp;'.$fejl['navn'].'<br>';

Håber ikke der er for mange syntaxfejl...
Avatar billede zehrid Nybegynder
21. april 2005 - 13:42 #5
jeg har fået det til at virke :-)

$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 '>&nbsp;'.$db2->f(navn).'<br>';                                    }

men du må gerne få points knudx !
Avatar billede zehrid Nybegynder
21. april 2005 - 13:55 #6
den virker også (med små rettelser ) !!!
Avatar billede knudx Nybegynder
23. april 2005 - 00:47 #7
Hejsa

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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester