Avatar billede RJFreelance Praktikant
03. november 2003 - 23:19 Der er 75 kommentarer og
1 løsning

Har gloet mig blind på denne if sætning

Ja som sagt har jeg gloet mig blind på denne if sætning:

if ($maned_idag != '12' && $dag_idag < $_GET[dag]) { 

Den siger den er false selvom den er True. .Why ??
Avatar billede ztyxx Nybegynder
03. november 2003 - 23:21 #1
fjern ´ne om 12
Avatar billede well_r Nybegynder
03. november 2003 - 23:21 #2
prøv med udlukkelsesmetoden
prøv først med
if (maaned_idag != '12'){
  print "Så langt kom jeg: 1";
  if ($dag_idag < $_GET[dag]){
    print "Så langt kom jeg: 2";
  }
}

eller noget i den stil
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:23 #3
Så langt kom jeg: 1  ;)
Avatar billede rackbox Nybegynder
03. november 2003 - 23:24 #4
Prøv med nogle gåseøjne:

if ($maned_idag != '12' && $dag_idag < $_GET['dag']) {
...
}

Der er gåseøjne i $_GET['dag'];

God vind
Rackbox
Avatar billede rackbox Nybegynder
03. november 2003 - 23:25 #5
ztyxx: Det er ligemeget om der er gåseøjne omkring '12' eller ej...
Avatar billede well_r Nybegynder
03. november 2003 - 23:26 #6
hvis du kun kom til 1 så må det være fordi der er noget galt med 2 :)

prøv at skrive..

if (maaned_idag != '12'){
  print "Så langt kom jeg: 1";
  if ($dag_idag < $_GET[dag]){
    print "Så langt kom jeg: 2";
  }
  else {
    print "$dag_idag og $_GET[dag]";
  }
}
Avatar billede ztyxx Nybegynder
03. november 2003 - 23:27 #7
rackbox, så kigger den på det som en streng, og ikke int???
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:29 #8
Den har dag idag og dag fra query...
Avatar billede rackbox Nybegynder
03. november 2003 - 23:29 #9
ztyxx det er ligemeget.. PHP har ikke umiddelbart nogen forskelsbehandling af strenge og integer, eks.:

$tal = "12";
$tal++;
echo $tal;
OUTPUT: 13
Altså: PHP er ligeglad.. Men den er ikke ligeglad med om der er gåseøjne i $_GET['dag']; :-)
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:30 #10
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in

med ' i $_GET[]
Avatar billede ztyxx Nybegynder
03. november 2003 - 23:30 #11
rackbox> okay, så har jeg bare misforstået noget....
Avatar billede well_r Nybegynder
03. november 2003 - 23:30 #12
prøvet det jeg skrev?
Avatar billede rackbox Nybegynder
03. november 2003 - 23:31 #13
well_r og supreme_creme: Ser I ikke mit svar? Det er altså det, der er sandheden ;-) Der er ingen grund til at diskuttere mere :-)
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:32 #14
Så langt kom jeg: 103 og 1
well_r
Avatar billede rackbox Nybegynder
03. november 2003 - 23:33 #15
Det var dog utroligt, venner ;-) Nå - men håber at du får løst dit problem alligevel ;-)
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:34 #16
Hør:

når jeg putter ' i min $_GET[] kommer den med den der fejl.. Så kan du sige hvad du vil...

Og dukan jo se den finder variablen uden !!
Avatar billede ztyxx Nybegynder
03. november 2003 - 23:34 #17
så sæt " i din $get[]
Avatar billede well_r Nybegynder
03. november 2003 - 23:35 #18
if (maaned_idag != '12'){
  print "Så langt kom jeg: 1";
  if ($dag_idag < $_GET[dag]){
    print "Så langt kom jeg: 2<br>\n";
  }
  else {
    print "$dag_idag og $_GET[dag]";
  }
}

nu burde du få:

Så langt kom jeg: 1
03 og 1

hvilket betyder at
$dag_idag = 03
$_GET[dag] = 1

og da du spørger om $dag_idag er større end $_GET[dag] .. så er udtrykket falst
da du bruger &&
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:35 #19
hvorfor ??

Den finder jo variablen og udskriver den...
Avatar billede rackbox Nybegynder
03. november 2003 - 23:36 #20
Her er min kode:
<?php

$maned_idag=11;
$dag_idag=2;



if ($maned_idag != '12' && $dag_idag < $_GET['dag'])
    echo "TRUE";
else
    echo "FALSE";

?>

Afprøv den på http://www.rackbox.dk/showfile/if.php?dag=3
Det virker altså...
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:36 #21
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

