Avatar billede sotec Nybegynder
31. august 2000 - 16:18 Der er 21 kommentarer og
1 løsning

Check bokse skal sende værdi uden at være chekkede?

Jeg har 24 checkbokse som er sat op i en form hvor man skal vælge hvilke kataloger man vil have tilsendt.

Problemet er at jeg tager form output\'et og gemmer dette i en kommasepareret tekstfil på serveren, for senere at kunne inportere resultaterne i en off-line relationsdatabase.
Der er 24 checkbokse, og hvis man checker 1 eller flere så kommer værdien rigtigt nok frem, men da min database skal bruge en værdi fra hver box går der lidt ged i den.

Er det mulig at sende en værdi f.eks. \"0\" eller \"1\" selvom boksen ikke er chekked?
Avatar billede sone Nybegynder
31. august 2000 - 16:20 #1
Ikke via HTML - så skal du gøre det serverside.
Avatar billede olebole Juniormester
31. august 2000 - 16:36 #2
<ole>
Jo, det kan du gøre med JavaScript. Jeg er på vej ud af døren, men vil gerne lave det senere.
/Vh
</bole>
Avatar billede styrmand Nybegynder
31. august 2000 - 17:08 #3
I HTML kan det løses ved at erstatte checkboksene med raidiobuttons, og angive følgende for hvert katalog:
<Input Name=\"Kat1\" type=\"Radio\" Value=\"1\" Checked><Input Name=\"Kat1\" type=\"Radio\" Value=\"0\">
Avatar billede styrmand Nybegynder
31. august 2000 - 17:09 #4
Ups! raidiobuttons=radiobuttons
Avatar billede sotec Nybegynder
31. august 2000 - 17:17 #5
Ja, men med radiobuttons kan man ikke vælge (afkrydse) flere kataloger på én gang.
Avatar billede styrmand Nybegynder
31. august 2000 - 17:29 #6
Jo, du opretter bare et sæt for hvert katalog og varierer nameproperty. Således:
<Input Name=\"Kat1\" type=\"Radio\" Value=\"1\" Checked><Input Name=\"Kat1\" type=\"Radio\" Value=\"0\">
<Input Name=\"Kat2\" type=\"Radio\" Value=\"1\" Checked><Input Name=\"Kat2\" type=\"Radio\" Value=\"0\">
o.s.v.
Så kan man vælge både katalog1 og katalog 2.
Avatar billede sotec Nybegynder
31. august 2000 - 18:08 #7
Ja, men så får jeg dobbelt så mange og der er i forvejen 24!!!
Avatar billede styrmand Nybegynder
31. august 2000 - 18:23 #8
Du vil kun få 24 parameterværdier. Radiobuttons er bygget med det formål, at man kan vælge mellem  2 (eller flere) værdier.
Checkbokse er er beregnet til at man kan vælge eller undlade at vælge.
Avatar billede olebole Juniormester
01. september 2000 - 03:01 #9
Du kan gøre sådan:

<html>
<head>
<script language=\"JavaScript\">
<!-- 
function mySend(which) {
    astr = \"\";
    for (i=0; i<which.length; i++) {
        if (which.elements[i].type == \"checkbox\") {
            astr += (which.elements[i].checked == true)? \"1,\" : \"0,\";
        }
    }
    astr = astr.substring(0,astr.length-1); // Sletter sidste komma
    document.f2.a.value = astr;
    alert(astr);
    return true;
}
//-->
</script>
</head>
<body>
<form name=\"f\">
    <input type=\"checkbox\" name=\"nr1\"><br>
    <input type=\"checkbox\" name=\"nr2\"><br>
    <input type=\"checkbox\" name=\"nr3\"><br>
    <input type=\"checkbox\" name=\"nr4\"><br>
    <input type=\"checkbox\" name=\"nr5\"><br>
</form>

<form name=\"f2\" onsubmit=\"return mySend(document.f);\">
    <input type=\"hidden\" name=\"a\">
    <input type=\"submit\" value=\" send \">
</form>
</body>
</html>

Alert\'en er kun så du kan se formateringen - skal slettes ved rigtig brug!
Denne løsning giver dig én variabel \'a\' med hele den kommaseparerede streng. Du kan også formatere som rigtigt array med gåseøjne ved at udskifte \'if\' sætningen med:

        if (which.elements[i].type == \"checkbox\") {
            astr += (which.elements[i].checked == true)? \"\\\"1\\\",\" : \"\\\"0\\\",\";
        }

Formen \'f2\' er din \'rigtige\' form. \'f\' er kun en \'hjælpe-form\'. Hvis du ønsker en anden formatering, kan du lave den om i \'if\' sætningen.
/Vh
Avatar billede sotec Nybegynder
01. september 2000 - 13:30 #10
Ole, jeg vil gerne indsætte din løsning i min egen form, men hvor meget kan jeg undvære i din løsning hvis jeg bare skal rette mine egne checkboxe og indsætte javascriptet i min head?

