08. oktober 2004 - 08:09
Der er
37 kommentarer og 1 løsning
Fejl i if-sætning php.
Hejsa, jeg vil sige til serveren af hvis man har over 0 timer og 0 minutter så skal den give $level = 1; if (sek2tid($row['total'] > "0 timer, 0 min")){ $level = 1; } Kan ikke huske om det er '>', '<', '==','=>','<='
Annonceindlæg fra Serpier
08. oktober 2004 - 08:11
#1
Det er nok nærmere sådan: if (sek2tid($row['total']) > "0 timer, 0 min"){
08. oktober 2004 - 08:12
#2
Nej der er 2 parenteser.. Og det jeg mente af at, hvis man har imellem 0 timer og 0 min til 4 timer og 59 minutter så skal den give $level = 1;
08. oktober 2004 - 08:13
#3
if (sek2tid($row['total'] < "5 timer, 59 min")){ $level = 1; } Sådan?
08. oktober 2004 - 08:14
#4
Smutter til trim-dag. Forsæt god ferie.
08. oktober 2004 - 08:15
#5
sek2tid funktionen skal vel kun have $row['total'] som parameter.
08. oktober 2004 - 08:17
#6
Jeg har desværre ikke efterårsferie. Det ord ikke eksistere ikke længere for mig :(
08. oktober 2004 - 08:20
#7
sek2tid funktionen skal derfor se sådan ud: sek2tid($row['total']) og i if'en bliver det så til: if (sek2tid($row['total']) > "0 timer, 0 min"){ parentes om hele if'en og om $row['total'].
08. oktober 2004 - 08:43
#8
funktions navnet får mig til at mene at $row['total'] har tiden i sekunder, så blever det vel if (sek2tid($row['total']) <= "4 timer, 59 min"){ $level = 1; } eller lettere if ($row['total']) <= 17940){ $level = 1; }
08. oktober 2004 - 08:44
#9
og ellers min nye kæphest ( RegExp ) <?/* bare test */ preg_match("/(\d+) timer, (\d+) min/","4 timer, 59 min", $m ); echo $m[1]."-".$m[2]."<br>"; $t = ( $m[1] < 10 ? '0' : '' ) . $m[1]; $t .= ( $m[2] < 10 ? '0' : '' ) . $m[2]; if($t <= 459) $level = 1; ?>
08. oktober 2004 - 11:55
#10
Hvordan er det man regner timer ud fra time(); skal man divider eller? if ($row['total']) <= 17940){ $level = 1; } hvad er 17940 ?
08. oktober 2004 - 11:59
#11
4 timer og 59 min udtrykt i sekunder
08. oktober 2004 - 12:03
#12
<?php if (sek2tid($row['total']) <= "4 timer, 59 min"){ $level = 1; } if (sek2tid($row['total']) <= "19 timer, 59 min"){ $level = 2; } if (sek2tid($row['total']) <= "34 timer, 59 min"){ $level = 3; } if (sek2tid($row['total']) <= "49 timer, 59 min"){ $level = 4; } if (sek2tid($row['total']) <= "74 timer, 59 min"){ $level = 5; } if (sek2tid($row['total']) <= "99 timer, 59 min"){ $level = 6; } if (sek2tid($row['total']) <= "149 timer, 59 min"){ $level = 7; } if (sek2tid($row['total']) <= "224 timer, 59 min"){ $level = 8; } if (sek2tid($row['total']) <= "309 timer, 59 min"){ $level = 9; } if (sek2tid($row['total']) <= "499 timer, 59 min"){ $level = 10; } if (sek2tid($row['total']) <= "699 timer, 59 min"){ $level = 11; } if (sek2tid($row['total']) <= "999 timer, 59 min"){ $level = 12; } if (sek2tid($row['total']) <= "1499 timer, 59 min"){ $level = 13; } if (sek2tid($row['total']) <= "1699 timer, 59 min"){ $level = 14; } if (sek2tid($row['total']) <= "1999 timer, 59 min"){ $level = 15; } ?>
08. oktober 2004 - 12:06
#13
øhhh?
08. oktober 2004 - 12:06
#14
Det virker ikke, det jeg skrev, den udskriver level 12, ved alle.
08. oktober 2004 - 12:09
#15
Det er fordi, du skal bytte om på rækkefølgen. Alle de mindre levels opfylder jo også de størrer levels. if (sek2tid($row['total']) <= "1999 timer, 59 min"){ $level = 15; } if (sek2tid($row['total']) <= "1699 timer, 59 min"){ $level = 14; } if (sek2tid($row['total']) <= "1499 timer, 59 min"){ $level = 13; }
08. oktober 2004 - 12:11
#16
nåååeh :D
08. oktober 2004 - 12:13
#17
Virker hellere ikke? <?php if (sek2tid($row['total']) <= "1999 timer, 59 min"){ $level = 15; } if (sek2tid($row['total']) <= "1699 timer, 59 min"){ $level = 14; } if (sek2tid($row['total']) <= "1499 timer, 59 min"){ $level = 13; } if (sek2tid($row['total']) <= "999 timer, 59 min"){ $level = 12; } if (sek2tid($row['total']) <= "699 timer, 59 min"){ $level = 11; } if (sek2tid($row['total']) <= "499 timer, 59 min"){ $level = 10; } if (sek2tid($row['total']) <= "309 timer, 59 min"){ $level = 9; } if (sek2tid($row['total']) <= "224 timer, 59 min"){ $level = 8; } if (sek2tid($row['total']) <= "149 timer, 59 min"){ $level = 7; } if (sek2tid($row['total']) <= "99 timer, 59 min"){ $level = 6; } if (sek2tid($row['total']) <= "74 timer, 59 min"){ $level = 5; } if (sek2tid($row['total']) <= "49 timer, 59 min"){ $level = 4; } if (sek2tid($row['total']) <= "34 timer, 59 min"){ $level = 3; } if (sek2tid($row['total']) <= "19 timer, 59 min"){ $level = 2; }if (sek2tid($row['total']) <= "4 timer, 59 min"){ $level = 1; } ?>
08. oktober 2004 - 12:33
#18
bojo havde faktisk fat i nogeg, med at regne det om til sekunter. Du kan nemlig ikke lave en "mindre end" validering på tekst i dette tilfælde. "199999 timer, 59 min" er nemlig mindre end "2 timer, 59 min" når du laver tekst sammenligning. Du skal derfor have alle data omregnet til sekunter.
08. oktober 2004 - 12:36
#19
Hvordan gør man det? 20%3600 eller hvad?
08. oktober 2004 - 12:42
#20
Vi kunne jo nøjes med at bruge minutter, så tallet ikke bliver så stort. Hvad indeholder $row['total']? Det er den der skal omregnes til minutter.
08. oktober 2004 - 12:44
#21
Ja
08. oktober 2004 - 12:46
#22
feks min bruger har i total: '909748'
08. oktober 2004 - 12:47
#23
Er det sekunder???
08. oktober 2004 - 12:51
#24
ja
08. oktober 2004 - 12:58
#25
if (($row['total'] / 60) < 2100){ // 35 timer $level = 3; } if (($row['total'] / 60) < 1200){ // 20 timer $level = 2; } if (($row['total'] / 60) < 300){ // 5 timer $level = 1; }
08. oktober 2004 - 13:01
#26
>Hvordan er det man regner timer ud fra time(); skal man divider eller? > >if ($row['total']) <= 17940){ > $level = 1; >} dit problem er vist at du tester på strenge og der er "4" større end "10" regn hellere i sekunder så (timer * 3600) + (min * 60 )
08. oktober 2004 - 13:04
#27
denne function regner dine "x timer. y min" om til sekunder function t( $txt ) { preg_match("/(\d+) timer, (\d+) min/",$txt, $m ); return( m[1]*3600 + m[2]*60 ); }
08. oktober 2004 - 13:11
#28
FEKS? } if (sek2tid($row['total']) <= "12600"){ $level = 3; } if (sek2tid($row['total']) <= "72100"){ $level = 2; }if (sek2tid($row['total']) <= "18000"){ $level = 1; }
08. oktober 2004 - 13:16
#29
function t( $txt ) { preg_match("/(\d+) timer, (\d+) min/",$txt, $m ); return( m[1]*3600 + m[2]*60 ); } ... ... if ($row['total']) <= t("149 timer, 59 min" ){ $level = 7; } ... ...
08. oktober 2004 - 13:17
#30
For det første skal der ikke " omkring tal..... Og du skal ikke køre sek2tid funktionen længre. $row['total'] er jo angivet i sekunter. Så enten sammenligner du det antal med sekunter, eller du omregner dem til minutter. med sekunter: if ($row['total'] < 18000){ $level = 1; } eller med minutter: if (($row['total'] / 60) < 300){ $level = 1; }
08. oktober 2004 - 13:42
#31
<?php function t( $txt ) { preg_match("/(\d+) timer, (\d+) min/",$txt, $m ); return( m[1]*3600 + m[2]*60 ); } ?> den siger: Parse error: parse error, unexpected '[' in /usr/home/web/web31797/chat/chat/se_profil.php on line 31
08. oktober 2004 - 13:45
#32
ups, jeg havde glemt 2 $ tegn <?php function t( $txt ) { preg_match("/(\d+) timer, (\d+) min/",$txt, $m ); return( $m[1]*3600 + $m[2]*60 ); } ?>
08. oktober 2004 - 13:48
#33
den ville heller ikke: if ($row['total']) <= t("999 timer, 59 min" ){ den siger: Parse error: parse error, unexpected T_IS_SMALLER_OR_EQUAL in /usr/home/web/web31797/chat/chat/se_profil.php on line 76
08. oktober 2004 - 13:57
#34
hmmm - jeg lurer lige igen
08. oktober 2004 - 14:00
#35
jeg har vist igen en af de dage hvor jeg burde blive i sengen, if kan jo godt lide ( ) <?php function t( $txt ) { preg_match("/(\d+) timer, (\d+) min/",$txt, $m ); return( $m[1]*3600 + $m[2]*60 ); } if ( ( $row['total']) <= t("999 timer, 59 min" ) ){ echo "juuu"; } ?>
08. oktober 2004 - 14:09
#36
Læg svar, det viker.
08. oktober 2004 - 14:12
#37
fino
08. oktober 2004 - 14:41
#38
hov da du måske finder på at skrive 1 time, så ret til, ellers skal du skrive 1 timer :-) preg_match("/(\d+) timer?, (\d+) min/",$txt, $m );
Vi tilbyder markedets bedste kurser inden for webudvikling