når man kommer "" i den !
Avatar billede well_r Nybegynder
03. november 2003 - 23:36 #22
rackbox
jeg forstår ikke helt hvor du vil hen?

altså.. det du skriver er:
$_GET[dag] med gåseøjne..
men.. man får jo samme resultat hvadenten man bruger det ene eller andet ?
Avatar billede rackbox Nybegynder
03. november 2003 - 23:37 #23
Hvis du er i tvivl, så prøv at skrive
echo $_GET[dag];
og du får INGENTING som svar. Fordi $_GET[dag] ikke refererer til noget. Det gør til gengæld $_GET['dag']
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:38 #24
rackbox jeg fik da noget ud af det ??

og det virker stadig ikke.. Den siger stadig at den er False
Avatar billede rackbox Nybegynder
03. november 2003 - 23:38 #25
Nå.. Men prøv på linket.. Det fungerer altså...
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:39 #26
Ja.. Men kan du så sige hvorfor den ikke gør her `???
Avatar billede well_r Nybegynder
03. november 2003 - 23:39 #27
den siger false fordi $_GET['dag'] er mindre end $dag_idag
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:39 #28
Ja men måneden er jo ikke 12 !
Avatar billede rackbox Nybegynder
03. november 2003 - 23:40 #29
Du vil finde en måned, som ikke er 12 og en dag (hentet fra URL), der er mindre end $dag_idag, ikke sandt? Så hedder IF-sætningen altså:
if ($maned_idag != '12' && $dag_idag < $_GET[dag])
Avatar billede rackbox Nybegynder
03. november 2003 - 23:41 #30
!= betyder "er ikke lig med"
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:41 #31
Ja men den siger stadig False !
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:41 #32
Ja det ved jeg !!! Men det er stadig false !!
Avatar billede rackbox Nybegynder
03. november 2003 - 23:41 #33
(Jeg gør ikke det her for points, hehe)
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:42 #34
Nej men kan du så sige hvorfor det ikke virker ???
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:43 #35
$dag_idag < $_GET[dag]

fejlen ligger jo der...
Avatar billede rackbox Nybegynder
03. november 2003 - 23:43 #36
OK.. Så prøv at ændre ?dag=3 til ?dag=2

Første skulle give TRUE og anden skulle give FALSE
Avatar billede rackbox Nybegynder
03. november 2003 - 23:44 #37
Prøv at skrive i ord, hvad du vil have ud af sætningen
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:44 #38
det jo ikke problemet men måneden idag er jo IKKE 12 !!! Det er 11 !!! Derfor skulle den sige True !
Avatar billede well_r Nybegynder
03. november 2003 - 23:45 #39
første udtryk er true og andet udtryk afhænger af hvad du skriver i URL.. hvis du skriver noget højere end 2 (dvs 3 og opefter).. ellers er det false

da en af de to udtryk er false er hele det samlede udtryk false..
Avatar billede well_r Nybegynder
03. november 2003 - 23:45 #40
supreme-creme læs det jeg skrev..
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:46 #41
Ok. Hvordan får jeg det så til at virke ??

Det er jo meningen at hvis det ene af dem er true skal begge være true `?
Avatar billede rackbox Nybegynder
03. november 2003 - 23:47 #42
Leder du efter en sætning, der returnerer true, når måneden ikke er 12 og $dag_idag er mindre end et bestemt tal?
Avatar billede rackbox Nybegynder
03. november 2003 - 23:47 #43
Ahhh! if ($maned_idag != '12' || $dag_idag < $_GET[dag])

|| = OR
Avatar billede rackbox Nybegynder
03. november 2003 - 23:48 #44
Det skulle være et svar ;-)
Avatar billede rackbox Nybegynder
03. november 2003 - 23:48 #45
Det har næsten udviklet sig til en chat, det her ;-)
Avatar billede well_r Nybegynder
03. november 2003 - 23:49 #46
hehe.. d'oooooooooh :P
hvorfor sagde du ikke det fra starten.. :P
Avatar billede RJFreelance Praktikant
03. november 2003 - 23:49 #47
Lol fordi jeg godt vidste intet var forkert ved sætningen men mente at && var Or og det var problememt. Er meget træt ;)