Jeg har i forvejen noget validering af andre felter men det burde ikke give anledning til problemer.  Derudover kalder jeg et PHP script som \"motor\" for min form.  Dette script kommaseparere inputs og skriver det hele i en fil.

Kan jeg ikke droppe \"hjælpe-formen\"??
Avatar billede olebole Juniormester
01. september 2000 - 13:36 #11
Prøv at sende en URL...evt. til ole@webtile.dk så skal jeg se på det iaften og lave en løsning. Det kan sikkert laves på mange forskellige måder  ;o)
/Vh
Avatar billede sotec Nybegynder
01. september 2000 - 14:59 #12
Hmmm, Jeg har været nødt til at barbere lidt i dit script fordi den meldte om \"Length er ikke et objekt\"

Det med at slette det sidste komma er heller ikke aktuelt da jeg bruger PHP til at kommaseparere.

Det virker nogenlunde nu, men i stedet for at sende et 1 eller 0 så skriver den \"on\" i filen.
og den skriver kun når der er checkkedm så hvis jeg krydser halvdelen af de 24 så får jeg kun 12 gange \"on\" og i den rækkefølge kan min database ikke genkende felterne.

<script language=\"JavaScript\">
<!-- 
function mySend(which) {
    astr = \"\";
    for (i=0; i<which; i++) {
        if (which.elements[i].type == \"checkbox\") {
            astr += (which.elements[i].checked == true)? \"1\" : \"0\";
        }
    }


}
//-->
</script>
Avatar billede olebole Juniormester
01. september 2000 - 15:30 #13
Så har du ikke skrevet rigtigt af.
\'which\' referer til det du skriver i parentesen i dit kald - \'mySend(document.f);\'. Selvfølgelig har formen \'f\' en \'length\'.
Vi kommer ikke videre på denne måde. Send en URL eller post den her, så skal jeg nok hjælpe.
/Vh
Avatar billede styrmand Nybegynder
01. september 2000 - 15:49 #14
Radiobuttons... :-)
Det forenkler problemet og lever op til brugernes forventninger.
Avatar billede olebole Juniormester
01. september 2000 - 15:59 #15
Nej, styrmand. Radiobuttons er helt ubrugelige i denne sammenhæng!
Hvordan vil du - hvis du fortryder at du har klikket på en knap - ændre det uden at resette hele formen? Det er da surt at skulle til at gå 24 knapper igennem endnu engang, bare fordi man kom til at klikke på den sidste...som man altså ikke ville have klikket?
Radiobuttons er lavet til at sidde i en gruppe, hvor man ønsker at vælge én af mulighederne. DERFOR hedder de \'radiobuttons\'! De virker ligesom de gamle trykknapper på et radioapparat. Når du trykker på én, springer de andre ud. Har du kun én knap, kan du derfor aldrig få den ud igen, hvis den først er trykket ind.
Det komplicerer problemet og pisser brugeren af!
/Vh
Avatar billede olebole Juniormester
01. september 2000 - 16:02 #16
Bevares, man kan have dem i grupper af to, men det logiske er da at have en lille firkant i hvilken man krydser af. Det er standard fra alt trykt materiale, der kan det samme. Hvorfor have én standard på nettet, som ikke stemmer overens med, hvad men oplever i \'den virkelige verden\'?
Avatar billede styrmand Nybegynder
01. september 2000 - 16:14 #17
Med hensyn til radiobuttons, kan de altså sagtens plavceres i 24 valggrupper, som er akurat lige så enkle at betjene, som checkboxe. Men prøv at kigge på mit eksempel.
Med hensyn til det generelle så gælder det, at  når man skal foretage et valg/fravalg, er det nødvendigt at forholde sig til 2 muligheder. Altså Radiobuttons.
Checkbokse, anvendes (generelt) til, alene at foretage et tilvalg. Netop derfor, har de ingen \"ikke valgt værdi\".
Jeg er ikke sikker på, hvad der er tilfældet her, men jeg tænker også på, når nu sotec, om 3 måneder måske, skal til at forandre funktionaliteten af denne side. Så gør han sig selv en bjørnetjeneste, ved at anvende en teknik, som kræver andres hjælp. Derfor er de enkle altid at foretrække.
Men designkrav, kan da ofte tvinge folk til mere besværlige løsninger.
Avatar billede olebole Juniormester
01. september 2000 - 18:31 #18
Manden skrev: \"Jeg har 24 checkbokse som er sat op i en form hvor man skal vælge hvilke kataloger man vil have tilsendt.\"...man krydser da de kataloger af, man ønsker tilsendt. Det ville være ret bøvlet både at skulle vælge, hvilke kataloger, man ønsker tilsendt samtidig med at skulle vælge, hvilke man ikke ønsker tilsendt.
Besværet skal ALTID ligge hos programmøren...ALDRIG hos brugeren!  Det er det, der er kunsten for os...eller burde være det  ;o)
Kan programmøren ikke \'fylde bukserne ud\', må han blive dygtigere - eller søge hjælp hos kollegaer...ikke lægge byrden over på brugerene for at \'snuppe et hjørne på sin egen vej til banken\'.
Avatar billede styrmand Nybegynder
01. september 2000 - 19:20 #19
Det er som tidliger nævnt ikke nødvendigt at fravælge. Jeg tror du skal afprøve mit eksempel, for at forstå, hvordan radio-knapper fungerer.
Jeg er enig med dig i at brugerne er vigtige. Men  et af de største problemer i branchen, vedligeholdelse og udbygning af eksisterende programmer, syldes desværre alt for ofte kompliceret og uigennemskuelig kodning.
Problemet opstår, når velmenene programmører, ikke har ordentlig styr på det grundlag som de arbejder ud fra og derfor danner unødig og ofte kompliceret kode, for at løse noget, som faktisk slet ikke er et problem.
Jeg har også tidligere sagt, at hvis sotec er af den opfattelse, at problemet skal løses med afkrydsningsfelter, så er det sådan. (Det er trods alt ham, som står over for brugerne).
Men dermed ikke sagt at det er det bedste valg, set over et længere tidsperspektiv.
Avatar billede olebole Juniormester
01. september 2000 - 20:12 #20
**  ROTFLMAO  **
Jeg tror ikke jeg behøver teste dit eksempel for at vide, hvordan radiobuttons fungerer. Jeg sætter dog stor pris på din vilje til at undervise mig i HTML for pygmæer!  :oD

