Avatar billede lsskaarup Nybegynder
16. marts 2005 - 12:15 Der er 8 kommentarer og
1 løsning

Chechbox ændre indhold i andet felt

Dette er nok et meget simpelt spørgsmål, men jeg kan ikke lige skoven for bare træer lige nu... ;-)

Jeg har en checkbox, som i et andet felt skriver enten dagsdato eller tømmer feltet. Koden ser ud som følger:

<?php
if ($res['r539'] == '1') {
    echo '<input type="checkbox" name="r539" value="1" checked onClick="ds.r540.value='."'". '' . "'".';"></td>';
} else {
    echo '<input type="checkbox" name="r539" value="1" onClick="ds.r540.value='."'". date('d-m-Y') . "'".';"></td>';
}
?>

Først tjekker jeg på om feltet er sat i forhold til db'en, og checker det så alt efter hvad det er. Fjerner jeg markeringen på checkboxen, så bliver dagsdato også fjernet. Problemet er så hvis jeg sætter markeringen igen, så får jeg ikke dagsdato skrevet igen. Hvilket jo er klart nok, får feltet var jo sat fra starten af i henhold til koden.

Men hvordan skal koden være, så jeg via checkboxen kan tilføje/fjerne dagsdato, samtidig med at checkboxen bliver vist, som den er, altså sat elelr ikke sat?
Avatar billede barklund Nybegynder
16. marts 2005 - 12:20 #1
Du kan da bare indsætte en ' mellem to '' ved at escape den som \':

Men derudover er det:

<?php
$checked = $res['r539'] == '1' ? "checked=\"checked\"" : "";
echo '<input type="checkbox" name="r539" value="1" $checked onClick="ds.r540.value=this.checked ? \''.date('d-m-Y').'\' : \'\';"></td>';
?>

Tror jeg bare det hedder :)

--
Morten Barklund
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 12:54 #2
Ja, næsten nu gemmes checkboxen bare ikke.

En anden ting, hvordan er det lige med de der tegn (?, :...), jeg kan sgu ikke huske helt hvad de betyder.
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 12:58 #3
Og dog den gemmes godt nok, men bliver så ikke vist som sat
Avatar billede barklund Nybegynder
16. marts 2005 - 13:04 #4
Det er et udtryk, der tager den generelle form:

betingelse ? hvis_true : hvis_false

Først evalueres betingelse, er denne sand - Boolean(betingelse) === true - evalueres og returneres hvis_true, ellers evalueres og returneres hvis_false.

Det er en komprimeret if-betingelse - conditional.

Mht. dit problem, så er jeg ikke helt med på, hvad du siger problemet er.

Altså, den markerer ikke boksen som 'checked' selvom den er sat til true i databasen?

Prøv med:

$checked = $res['r539'] == '1' ? "checked" : "";

Da jeg læste, at HTML-browsere ikke nødvendigvis tolker den eksplicitte boolean-tildeling korrekt.

--
Morten Barklund
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 13:12 #5
Okay, det tænkte jeg nok, men var ikke helt sikker på det, det var nok fordi du samtidig sætter resultatet lig med $checked.

Nå men jeg fandt selv fejlen. Jeg kunne se i kildekoden, at $checked blev udskrevet som $checked og ikke som variabel-indholdet. Så jeg tilføjede bare '. $checked .' og så virker det. Jeg tror det må være fordi, echo med '' laver decideret html output, så det lige skulle stoppes, hente variablen, og startes igen.

Men tak for hjælpen
Avatar billede barklund Nybegynder
16. marts 2005 - 13:46 #6
Ja, sådan gør PHP altid mellem enkelt-quotes - der bliver $-variabler aldrig indsat - min fejl :)

--
Morten Barklund
Avatar billede barklund Nybegynder
16. marts 2005 - 13:47 #7
Og et svar :)
Avatar billede barklund Nybegynder
16. marts 2005 - 17:13 #8
Og tark :)
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 17:17 #9
selv tak
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