Avatar billede kodak Mester
08. juni 2014 - 12:25 Der er 23 kommentarer og
1 løsning

må kun vise mellem to punkter

undskyld det er lidt svært at forklare.

jeg har disse tabel verdier:

start, slut
'2', '5'
'3', '7'
'7', '8'
'7', '0'
'8', '11'
'10', '11'

hvor dan laver jeg en "if" der viser alt imellem "6, 9"
(er start og slut før 6) : ikke vises
(er start før 6 og slut efter 6) : start = 6
(er start før 6 og slut 0) : start = 6 slut = 9
(er start efter 6 og slut efter 9) : slut = 9


det skal komme ud så ledes:

start, slut
'2', '5' = '', ''
'3', '7' = '6', '7'
'7', '8' = '7', '8'
'7', '0' = '7', '9'
'8', '11' = '8', '9'
'10', '11' = '0', '0'
Avatar billede moddi100 Seniormester
08. juni 2014 - 15:42 #1
Hvis jeg har forstået dit ønske rigtigt, så burde følgende løse det:

function vis($start, $slut)
{
  if($slut == 0)
  {
    // Er $slut lige med 0, erstatter vi tallet med 9
    $slut = 9;
  }
 
  if($slut < 6) // Start og slut under 6
  {
    return array(NULL, NULL);
  }

  if($start > 9)
  {
    // Start og slut er over 9, men hvad skal der udskrives?
    return array(0,0);
  }

  $start = max($start, 6);
  $slut <= min($slut, 9);
 
  return array($start, $slut);
}

echo implode(", ", vis(2,5)) . "<br />";
echo implode(", ", vis(3,7)) . "<br />";
echo implode(", ", vis(7,8)) . "<br />";
echo implode(", ", vis(7,0)) . "<br />";
echo implode(", ", vis(8,11)) . "<br />";
echo implode(", ", vis(10, 11)) . "<br />";
Avatar billede kodak Mester
08. juni 2014 - 18:32 #2
tror du har den,
lad mig sige det på en anden måde

Jeg har en tidslinie der vare en uge fyldt med forskellige opgaver, men jeg ønsker blot at overvåge en dag

og jeg arbejder i time()
//$_REQUEST['timeback'] = '0,0' (0 betyder i dag) (1 betyder i går)

$myArray = explode(',', $_REQUEST['timeback']);

//overvågningen starter her
$the_start_time = time() - ($myArray[0] * 86400);

//dette format får tidslinien
$the_start_view = date('Y,m,d',$the_start_time).",0,0,0";

//overvågningen slutter her
$the_end_time = time() - ($myArray[1] * 86400);

//dette format får tidslinien
$the_end_view = date('Y,m,d',$the_end_time).",24,00,00";

vil gerne se alle opgaver her imellem selv dem der er startet før, derfor er dem der er startet før $the_start_time blevet omdøbt til $the_start_time

og ligeledes dem der fortsætter efter $the_end_time er ophørt skal omdøbes til $the_end_time
Avatar billede kodak Mester
08. juni 2014 - 18:35 #3
og resultatet skulle gerne ud i denne while.

while($row = mysql_fetch_array($result_timeline)) {
  echo "[ 'Title', 'Title', new Date(".$the_start_view."),  new Date(".$the_end_view.") ],\n      ";
}
Avatar billede moddi100 Seniormester
08. juni 2014 - 18:51 #4
Så ville jeg nok overveje at lave det direkte i din SQL-sætning. Hvordan ser den ud?
Avatar billede kodak Mester
08. juni 2014 - 18:54 #5
hvordan mener du?

$result_timeline = mysql_query("SELECT * FROM `input_module` ORDER BY `time` DESC")
Avatar billede moddi100 Seniormester
08. juni 2014 - 19:12 #6
Altså begrænse det, så du kun trækker de relevante opgaver ud med din sql-sætning. Og altså ikke får events du ikke skal have med ud.

