PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   DATUM start DATUM ende AND Termine inthemiddle (http://www.selfphp.de/forum/showthread.php?t=8210)

daniel son 19.07.2004 18:15:47

DATUM start DATUM ende AND Termine inthemiddle
 
hi leutz ich wollte euch mit sowas eigentlich nicht belästigen ,
aber allmählich platzt mir der schädel ....

ich würde gern alle termine für das heutige datum, auf klick des datums -> entsprechnden termine , -> und übermehreretage Termine ausgeben

bin soweit mit dem ganzen auslesen und so auch durch und kleb den ganzen tag schon bei php.net bei den Operatoren ...

aber irgendwie ... baff *schlauchsteh*

hab da mal ein wenig Kot vieleicht siehts ja jemand direckt

hab den code sinngemäß gekürzt:

PHP-Code:

if ($_GET["leglosvariable"] >= 1){

 
$heute mktime(0,0,0,date("m"),date("d"),date("Y"));
  
$morgen mktime(0,0,0,date("m"),date("d")+1,date("Y"));
  
$selday $_GET["v"]; //per GET ausgewähler StartTag $selmont = $_GET["m"]; // per get ausgewälter monat


$unixdaystart mktime(0,0,0,$selmont,$selday,date("Y")); //das per GET bekommene datum ab als UNIXTIMESTAMP
$unixdayend mktime(0,0,0,$selmont,$selday+1,date("Y"));//das per GET bekommene datum ab als UNIXTIMESTAMP

//für aus der datenbank geholtes Termin array prüfung starten

for ($tup 1$tup $b$tup++) {
    

 
//hiermit hab ich es erst versucht - funtionierte auch so weit ... bis auf den heutigen tag   
//(($ort[$tup][datetime_start]>=$heute )&&($ort[$tup][datetime_end]<=$morgen ))or(($ort[$tup][datetime_start]-86400<=$unixdaystart )&&($ort[$tup][datetime_end]+86400>=$unixdayend ))or(($ort[$tup][datetime_start]>=$unixdaystart )&&($ort[$tup][datetime_end]<=$unixdayend ))
  
$eTimestart $ort[$tup][datetime_start];
  
$eTimeend $ort[$tup][datetime_end];
  if ((
$eTimestart>=$unixdaystart)or($eTimeend<=$unixdayend)){  // hier hab ichs mal auf die SingleDay events reduziert
//und um diese if abfrage gehts mir ...

    
    
    
    // Ausgabe klar .... oda ? 
    
$content .= "<table border=1><tr><td><font face=ARIAL size=1> ";
    
$content .= strftime("Anfang: %d.%B.%Y ,<b>%H:%M</b>",$ort[$tup][datetime_start]);
    
//$content .= $ort[$tup][datetime_start];
    
$content .= "</font></td><td><font face=ARIAL size=1>";
    
$content .= strftime("Ende: %d.%B.%Y ,<b>%H:%M</b>",$ort[$tup][datetime_end]);
    
//$content .= $ort[$tup][datetime_end];
    
$content .= "</font></td><td><font face=ARIAL size=1>Titel der Veranstalltung:<b>";
    
$content .= $ort[$tup][eventtitel];
    
$content .= "</b></font></td></tr></table>";
    
$content .= $eventstatus;
}
}






   



ich hab momentan keinen balssen schimmer wie ich ....

wiegesagt ...
den termin für heute .....

per GET eingegrenzten termin ...
und wenn ein termin sagen wir vom 16 - 22 August geht ... das wenn ich auf dem kalender "klicke" auf den 18 oder 17 etc auch diesen termin ausgegeben bekomme ...

hoffe ihr versteht was ich meine !!!

ich hab auch schon den ganzen vormittag die suche gequält und gegooglt aber ... irgendwie bräucht ich auch nen tip wo ich genau (ausser Operatoren nachlesen bitte !!! ) suchen kann ... oder nach was ....



1000000000000 DANK!!! für eure tips und hilfef !!!
gruß Daniel



sorry für die überbreite des POSTS

tapferesschneid 19.07.2004 19:46:12

Ich habe Deinen Original-Code jetzt nicht komplett gelesen (ist mir zu breit ;-), aber nützt Dir das was?

Code:

SELECT `event`
FROM `termine`
WHERE CURRENT_DATE() BETWEEN `start_date` AND `end_date`


daniel son 20.07.2004 12:05:38

sorry das ich so lange auf mich warten lasse ;)

ich kann das verstehen das man den code nicht lesen will ... aufgrund seiner "breit-ness"

aber leider wollte ich das array $ort

irgendwie abfragen ... und nicht erneut aus der DB lesen .... aber trotzdem danke für den tip ... weil wenn es garnicht anders geht werd ich mich deines tips annehmen...

danke danke
daniel

aber vieleicht gibts da noch ne andere lösung ???


--------nachtrag Captain Geinway Logbuch Sternzeit 238475620345


so hab den SQL befehl mal probiert aber .... irgendwie bringt der auch nicht meine termine ....Array()... leer :(

gegenfrage welches Datums format hat CURRENT_DATE() .... brauch was mit UNIXTIME... die daten sind als unix zeit gespeichert incl uhrzeit quasie...


tapferesschneid 20.07.2004 12:32:19

CURRENT_DATE() gibt ein DATETIME-Format zurück, mit dem MySQL relativ intelligent umgeht, nur die Brücke zu UNIX-TIMESTAMP muß man selner bauen:
Code:

SELECT `event`
FROM `termine`
WHERE UNIX_TIMESTAMP(CURRENT_DATE()) BETWEEN `start_date` AND `end_date`


daniel son 20.07.2004 12:43:31

ertsmal 100000000 millionen dank für eure schnellen antworten und auch die gedult ...

leider bin ich nicht ganz so bewandert mit den MySQL befehlen ... aber normal schaff ich das immer irgendwie ....

aber diesmal ... hm ....

sorry auch mit
WHERE UNIX_TIMESTAMP(CURRENT_DATE())

bleibt das array leer ...

hab mich jetzt ein wenig mit search_array und in_array befasst ...
aber da muss ich noch ein wenig rumprobieren ...
ich denke das die DB garnicht mehr gebracuht wird da ich ca 30 zeilen vorher ... das Array $ort

mit allen Events/Terminen fülle ..

hab quasie nur ein problem mit der richtigen abfrage der termine die über mehrer tage gehen...
PHP-Code:

if (($eTimestart>=$unixdaystart)&&($eTimeend<=$unixdayend)) 


alle einzelTegTermine gibt er aus ... nur...dieses eine sc***** nagut ...
vieleicht noch ein tip
%-)
SORRY

tapferesschneid 20.07.2004 13:01:13

Nimm doch die WHERE-Bedingung gleich in die erste Abfrage mit rein, dann hast Du nur noch die passenden Datensätze in $ort ...

daniel son 20.07.2004 13:13:37

hihi leichter gesagt als getan ,....

ich erklär mal kurz ...

ich hab einen grafischen kalender ..
dieser markiert schon durch ein anderes script multi events ... (durch die INFOS aus dem $ort())

so und jetzt sollen auf klick des datums die termin für diesen tag angezeigt werden .... ich hab gehoft das mit dem einzlenem array
zu machen ...


das problem wäre ... das im vorfeld ja dann nur bestimmte termine im kalender angezeigt werden ... (sollen aber alle dargestellt werden) erst nach dem klick auch ein datum .. werden die Termine "gesucht "

das haupt Prob.:
hole datensätze aus DB where GEWÄHLTESDATUM fällt ZWISCHEN zeiterminen.... quasie

das problem ist auch noch, das das sql das mit den Timestamps irgendwie nicht haben will ....

nagut ich versuchs nochmal mit den sql BETWEEN und so ... (hm das kann doch im prinziep garnicht so schwer sein)+


hättest du tapferesschneiderlein evtl nen link zur deutschen mysql doku???

xabbuh 20.07.2004 13:23:10

Dokumentation

daniel son 20.07.2004 13:26:24

es lebe der gute alte lesestoff...

danke xabbuh
so dann bis in 2 monaten bis ich das alles durchhab ;)



---------------

so jetzt hab ich auch mal ein positievees ergebniss.... und zwar so

SELECT * FROM user_calendar_event WHERE UNIX_TIMESTAMP('$unixdaystart') BETWEEN 'datetime_start' AND 'datetime_start'

funktioniert es eher bedingt ...
da er mir alle termine ausgibt aber der versuch mit

SELECT * FROM user_calendar_event WHERE UNIX_TIMESTAMP('$unixdaystart') AND UNIX_TIMESTAMP('$unixdayend')BETWEEN 'datetime_start' AND 'datetime_start'


gibt garnix aus ....
ach ja $unixdaystart (geählter tag anfang) $unixdayend (gewälter tag ende)

tapferesschneid 20.07.2004 13:46:16

=> BETWEEN start AND start ???


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:15:19 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.