rack tingen får points.. ?
Avatar billede rackbox Nybegynder
03. november 2003 - 23:50 #48
hehe
Avatar billede well_r Nybegynder
03. november 2003 - 23:51 #49
fint med mig :)
Avatar billede ztyxx Nybegynder
03. november 2003 - 23:54 #50
underholdende tråd ;-)
Avatar billede rackbox Nybegynder
04. november 2003 - 00:19 #51
Efter at være blevet irettesat af min mentor, kommer her en lille rettelse:
PHP er IKKE ligeglad med om der står "12" eller 12 - den konverterer og i dette tilfælde konverterer den, så det falder i tråd med ønsket ;-) Tak for en god "debat"!
Avatar billede tipsen Nybegynder
04. november 2003 - 00:34 #52
PHP har såkaldt "weak typing" i modsætning til eks. C/C++ og Java der er "strongly typed", hvilket betyder, at PHP vil forsøge at konvertere variabeltyper når forskellige typer benyttes i eksempelvis sammenligninger eller forkerte typer bruges som input til funktioner eller som led i beregninger. Det er dog ikke altid at PHP gætter rigtigt med om eksempelvis strengen skulle konverteres til kommatal, heltal eller måske dato og derfor er det altid en god ide at holde variablene i de rigtige typer - så slipper man også for overraskende problemer undervejs! Derfor er det ikke helt ligegyldigt, hvilke typer man bruger de forskellige steder, men det er en "fejl/mangel" man ofte ser i php scripting.

Derudover er det ca. lige så ligegyldigt om man skriver $_GET['varnavn'] eller $_GET[varnavn] - den første udgave er den mest korrekte, da den anden umiddelbart henviser til en konstant ved navn "varnavn" - hvis denne konstant ikke findes gætter PHP på at man har glemt anførselstegn og sørger selv for dem! Hvis derimod konstanten "varnavn" havde eksisteret, havde man lige pludselig fået en ganske sjov fejl i ovenstående! Derudover vil brugen af anden udgave også give en "Warning" afhængig af det fejlrapporteringsniveau man har indstillet php til!

Til sidst skal det nævnes, at && != AND og || != OR - De to operatorer er *næsten* identiske, men de har forskellig præcedens, hvilket betyder at man kan opleve sjove resultater, hvis man blander de to former!
Avatar billede well_r Nybegynder
04. november 2003 - 16:00 #53
Tips: nice :P

men forklar lige med et eks. mht det sidste
Avatar billede RJFreelance Praktikant
04. november 2003 - 16:21 #54
Ok. Men angiver man da typerne ved at sætte tegn ?

I C++ f.eks. er det jo meget mer ebesværligt da man skal sætte typerne og oprette variablerne i starten.. Mega besværligt syntes jeg :)
Avatar billede rackbox Nybegynder
04. november 2003 - 17:14 #55
I PHP angiver du kun i enkelte tilfælde type: Array & Objekter (og måske noget andet jeg har glemt). Dernæst er det op til dig selv at sørge for at dine typer bliver i det samme domæne. Du kan sagtens angive type, men den er ikke restrikiv, eks.: $foo = (boolean) 1;
Du kan sagtens ændre på det ved at angive en ny værdi, eks.: $foo = "STRING";

Der findes diverse konverteringsfunktioner mellem typer, men du kan i det store hele blot bruge din variabel som du vil.
Prøv at kigge her: http://dk2.php.net/manual/en/function.settype.php

Vh
Rackbox
Avatar billede tipsen Nybegynder
04. november 2003 - 18:04 #56
well_r: Det er lidt dårligt, men jeg er ikke i stand til at konstruere et eksempel på "et sjovt resultat" med miks af &&, AND, || og OR, men jeg kan vise et eksempel på at brugen af OR og || ikke altid giver samme resultat:

echo (true XOR false || true) ? 'True' : 'False'; // => false
echo (true XOR false OR true) ? 'True' : 'False'; // => true

[XOR = Exclusive OR - altså A XOR B betyder ENTEN A ELLER B, men IKKE begge]

Se også listen over operatorer og deres præcedens her:

http://dk.php.net/manual/en/language.operators.php#language.operators.precedence

(Det er egentlig bare det samme som, når man vælger at gange og dividere inden man adderer og subtraherer - så allerede i folkeskolen har man lært om operator præcedens - man er som regel bare ikke klar over det ;-))

supreme: C/C++ er meget mere stringent og jeg vil mene at du skal have et højere niveau inden du kan lave rigtige programmer i C, da det ikke er nær så tilgivende som eksempelvis PHP (eller ASP/VBA/VB), hvor de førstnævnte jo også kun er scriptingsprog!
Avatar billede well_r Nybegynder
04. november 2003 - 20:22 #57
uhh..nice thx :)
så blev jeg også lidt (meget?) klogere :P
Avatar billede RJFreelance Praktikant
04. november 2003 - 20:25 #58
Jeps. Er gået igang med C++ lige så stille for at "snuse" lidt til det. Skal på HTX til næste sommer og tror det er godt at have lidt grundviden bag sproget.. :)
Avatar billede well_r Nybegynder
04. november 2003 - 21:05 #59
måske :P
min viden indenfor html, php, delphi, og lidt andet hjalp mig i hvertfald til at afslutte datalogi på mellem i 2.g med et 11tal ;)

