Avatar billede hewa Nybegynder
20. januar 2007 - 21:50 Der er 21 kommentarer og
1 løsning

Et tricky spørgsmål

Jeg har lige fået hjælp til et spørgsmål, hvor jeg satte en værdien i en checkboks til "1" og der skulle jeg bruge koden følgende kode, for at sætte en værdi i databasen:
if($_POST['vises'] != 1) {
  $vis = 0;
} else {
  $vis = 1;
}

Hvis jeg så sætter værdien til "nej" i checkboxen, vender koden helt rundt på hovedet, før det virker:
if($_POST['vises'] !=  "nej") {
  $vis = "nej";
} else {
  $vis = "ja";
}

Hvordan pokker kan det være... det tumler rundt i mit hoved og jeg kan slet ikke få det på plads... spørg hvis du i i tvivl om, hvad jeg mener!
Avatar billede kalp Novice
20. januar 2007 - 21:57 #1
if($_POST['vises'] !=  "nej") {
  $vis = "ja";
} else {
  $vis = "nej";
}


svarer til tal eksemplet
Avatar billede hewa Nybegynder
20. januar 2007 - 21:58 #2
Ja det gør det, men det er ikke det, der virker - og det er det, jeg ikke forstår...
Avatar billede michaeltryl Seniormester
20. januar 2007 - 21:58 #3
if($_POST['vises'] !=  "nej") betyder hvis ($_POST['vises'] ikke er lig med  "nej")
skal følgende udføres så mon ikke du skal gøre sådan

if($_POST['vises'] !=  "nej") {
  $vis = "ja";
} else {
  $vis = "nej";
}

eller er der noget jeg har misforstået?
Avatar billede kalp Novice
20. januar 2007 - 22:00 #4
hvis du har haft tal værdier før så kan det være at du sted mangler at rette værdiern i vises..

for står der enten 1 eller 0 i den så vil du jo havne i else delen;)
Avatar billede hewa Nybegynder
20. januar 2007 - 22:01 #5
Nej, du har ikke misforstået noget michaeltryl, men det er det, der driller og som jeg ikke forstår. Bytter jeg det ja og nej ud med 1 og 0 skal jeg bytte rundt på if sætningen.
Avatar billede kalp Novice
20. januar 2007 - 22:01 #6
dvs. hvis $_POST['vises'] enten er 0 eller 1 så havner du i else

if($_POST['vises'] !=  "nej") {
  $vis = "ja";
} else {
  $vis = "nej";
}
Avatar billede kalp Novice
20. januar 2007 - 22:02 #7
prøv evt. at udskrive $_POST['vises' lige før.. for at se ]
Avatar billede hewa Nybegynder
20. januar 2007 - 22:02 #8
Jeg har byttet rundt og frem og tilbage adskillige gang og jeg forstår simpelthen ikke hvorfor :)
Avatar billede michaeltryl Seniormester
20. januar 2007 - 22:02 #9
hvordan ser din kode der laver den checkboks ud?
Avatar billede intenz Novice
20. januar 2007 - 22:03 #10
Er du sikker på du ikke havde værdien 1 ud for ja?

Den gamle sætning:
if($_POST['vises'] != 1) { // betyder, hvis vises ikke er "ja" (hvis værdien 1 er ja)

den nye:
if($_POST['vises'] !=  "nej") { // siger sig selv

Derfor er den "omvendt"
Avatar billede hewa Nybegynder
20. januar 2007 - 22:05 #11
<input type='checkbox' name='vises' value='nej'>
og med tal
<input type='checkbox' name='vis' value='1'>
Avatar billede hewa Nybegynder
20. januar 2007 - 22:07 #12
Hvis checkboxen var tom, var værdien 1 og med bogstaver nej
i if sætningen vender det hele bare rundt... jeg fatter intet :)
Avatar billede hewa Nybegynder
20. januar 2007 - 22:10 #13
Så det du skriver intenz, er, at selvom jeg troede, værdien var "nej" ved "0", så var den i virkeligheden "ja"?
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 22:11 #14
Hvis der ikke er kryds i en checkbox, kommer den slet ikke med i din $_POST-variabel. Det er hele humlen, og der hunden ligger begravet.
Avatar billede hewa Nybegynder
20. januar 2007 - 22:12 #15
Kan du uddybe det, erikjacobsen?
Avatar billede intenz Novice
20. januar 2007 - 22:13 #16
Nej ikke nødvendigvis. Men den kode du skriver:
if($_POST['vises'] != 1) {
  $vis = 0;
} else {
  $vis = 1;
}

Er fuldstændig identisk med:
if($_POST['vises'] !=  "nej") {
  $vis = "ja";
} else {
  $vis = "nej";
}

Hvis altså tallet ud for nej var 1.
Så det var bare en mulig løsning, for php gør ikke at den bliver omvendt. Det er en fejl i programmeringen, og jeg syntes bare den fejl lå ligefor.

Prøv, som kalp skrev, at udskrive $_POST['vises'] lige før if sætningen, og se om den har den værdi den burde have.
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 22:13 #17
Nej. Jeg synes det står forklaret godt nok. Hvad er der du ikke forstår?
Avatar billede intenz Novice
20. januar 2007 - 22:14 #18
Det betyder bare at hvis der ikke er sat "hak" i checkboksen, bliver variablen ikke sendt. Og $_POST['vises'] indeholder derfor ingenting.
Avatar billede kalp Novice
20. januar 2007 - 22:14 #19
hvis du udskriver den variabel som jeg sagde så får du svar på det erik vil hen til!
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 22:15 #20
Med mindre det er "vises" contra "vis", der er problemet her. Hvorfor står der "vis" her:
  <input type='checkbox' name='vis' value='1'>
Avatar billede hewa Nybegynder
20. januar 2007 - 22:38 #21
God fidus med at udskrive variablen - jeg kunne bare ikke få det til at virke til at starte med... den var som erikjacobsen skrev tom... og dermed kom der ikke noget resultat. Jaja, jeg jo helt ny i det her :)

Det tricky er så, at når værdien i value='nej', så troede jeg, den var tom, eftersom det var den fra starten, men det er lige det modsatte, det bliver først til et nej, når den er checket af, og det mente jeg jo så var et ja. Hmmm, forvirret, det er jeg også, men nu forstår jeg det da lidt bedre ;-)

kalp, du gav det sidste skub, så det må vel være dig, der skal have pointene. Hvis I andre er uenige, må I sige til, så laver jeg også til jer!
Avatar billede kalp Novice
20. januar 2007 - 22:42 #22
du får ihvertfald et svar;)
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