Er det korrekt forstået at du blot bruger $_REQUEST['timeback'] til at bladre imellem ugerne/dagene med?
Avatar billede kodak Mester
08. juni 2014 - 20:07 #7
$_REQUEST['timeback'] er -x dage (1,1)
('dagen før kl. 00:00','dagen før kl. 24:00)

så hvis værdi er (7,0)
vil den vise en hel uge

og hvis værdi er (14,0)
vil den vise en hel uge
Avatar billede kodak Mester
08. juni 2014 - 20:08 #8
nej hvis værdi er (14,0)
vil den vise to hele uger

nej hvis værdi er (14,7)
vil den vise en hel uge for en uge siden.
Avatar billede moddi100 Seniormester
08. juni 2014 - 20:13 #9
Super, og hvad hedder de to kolonner i databasen, som du bruger til at gemme start- og slut-tidspunktet for opgaverne i?
Avatar billede kodak Mester
08. juni 2014 - 20:33 #10
start: output_sand_time
slut: output_false_time

deres værdi er time() format
Avatar billede moddi100 Seniormester
08. juni 2014 - 21:01 #11

function beregn($start, $slut, $min, $max)
{
  if($slut == 0)
  {
    // Er $slut lige med 0, erstatter vi tallet med 9
    $slut = $max;
  }
 
  if($slut < $min) // Start og slut under 6
  {
    return array(NULL, NULL);
  }

  if($start > $max)
  {
    // Start og slut er over 9, men hvad skal der udskrives?
    return array(0,0);
  }

  $start = max($start, $min);
  $slut <= min($slut, $max);
 
  return array($start, $slut);
}

$myArray = explode(',', $_REQUEST['timeback']);

$min = strtotime("-" . (int)$myArray[0] . " days",mktime(0,0,1));
$max = strtotime("-" . (int)$myArray[1] . " days",mktime(23,59,59));

while($row = mysql_fetch_array($result_timeline))
{
  // Brug funktionen fra før blot med nyt navn
  list($start, $end) = beregn($row['output_sand_time'], $row['output_false_time'], $min, $max);

  // Skip rækker vi ikke skal bruge
  if($start == NULL)
    continue;

  // Udskriv
  echo "[ 'Title', 'Title', new Date(".$start."),  new Date(".$slut.") ],\n      ";
}


Prøv at indsæt koden og lad mig høre, om det giver det forventede.
Avatar billede kodak Mester
08. juni 2014 - 21:25 #12
kender ikke dit output

det er nød til at være 'Y,m,d,H,i,s'

men af en eller anden grund viser den flere af den samme.
Avatar billede kodak Mester
08. juni 2014 - 21:30 #13
Avatar billede moddi100 Seniormester
08. juni 2014 - 21:40 #14
Du har beskyttet dine sider med adgangskode, men hvis du udskifter sidste linje, går det så ikke:

// Erstat følgende linje:
  echo "[ 'Title', 'Title', new Date(".$start."),  new Date(".$slut.") ],\n      ";

// med
  echo "[ 'Title', 'Title', new Date(".date('Y,m,d,H,i,s', $start)."),  new Date(".date('Y,m,d,H,i,s', $slut).") ],\n      ";
Avatar billede kodak Mester
08. juni 2014 - 22:13 #15
sorry

det gjorde siden blank:

http://line-web.dk/Blue_Captain/demo.php
user line-web
pass guest
Avatar billede moddi100 Seniormester
09. juni 2014 - 00:08 #16
Hovsa, kan se hvorfor den har lidt problemer med den sidste linje. Skal være:

echo "[ 'Title', 'Title', new Date(".date('Y,m,d,H,i,s', $start)."),  new Date(".date('Y,m,d,H,i,s', $end).") ],\n      ";


Så kigger vi lige på det derefter
Avatar billede kodak Mester
09. juni 2014 - 01:53 #17
Så gav det mening
og ser umidbart ud til at virke
Kikker lige på det.
Avatar billede kodak Mester
09. juni 2014 - 11:43 #18
den øverste linie er en jeg har sat ind for at se perioden man kan se

men har stikker den ene ud:
http://line-web.dk/Blue_Captain/apps/timeline.php?timeback=2,1
Avatar billede kodak Mester
09. juni 2014 - 11:55 #19
der manglede lidt,

har smidt dette ind i funktionen:

if ($slut >= $max) {
  // Er $slut lige med er over $max, erstatter vi tallet med $max
  $slut = $max;
}
Avatar billede moddi100 Seniormester
09. juni 2014 - 13:13 #20
Skal jeg forstå det som at #19 løste problemet nævnt i #18 ?

Er det hele som du vil have det nu?
Avatar billede kodak Mester
09. juni 2014 - 13:25 #21
ja takker mange gange for hjælpen.
Avatar billede moddi100 Seniormester
09. juni 2014 - 13:42 #22
Det var godt :)
Avatar billede kodak Mester
11. juni 2014 - 18:43 #23
Kan du forresten sige mig hvorfor den er 1 måned foran?
Avatar billede kodak Mester
12. juni 2014 - 01:23 #24
Lige nu i skrivende stund er klokken. 01:20 d. 12-06-2014 på mit pc ur.
men på mint skema mener den at klokken er 12:53 am d. 12-07-2014.
det vil sige at den er 1 måned foran og 27 min bagud.
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Senior Test Manager

Danske Commodities A/S

Procurement manager

Cognizant Technology Solutions Denmark ApS

Service Line Specialist - ServiceNow (Thirdera)