så.. sørg for at du lærer så meget om det som du kan ;)
Avatar billede RJFreelance Praktikant
04. november 2003 - 21:09 #60
Ok..

Andre ting du syntes jeg skulle studere inden jeg kommer på htx ??
Avatar billede well_r Nybegynder
04. november 2003 - 21:29 #61
- algoritmer :)
- sådan med at opbygge et helt system..
  især et større system som du skal kunne forklare hvordan du vil opbygge..
hvis du forstår..
Avatar billede RJFreelance Praktikant
04. november 2003 - 21:31 #62
algoritmer.. Ja har hørt at det er vigtigt men min lærer vil ikke komme ind på det.. Heh...

Hvor kan jeg lære noget om det ??
Avatar billede well_r Nybegynder
04. november 2003 - 21:31 #63
Da jeg gik i 2.g (sidste år) havde jeg, på Rachid.dk, et forum, samt en masse andet gejl. Jeg lavede bl.a også MiniChat3 da jeg gik i 2.g :)

Minichat3: http://www.chattown.dk/rachid/minichat3/ :)
Avatar billede RJFreelance Praktikant
04. november 2003 - 21:46 #64
Ok nice.

Kender den godt.. En god inspirationskilde ;)

Men med hensyn til de Algoritmer.. Kender du nogle sites??
Avatar billede well_r Nybegynder
04. november 2003 - 22:19 #65
Jamen.. algoritmer er blot hvordan du bygger noget op.. altså
hvis du ser på..
hvordan laver jeg et login.. så siger du

først er der et spørgsmål..
Burgernavn og password

hvis det er rigtigt..sker det..
ellers sker det.. (her kunne være.. at den fortæller hvad der ikke stemmer, user eksisterer ikke/ password er forkert)

altså
lidt ligesom if-sætninger



en anden ting.. sæt dig også lidt ind i assempler :)
Avatar billede RJFreelance Praktikant
04. november 2003 - 22:20 #66
Heh. Alle siger lige pludselig assembler, men kan ikke rigtigt finde noget om det.. :(

Men tak for det med algoritmer :)
Avatar billede well_r Nybegynder
04. november 2003 - 22:28 #67
hva nu hvis jeg siger.. maskine kode :)
Avatar billede RJFreelance Praktikant
04. november 2003 - 22:29 #68
Ved nogenlunde hvad det er men ikke helt hvordan det virker og sådanne :=)
Avatar billede well_r Nybegynder
04. november 2003 - 22:48 #69
først lærer du assempler.. derefter lærer du maskinekode :P

det skal nok blive sjovt.. hehe :P
jeg vil i hvertfald grine af dig når du kommer så langt :P

det kan være svært for nogle i starten ;)

hørt om tårnene i.. (en eller anden kinesiske by)??

vi skulle lave lidt af det samme i assemplerer :)

og så skulle vi lave noget med nogle kaniner der formerer sig..
det virker meget enkelt.. men.. altså.. man kan hurtigt miste overblikket ;)
Avatar billede RJFreelance Praktikant
04. november 2003 - 22:51 #70
Ok...

Assembler fik jeg afvide var noget med at snakke med delene i din computer og skrive direkte i CPUéns Et eller andet.. :)
Avatar billede well_r Nybegynder
04. november 2003 - 22:52 #71
yeps :)
på den måde kan lave ting og sager som får computeren til at yde maksimal styrke :P

men .. nu er windows her jo.. så er alt meget lettere (finder du ud af når du begynder på VB/Delphi/andet)
Avatar billede RJFreelance Praktikant
04. november 2003 - 22:53 #72
Ja.. Har lavet et par ting i Delphi og  jo det var MEGET nemmere med alle windows komponenterne...

Lavede en lille chat og et tekstredigeringsprogram...
Avatar billede well_r Nybegynder
04. november 2003 - 22:59 #73
lavede engang en lille msn-agtig fætter :P
hehe
den kørte gennem mysql :P (måske en dum idé?):)
hva ved jeg :P
Avatar billede RJFreelance Praktikant
04. november 2003 - 23:00 #74
Lidt måske.. hehe...
Avatar billede RJFreelance Praktikant
04. november 2003 - 23:01 #75
Har du msn ??

Så gør vi da ikke det her til en chat :P
Avatar billede well_r Nybegynder
04. november 2003 - 23:03 #76
hehe :)

wel@scorekaj.dk :)
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