Det er banal formular-skik at lave den slags valg med check-bokse! Gå ind i dine indstillinger her på Eksperten. Find check-boksene under \'Kategorier du abonnerer på \'. Det kunne også være lavet med radiobuttons, men det ville dog være mere end middelsvært tåbeligt! Eksemplet er fuldstændig analogt: \"Hvilke mails / kataloger ønsker du tilsendt?\"
DU har et problem...nemlig det, at du tænker i kode - og KUN kode. Derfor er det heldigvis aldrig programmører, der designer interfaces på et ordentligt webbureau. De er ansat til at kode det, designerne har forstand på at lave. Det var noget andet i computerens barndom - og de interfaces ønsker ingen vel tilbage.
Problemet handler ikke om programmering, men om kognitiv psykologi. Læren om, hvordan man aflæser og forstår en webside.

Hermed er dette spørgsmål slut for mit vedkommende  ;o)
/Vh
Avatar billede styrmand Nybegynder
02. september 2000 - 08:28 #21
Eksperten er et forum, hvor man kan lære af de spørgsmål og svar, som bliver givet. Derfor er det dog en besynderlig reaktion, når du bliver sur over noget, som du i realiteten burde have givet point for.
Du takker mig ironisk for \"HTML undervisning for Pymæer\", fordi jeg viser dig, hvordan en radio-button fungerer.
Du viser i dine kommentarer til mine svar, at du ikke forstod, hvordan man kan opbygge flere grupper af radiobuttons. Det er da fuldstændig legitimt, at man ikke nødvendigvis ved alt om alt. Men derfor er det da ikke nødvendigt at reagere på den måde.
Jeg tror ikke vi er uenige omkring det vigtige i at opbygge en velfungerende brugergrænseflade. Men en der er altså forskel på hvordan en sådan bør opbygges, det afhænger jo bl.a. meget af målgruppen. Jeg ved ikke hvem sotec´s målgruppe er, det gør du måske, men radiobuttons kan altså , set ud fra et rent teknisk synspunkt, løse hans oprindelige problem med at få 0 og 1 værdier.
Endelig så er kognitiv psykologi ikke \"læren om, hvordan man aflæser og forstår en webside\".
Kognitiv psykologi dækker Perception (iagtagelse, opfattelse, bearbejdning), erkendelse, begrebsdannelse og tænkning. Det er en ikke en edb-relateret videnskab, som, man bl.a. kan anvende til design af brugergrænseflader.
Avatar billede olebole Juniormester
02. september 2000 - 10:14 #22
Jeg bliver absolut ikke sur...jeg undres bare såre over, du vil gøre dig selv til grin. Check mine besvarelser og se, hvad jeg ved om radiobuttons eller HTML i almindelighed - inden du spiller Kloge-Åge  :oD
Jeg er specifikt blevet undervist grundigt i kognitiv psykologi, så jeg ved godt, hvad begrebet dækker...jeg gik ud fra, vi talte om websites, men den gren kan selvklart anvendes på et hav af emner og er ganske rigtigt ikke udviklet med henblik på WWW.
Jeg må gå ud fra sotecs målgruppe er mennesker, som de er flest...derfor!  ;o)
Nu KAN jeg virkelig ikke gøre mere for at fremme din forståelse af problematikken!
/Vh
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