Avatar billede public2 Nybegynder
30. oktober 2009 - 14:33 Der er 5 kommentarer og
1 løsning

Simpel opdater database med checkbox

Hej eksperter,

jeg har noget der nok er et simpelt spørgsmål og det er lidt pinligt, for jeg har gjort det før, men er pludselig kommet i tvivl.

Jeg har en checkbox i et admin felt der siger:
Hvis der er hak i checkboxen så skal værdien i databasen stå til "1" og hvis der ikke er hak så skal den stå til "0".

Når jeg skal opdatere min database så bruger jeg denne kode til alle andre former og input felter:

if(isset($_POST['siteactive'])) {
  $content = $_POST['sitekeyword'];
  setpageconfig("siteactive","$content");
}

funktionen "setpageconfig" er en funktion jeg har lavet som skal opdatere databasen. Det skal så opdatere rækken "siteactive" med $content, som så enten er "1" (for checked) eller "0" for unchecked.

Kan jeg gå ud fra, at hvis man sætter et hak i checkboxen er værdien "1" og hvis der intet er, så er værdien "0" for så er det jo meget nemt bare at opdatere den.

Håber jeg har forklaret mig korrekt, ellers må i endelig spørger og jeg skal prøve at udspecificere mit spørgsmål.

Mvh
Public2
Avatar billede Slettet bruger
30. oktober 2009 - 15:10 #1
Nej det kan du ikke.

En checkbox sender værdien hvis den er checked.. Ellers sender den ikke noget. Dvs. du kun kan afgøre, om den er checked ved at bruge isset().

if(isset($_POST['siteactive'])) {
  checked (1)
}else{
  unchecked (0)
}
Avatar billede public2 Nybegynder
30. oktober 2009 - 15:57 #2
Hej igen,

tak for dit svar, jeg har kun et enkelt problem med den kode du skriver. Når jeg sætter det ind i min opdateringsproces, så prøver den at tilgå en funktionen "checked()" eller "unchecked()"

Hvordan omgår jeg det eller fortæller den, at den værdi som skal sættes til $siteactive skal være lig enten "1" eller "0"???
Avatar billede Slettet bruger
30. oktober 2009 - 16:28 #3
checked og unchecked er bare kommentarer..
Skal læses som:
"checked (1)" = din checkbox er checked og du vil gemme værdien "1"
"unchecked (0)" = din checkbox er unchecked og du vil gemme værdien "0"

Jeg vil tro, din kode skal se således ud:
if(isset($_POST['siteactive'])) {
  setpageconfig("siteactive","1");
}else{
  setpageconfig("siteactive","0");
}

Men du har også nævnt $_POST['sitekeyword'], som du ikke har beskrevet, så derfor ikke ved, hvad gør.

Prøv ovenstående kode - hvis det ikke virker, må du også poste din form.

/1
Avatar billede public2 Nybegynder
03. november 2009 - 23:07 #4
Hej igen,

undskyld den lange svartid, der har været travlt på studierne.

Jeg har forsøgt mig lidt med din kode og er pinlig over at sige, at jeg simpelthen ikke lige sådan på stående fod kan hitte ud af det.

Jeg er nu også løbet ind i et andet problem og det er når jeg skal vise min checkbox som enten "markeret" eller "ikke-markeret".

Men ét problem af gangen, her er min POST-kode:

if(isset($_GET['action']) == "submitconfig") {
    if(isset($_POST['cssurl']) && !empty($_POST['cssurl']) && $_POST['pagetitle'] && !empty($_POST['pagetitle']) && $_POST['sitekeyword'] && !empty($_POST['sitekeyword'])) {
else { unchecked (0); }
        $cssurl = $_POST['cssurl'];
        $pagetitle = $_POST['pagetitle'];
        $sitekeyword = $_POST['sitekeyword'];
        $siteactive = $_POST['siteactive'];
        setpageconfig("$cssurl","$pagetitle", "$sitekeyword", "$siteactive");
        redirect_to("edit_content.php?type=edit&editing=config&msg=opdate");
       
    }
}

Funktionen "setpageconfig" er en jeg har lavet til at opdatere min database og den virker til alt det andet, så den tror jeg såmænd har det helt fint.

Mit andet problem, det med checkboks markeret eller ikke-markeret.

På selve front-end siden af min hjemmeside har jeg en lille funktion jeg kalder i toppen der hedder isactive().

Den funktion siger således:


        if($isactive == 0) {
            redirect_to(maintenance.php);
        }

Den har naturligvis også et SQL kald til databasen så den kan få værdien ud, men da det også virker tænker jeg ikke det bliver nødvendig at forvirre mere end højst nødvendigt.

I min admin-config-fil har jeg så prøvet at indsætte denne kode, i HTML input = checkbox taget:

if (isactive() !== 0) { echo "checked"; }

Problemet her er, at hvis den er sat til "0" i databasen, ja så vil siden også fungere som "ikke-aktiv" og redirecte til en anden side. Det skal den jo ikke, kun blot finde ud af om nummeret er sat til "1" (altså checked") eller "0" (altså unchecked).

Ved godt der er meget kode og to spørgsmål, men det vigtigste er egentlig lige nu hvordan jeg kan få indsat værdien i databasen som er "1" hvis den bliver krydset af og "0" hvis den ikke er krydset af, som en admin skal gøre på config siden.

Jeg er villig til at smide lidt flere point i puljen, da jeg godt ved at jeg har forøget spørgsmålene en smule.

Mvh
Public2
Avatar billede Slettet bruger
04. november 2009 - 09:30 #5
Prøv at køre denne. Jeg bruger isset() til at afgøre om boxen er checked.

<form method='post'>
    <input type='checkbox' name='myCheckbox'>
    <input type='submit'>
</form>
<?php
    if(isset($_POST['myCheckbox'])){
        echo "myCheckbox er checked";
    }else{
        echo "myCheckbox er unchecked";
    }
?>
Avatar billede public2 Nybegynder
16. november 2009 - 12:32 #6
Hej igen,

undskyld den lange svartid. Jeg fik aldrig helt dit script til at virke Kvadratrodenaf1, men ud fra det du skrev fik jeg nogle tanker og fandt et script der præcis gjorde som jeg ønskede.

Men jeg vil nu give dig pointene alligevel, da du fik hjulpet mig særdeles godt på vej og har brugt så meget af din tid.

Tak for både din hjælp og tid

Mvh
Emil
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