Avatar billede web-geek Nybegynder
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 '>', '<', '==','=>','<='
Avatar billede fennec Nybegynder
08. oktober 2004 - 08:11 #1
Det er nok nærmere sådan:

if (sek2tid($row['total']) > "0 timer, 0 min"){
Avatar billede web-geek Nybegynder
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;
Avatar billede web-geek Nybegynder
08. oktober 2004 - 08:13 #3
if (sek2tid($row['total'] < "5 timer, 59 min")){
  $level = 1;
    }


Sådan?
Avatar billede web-geek Nybegynder
08. oktober 2004 - 08:14 #4
Smutter til trim-dag. Forsæt god ferie.
Avatar billede fennec Nybegynder
08. oktober 2004 - 08:15 #5
sek2tid funktionen skal vel kun have $row['total'] som parameter.
Avatar billede fennec Nybegynder
08. oktober 2004 - 08:17 #6
Jeg har desværre ikke efterårsferie.
Det ord ikke eksistere ikke længere for mig :(
Avatar billede fennec Nybegynder
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'].
Avatar billede bojo Nybegynder
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;
}
Avatar billede bojo Nybegynder
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;
?>
Avatar billede web-geek Nybegynder
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 ?
Avatar billede bojo Nybegynder
08. oktober 2004 - 11:59 #11
4 timer og 59 min udtrykt i sekunder
Avatar billede web-geek Nybegynder
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;
}
    ?>
Avatar billede bojo Nybegynder
08. oktober 2004 - 12:06 #13
øhhh?
Avatar billede web-geek Nybegynder
08. oktober 2004 - 12:06 #14
Det virker ikke, det jeg skrev, den udskriver level 12, ved alle.
Avatar billede fennec Nybegynder
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;
}
Avatar billede web-geek Nybegynder
08. oktober 2004 - 12:11 #16
nåååeh :D
Avatar billede web-geek Nybegynder
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;
}
    ?>
Avatar billede fennec Nybegynder
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.
Avatar billede web-geek Nybegynder
08. oktober 2004 - 12:36 #19
Hvordan gør man det? 20%3600 eller hvad?
Avatar billede fennec Nybegynder
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.
Avatar billede web-geek Nybegynder
08. oktober 2004 - 12:44 #21
Ja
Avatar billede web-geek Nybegynder
08. oktober 2004 - 12:46 #22
feks min bruger har i total: '909748'
Avatar billede fennec Nybegynder
08. oktober 2004 - 12:47 #23
Er det sekunder???
Avatar billede web-geek Nybegynder
08. oktober 2004 - 12:51 #24
ja
Avatar billede fennec Nybegynder
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;
}
Avatar billede bojo Nybegynder
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 )
Avatar billede bojo Nybegynder
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 );
}
Avatar billede web-geek Nybegynder
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;
}
Avatar billede bojo Nybegynder
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;
}
...
...
Avatar billede fennec Nybegynder
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;
}
Avatar billede web-geek Nybegynder
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
Avatar billede bojo Nybegynder
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 );
}
?>
Avatar billede web-geek Nybegynder
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
Avatar billede bojo Nybegynder
08. oktober 2004 - 13:57 #34
hmmm - jeg lurer lige igen
Avatar billede bojo Nybegynder
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";
}

?>
Avatar billede web-geek Nybegynder
08. oktober 2004 - 14:09 #36
Læg svar, det viker.
Avatar billede bojo Nybegynder
08. oktober 2004 - 14:12 #37
fino
Avatar billede bojo Nybegynder
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 );
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