tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
25
ZUGRIFFE
361
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Guten Morgen zusammen,

    eine Freundin von mir hat nun einen Partner gefunden, jedoch führen die beiden eine Fernbeziehung und können sich daher nicht immer sehen. Da sie durch die Gesundheit ein paar Konzentrationsschwierigkeiten hat, fragte sie mich, ob ich ihr ein Script basteln könne, welches die Treffen des Paares auflistet und dazu die Dauer berechnet und auch die Wartezeit zwischen den Treffen.

    Der erste Versuch bezog sich lediglich auf ein Countdown Script. Dank eurer Hilfe habe ich mir dann schon das umgehen mit der Zeit in php ein wenig angeeignet und hoffe nun, dass ihr mir bei der letzten Verbesserung auch noch helfen könnt.

    Das Script ist im Moment so aufgebaut, dass ich für jedes Treffen drei Variable definiere:
    PHP-Code:
        // 1. Treffen
            
    $treffen_1_start strtotime("27.12.2010 14:02:00");     // Beginn
            
    $treffen_1_ende strtotime("08.01.2011 12:00:00");     // Ende
            
    $treffen_1_dauer = (($treffen_1_ende $treffen_1_start) / 86400);    // Dauer 
    So kann zu jedem Treffen Datum und Uhrzeit angegeben werden und es wird gleich die Dauer des Treffens errechnet.

    Im zweiten Teil gibt es dann die Berechnung der Wartezeit zwischen den einzelnen Treffen, welches ich so gelöst habe:
    PHP-Code:
        // Wartezeit 1
            
    $warten_1 = (($treffen_1_start $kontakt) / 86400);     // Zeit zw. Ersten Kontakt und 1. Treffen
        // Wartezeit 2
            
    $warten_2 = (($treffen_2_start $treffen_1_ende) / 86400);     // Zeit zwischen den Treffen 
    Das kleine Script soll dann auch ausgeben, wie lange es noch bis zu dem nächsten Treffen ist. Mir ist bewusst, dass dies nur bei dem Seitenaufruf oder dem Aktualisieren der Seite geschieht, doch das reicht aus. Umgesetzt habe ich das so:
    PHP-Code:
        // Uebrige Zeit zum Treffen
        
    $counter_5 = (($treffen_5_start $heute) / 86400);
        
        
    $counter_5_sec abs($treffen_5_start $heute);    // Sekunden
        
    $counter_5_min intval($counter_5_sec 60);        // Minuten
        
    $counter_5_sec %= 60;    // Verhältnis zw sec und min
        
    $counter_5_h intval($counter_5_min 60);        // Stunden
        
    $counter_5_min %= 60;    // Verhältnis zw min und h
        
    $counter_5_d intval($counter_5_h 24);        // Tag
        
    $counter_5_h %= 24;    // Verhältnis h zu Tag 
    Die letzte Berechnung ist dann die, dass ausgegeben werden soll, wie lange sich die beiden getroffen haben. Das habe ich so gelöst:
    PHP-Code:
        // Berechnen der Gesamt-Zeit unserer Treffen
            
    $gesamt_haben round(($treffen_1_dauer $treffen_2_dauer $treffen_3_dauer $treffen_4_dauer $treffen_5_dauer),2); 
    Nun komme ich zu meinem Problem. Am Ende von dem Script habe ich eine Tabelle, in der die einzelnen Treffen aufgelistet sind und damit auch die Dauer und die Wartezeit zum kommenden Treffen. Das gibt es hier zu sehen.

    Die Tabelle habe ich im Moment mit einem WYSIWYG-Editor erstellt. Das hat aber den Nachteil, dass ich für jedes neue Treffen auch eine neue Zeile einfügen muss und in jener auch die leicht veränderte PHP-Variable.

    Meine Variablen haben schon eine Fortlaufendezahl, damit ich so sehr einfach die entsprechende Zeilen kopieren konnte und nur noch die Zahl verändern braucht.

    Meine Idee ist nun, dass ich mir die fortlaufende Nummerierung zu nutze mache und das Script so um stelle, dass die Dauer des Treffen, die Wartezeiten dazwischen und die Tabelle automatisch erzeugt wird. Das Pärchen ist nun bei dem 5. Treffen. Also dachte ich mir, dass ich am Anfang des Scriptes noch eine Variable setzte, die lediglich die fortlaufende Nummer des aktuellen Treffen enthält. Zum Beispiel also
    PHP-Code:
    $aktuell 5
    Meine erste und wichtigste Frage wäre nun, wie ich in einer Variable noch eine Variable unterbringe. Also wie ich bei dieser Zeile
    PHP-Code:
    $treffen_1_dauer = (($treffen_1_ende $treffen_1_start) / 86400);    // Dauer 
    die Zahlen durch eine Variable ersetzten kann, ohne das es die restliche Variable "beschädigt".

    Bei dieser Zeile muss ich eine Möglichkeit finden, wie ich es umsetzten kann, dass sie bis zur Anzahl der eingetragenen Variable (also der 5) wiederholt wird und das bei jeder wiederholung die Zahl 1 um 1 erhöht wird. Müsste für die Berechnung dann dieses erhalten:
    PHP-Code:
    $treffen_1_dauer = (($treffen_1_ende $treffen_1_start) / 86400);    // Dauer
    $treffen_2_dauer = (($treffen_2_ende $treffen_2_start) / 86400);    // Dauer
    $treffen_3_dauer = (($treffen_3_ende $treffen_3_start) / 86400);    // Dauer
    $treffen_4_dauer = (($treffen_4_ende $treffen_4_start) / 86400);    // Dauer
    $treffen_5_dauer = (($treffen_5_ende $treffen_5_start) / 86400);    // Dauer 
    Und genau in diesem Bereich muss ich mein Wissen erweitern und hoffe, dass ihr mir helfen könnt.

    Insgesamt muss ich am Ende diese PHP-Code Zeilen abändern
    PHP-Code:
    <?php
    // Vordefinierte Werte
    // ===================

        // Aktuelles Datum und aktuelle Uhrzeit mit dem Zeitstempel
            
    $datum date("d.m.Y");        // Aktuelles Datum
            
    $zeit date("H:i:s");        // Aktuelle Uhrzeit
            
    $heute mktime();            // Zeitstempel

        // Variable mit der fortlaufenden Nummer des anstehenden Treffen
            
    $naechstes 5// Zahl des anstehenden Treffen

    // Zeitpunkte der Treffen mit Start, Ende und der Dauer
    // ====================================================

        // Erster Kontakt
            
    $kontakt strtotime("22.09.2010 14:34:00"); // Erster Kontakt auf gofeminin.de
        // 1. Treffen
            
    $treffen_1_start strtotime("27.12.2010 14:02:00");     // Beginn
            
    $treffen_1_ende strtotime("08.01.2011 12:00:00");     // Ende
        // 2. Treffen
            
    $treffen_2_start strtotime("16.02.2011 13:02:00");     // Beginn
            
    $treffen_2_ende strtotime("01.03.2011 12:00:00");     // Ende
        // 3. Treffen
            
    $treffen_3_start strtotime("21.04.2011 16:05:44");     // Beginn
            
    $treffen_3_ende strtotime("26.04.2011  12:00:00");    // Ende
        // 4. Treffen
            
    $treffen_4_start strtotime("01.06.2011 15:12:45");     // Beginn
            
    $treffen_4_ende strtotime("13.06.2011 11:41:55");    // Ende
        // 5. Treffen
            
    $treffen_5_start strtotime("06.08.2011 11:41:00");     // Beginn
            
    $treffen_5_ende strtotime("20.08.2011 12:25:00");    // Ende

        // Achtung, die folgenden sind nur aufgeführt, damit ich später nur das Datum und die Uhrzeit eintragen brauch
        
        // 6. Treffen
            
    $treffen_6_start strtotime("01.09.2011 13:02:00");     // Beginn
            
    $treffen_6_ende strtotime("07.09.2011 12:00:00");    // Ende
        // 7. Treffen
            
    $treffen_7_start strtotime("01.10.2011 13:02:00");     // Beginn
            
    $treffen_7_ende strtotime("07.10.2011 12:00:00");    // Ende



    // Berechnung der dauer der jeweiligen Treffen
    // ===========================================

        
    $treffen_1_dauer = (($treffen_1_ende $treffen_1_start) / 86400);    // Dauer



    // Berechnung der Wartezeiten
    // ==========================

            
    $warten_1 = (($treffen_1_start $kontakt) / 86400);     // Zeit zw. Ersten Kontakt und 1. Treffen



    // Errechnen der aktuellen Zeit bis zum Treffen
    // ============================================

        // Uebrige Zeit zum Treffen
        
    $counter_5 = (($treffen_5_start $heute) / 86400);
        
        
    $counter_5_sec abs($treffen_5_start $heute);    // Sekunden
        
    $counter_5_min intval($counter_5_sec 60);        // Minuten
        
    $counter_5_sec %= 60;    // Verhältnis zw sec und min
        
    $counter_5_h intval($counter_5_min 60);        // Stunden
        
    $counter_5_min %= 60;    // Verhältnis zw min und h
        
    $counter_5_d intval($counter_5_h 24);        // Tag
        
    $counter_5_h %= 24;    // Verhältnis h zu Tag



    // Berechnung der Gesamt Zeiten
    // ============================

        // Berechnen der Gesamt-Zeit unserer Treffen
            
    $gesamt_haben round(($treffen_1_dauer $treffen_2_dauer $treffen_3_dauer $treffen_4_dauer $treffen_5_dauer),2);
        
    ?>
    Und dann noch die Tabelle.

    Eine fertige Lösung möchte ich von euch nicht haben, sondern lieber Tipps, Hinweise und Ratschläge.

    Denn ähnlich wie bei der guten Freundin habe auch ich einpaar gesundheitliche Baustellen, weshalb ich schon starke Schmerzmittel nehmen muss. Diese wirken sich auch auf meine Konzentration usw. aus, so dass ich mir manches zum wiederholten male aneignen muss oder es bei manchen Situationen nicht auf anhieb "klick" macht.

    Aufgeben zählt aber nicht, denn man soll sich ja so viel vom Leben erhalten, wie es irgendwie geht. Daher hoffe ich, dass ihr Verständnis dafür habt.

    Lieben Gruß
    Tobias
     

  2. #2
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Guten Morgen,

    habe selbst nun einfach mal die Variable $aktuell mit einer if else Bedingung (oder Schleife?) getestet um zu schauen, ob php die geschriebene Zahl überhaupt beachtet. Dies klappt auch:
    In der Variable aktuell steht der Wert 5. Die Bedingung ist also wahr.
    Getestet habe ich das mit diesen kurzen Zeilen:
    PHP-Code:
    <?php
        
    // Versuch zu schauen, wie man sich auf die Zahl der Variable beziehen kann
        
    if ($aktuell == 5) {
            echo 
    "In der Variable <em>aktuell</em> steht der Wert " $aktuell ". <strong>Die Bedingung ist also wahr.</strong>";
            }    else {
                echo 
    "In der Variable <em>aktuell</em> steht nicht der Wert 5. Die Variable hat den Inhalt: " $aktuell ". <strong>Somit ist die Bedingung nicht wahr.</strong>"; }
    ?>
    Zu vor in der Datei ist die Variable definiert:
    PHP-Code:
        // Variable mit der fortlaufenden Nummer des anstehenden Treffen
            
    $aktuell "5"// Zahl des anstehenden Treffen 
    Nun könnte ich die if-Schleifen so wiederholen, bis sie bei dem Wert 5 ankommt, doch ist das der richtige Weg? Selbst wenn, wüsste ich gerade nicht, wie ich das machen könnte.

    Hoffe ihr habt Tipps für mich! Nun aber erstmal gute Nacht!
     

  3. #3
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Schau Dir mal Schleifen und Arrays an, das macht die Sache sehr viel pflegeleichter - und vor Allem effizienter.

    PHP-Code:
    // dies ist ein array im array mit (anfang, ende)
    // also ein zweidimensionales Variablenfeld
    $zeiten= array(
    array( 
    19872000),
    array( 
    20052007),
    array( 
    20102015),
    array( 
    20202039)
    );

    // anzahl der einträge in $zeiten auslesen
    $counted count($zeiten);

    // und eine schleife, die jedes array im array durchgeht
    for($i;$i<$counted;$i++)
    {
       echo 
    "Eintrag ".$i."</br>";
       echo 
    "Anfangszeit :".$zeiten[$i][0]."</br>";
       echo 
    "Endzeit :".$zeiten[$i][1]."</br>";
    }

    // genauso einfach mit foreach()
    foreach($zeiten as $treffen)
    {
       echo 
    "Anfangszeit :".$treffen[0]."</br>";
       echo 
    "Endzeit :".$treffen[1]."</br>";

    mfg chmee
    Geändert von chmee (27.07.11 um 02:44 Uhr)
    Muckel1986 bedankt sich. 
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  4. #4
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Guten Tag und vielen Dank für Deine Antwort!

    Dein Beispiel klingt interessant, doch es geht mir ja nicht nur um die Jahreszahl. Bei meiner Variante berücksichtige ich die Uhrzeit und das dazugehörige Datum. Die Uhrzeit bezieht sich auf die Ankunftszeit des Zuges oder seiner Abfahrtszeit (je nachdem ob es der Anfang oder das Ende ist).

    Berücksichtigt das array dann auch das komplette Datum mit Uhrzeit?
     

  5. #5
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Was im Array drinsteht, ist herzlich egal. Da Du solche Fragen stellst, nehme ich an, dass Du mit Programmieren (noch) nicht lange zu tun hast..

    Jenes Array könnte auch so aussehen:
    PHP-Code:
    $zeiten= array(
    array(
    "27.12.2010 14:02:00","08.01.2011 12:00:00")
    ); 

    // und eine Schleife dazu
    foreach($zeiten as $meeting)
    echo 
    strtotime($meeting[0])." bis ".strtotime[$meeting[1])."<br/>"
    Ein Array ist eine Liste von Variablen - egal welcher Art, die per Index angesprochen werden können. In meinem Beispiel mach ich den zweiten Schritt und packe eine Liste von Einträgen in eine weitere Liste, das ergibt ein 2dimensionales Listenfeld, analog zu einer Exceltabelle, welches man mit Position X und Position Y ansprechen kann.

    mfg chmee
    Geändert von chmee (27.07.11 um 11:39 Uhr)
    Muckel1986 bedankt sich. 
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  6. #6
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Hallo zusammen,

    irgendwie gibt es da noch eine Schwierigkeit. Hab es jetzt mit Zahlen und dem Datum getestet. Bekomme davon folgende Ausgabe:
    Test mit Datum

    Eintrag
    Anfangszeit :
    Endzeit :

    Eintrag 1
    Anfangszeit :16.02.2011
    Endzeit :01.03.2011

    Eintrag 2
    Anfangszeit :21.04.2011
    Endzeit :26.04.2011

    Eintrag 3
    Anfangszeit :01.06.2011
    Endzeit :13.06.2011

    Eintrag 4
    Anfangszeit :06.08.2011
    Endzeit :20.08.2011
    Test mit Zahlen

    Eintrag
    Anfangszeit :
    Endzeit :

    Eintrag 1
    Anfangszeit :3
    Endzeit :4

    Eintrag 2
    Anfangszeit :5
    Endzeit :6

    Eintrag 3
    Anfangszeit :7
    Endzeit :8

    Eintrag 4
    Anfangszeit :9
    Endzeit :10
    Genutzt habe ich dafür Deine Code-Zeilen. Lediglich den Namen der Variable habe ich am Anfang geändert, damit es für mich verständlicher ist. Für den Test der Zahlen, habe ich die Variablen auch umgenannt, damit für zwei verschiedene Sachen in dem Script nicht die selbe Variable gesetzt wird:
    PHP-Code:
    // Angabe der Treffen in einem Array1
        
    $treffen = array(
            array( 
    '27.12.2010''08.01.2011'),
            array( 
    '16.02.2011''01.03.2011'),
            array( 
    '21.04.2011''26.04.2011'),
            array( 
    '01.06.2011''13.06.2011'),
            array( 
    '06.08.2011''20.08.2011')
        );


    // anzahl der Einträge in $treffen auslesen
        
    $counted count($treffen);

    // und eine schleife, die jedes array im array durchgeht
        
    for($i;$i<$counted;$i++)
            {
            echo 
    "<p>Eintrag ".$i."</br>";
            echo 
    "Anfangszeit :".$treffen[$i][0]."</br>";
            echo 
    "Endzeit :".$treffen[$i][1]."</p>";
            }

    echo (
    "<h1>Test mit Zahlen</h1>");

    // Angabe der Treffen in einem Array 2
        
    $zahlen = array(
            array( 
    12),
            array( 
    34),
            array( 
    56),
            array( 
    78),
            array( 
    910)
        );

    // anzahl der Einträge in $treffen auslesen
        
    $zaehlen count($zahlen);

    // und eine schleife, die jedes array im array durchgeht
        
    for($x;$x<$zaehlen;$x++)
            {
            echo 
    "<p>Eintrag ".$x."</br>";
            echo 
    "Anfangszeit :".$zahlen[$x][0]."</br>";
            echo 
    "Endzeit :".$zahlen[$x][1]."</p>";
            } 
    Das Array klappt auch zu 99%, nur das jeweilig erste Array wird nicht berücksichtigt. Doch ich weiß im Moment nicht, woran das liegt.

    Dann habe ich zu der Zahl in den Eckigen Klammern eine Frage. Da gibt es ja 0 und 1. Bezieht sich das auf die Einträge im jeweiligen Array? Also 0 = erster Eintrag, 1 = zweiter Wert im Array. Sehe ich das so richtig?

    Lieben Gruß
    Tobias
     

  7. #7
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    sorry, hab den Fehler gesehen. In der For-Schleife, muß der Zähler $i initialisiert , also auf 0 gesetzt werden

    PHP-Code:
    for($i=0;$i<$counted;$i++)
    {
    #---

    Zur Frage: Ja, die Zählung fängt idR bei 0 an, erster Eintrag ist [0].

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  8. #8
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Guten Tag zusammen,

    das ganze hat soweit schonmal geklappt und ich habe in der Schleife nun auch die Tabelle geschrieben, so das sie sich eben auch "automatisch"vervollständigt.

    Als nächstes möchte ich nun die Dauer der Treffen und die Wartezeit berechnen. Da es aber gleich Mittagessen gibt, wird das erst nacher etwas.

    Der Code schaut nun so aus:
    PHP-Code:
    // Datum des ersten Kontaktes
        
    $kontakt strtotime("22.09.2010 14:34:00"); // Erster Kontakt auf einer Internetseite

    // Angabe der Treffen in einem Array1
        
    $treffen = array(
            array( 
    '27.12.2010''08.01.2011'),
            array( 
    '16.02.2011''01.03.2011'),
            array( 
    '21.04.2011''26.04.2011'),
            array( 
    '01.06.2011''13.06.2011'),
            array( 
    '06.08.2011''20.08.2011')
        );

    // anzahl der Einträge in $treffen auslesen
        
    $counted count($treffen);

    echo (
    "<h1>Testen der Ausgabe in einer Tabelle</h1>");

    // Ausgabe des Tabellen-Kopfes
    echo "<table id=\"uebersicht\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\" >
      <tr>
        <th align=\"center\" valign=\"middle\" scope=\"col\">Nr</th>
        <th align=\"center\" valign=\"middle\" scope=\"col\">Wartezeit</th>
        <th align=\"center\" valign=\"middle\" scope=\"col\">Beginn</th>
        <th align=\"center\" valign=\"middle\" scope=\"col\">Ende</th>
        <th align=\"center\" valign=\"middle\" scope=\"col\">Dauer</th>
        <th align=\"left\" valign=\"top\" scope=\"col\">Bemerkung</th>
      </tr>"
    ;
    // Ausgabe der übrigen Tabelle mit der Schleife
        
    for($i=0;$i<$counted;$i++)
            {
            echo 
    "<tr>";
            echo 
    "<td>".$i."</td>";
            echo 
    "<td>Wartezeit</td>";
            echo 
    "<td>".$treffen[$i][0]."</td>";
            echo 
    "<td>".$treffen[$i][1]."</td>";
            echo 
    "<td>Dauer</td>";
            echo 
    "<td>Bermerkung</td>";
            echo 
    "</tr>";
            }
        echo 
    "</table>"
     

  9. #9
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Hi,

    wenn du die einzelnen Einträge mittels der strtotime()-Funktion umrechnest, kannst du mit ihnen wunderbar rechnen. Die Datumse werden in den sogenannten Unix-Timestamp umgerechnet. Dieser ist ein Integerwert mit den Anzahl der Sekunden, die seit dem 1.1.1970 vergangen sind.

    Du wandelst also beide Werte in diesen Unixtimestamp um, berechnest die Differenz und rechnest die Sekunden in die gewünschte Einheit um.

    Best regards
    Muckel1986 bedankt sich. 

  10. #10
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Hallo zusammen,

    habe in der IF-Schleife nun eine Variable Namens dauer gesetzt, in der ich die Werte von einander abziehe und das Ergebnis dann auf 2 Stellen Runde. Im PHP-Code sieht das so aus:
    PHP-Code:
    // Ausgabe der übrigen Tabelle mit der Schleife
        
    for($i=0;$i<$counted;$i++)
            {
            
    $dauer round(($treffen[$i][1] - $treffen[$i][0]),2);
            echo 
    "<tr>";
                echo 
    "<td>".$i."</td>";
                echo 
    "<td>Wartezeit<br /></td>";
                echo 
    "<td>".$treffen[$i][0]."</td>";
                echo 
    "<td>".$treffen[$i][1]."</td>";
                echo 
    "<td>Dauer<br />" $dauer "</td>";
                echo 
    "<td>Bermerkung</td>";
            echo 
    "</tr>";
            } 
    Problem ist "nur", dass es nicht klappt, wenn während des Treffens auch ein Monatswechsel ist. Ist jener da, dann erscheint vor der Ausgabe ein Minuszeichen, welches ich mir nicht erklären kann. Zu sehen gibt es das hier.
     

  11. #11
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Den Teil meines Postings mit strtotime() hast du jetzt aber übersprungen, oder? Rechnen mit Datumse ist aufgrund ihrer Vielfalt in der Formatierung haarig. Da stolpert eine Programmiersprache schonmal schnell.

    Versuch es mal folgendermaßen:

    PHP-Code:
    $dauer strtotime($treffen[$i][1]) - strtotime($treffen[$i][0]); // Dauer in Sekunden
    $dauer $dauer 60 60 24// $dauer Sekunden durch 60 = Min durch 60 = Std durch 24 = Tage 
     

  12. #12
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Nee, übersprungen nicht. Nur als ich meinen Beitrag begann zu tippen, hast Du in der Zeit gepostet.
     

  13. #13
    Muckel1986 Muckel1986 ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Salzgitter, Germany, Germany
    Beiträge
    190
    Hallo zusammen,

    das errechnen der Dauer eines Treffen klappt nun auch:
    PHP-Code:
            // Berechnung der Dauer
                
    $dauer round((strtotime($treffen[$i][1]) - strtotime($treffen[$i][0])),2);
                
    $dauertage $dauer 60 60 24// in Minuten / in Stunden / in Tage 
    Für die Wartezeit könnte ich theoretisch das gleiche machen:
    PHP-Code:
            // Berechnung der Wartezeit
             
    $warten round((strtotime("06.08.2011")- strtotime("13.06.2011")),2);
             
    $wartentage $warten 60 60 24// in Minuten / in Stunden / in Tage 
    Das Problem ist dabei nur, dass bei dem zweiten Wert auf den zweiten Wert (Index 1) aus dem array zuvor zugreifen müsste. Und genau da liegt im Moment das Problem, da ich das aktuelle array durch die if Schleife gewählt wurde. Wie also plötzlich auf das vorherige zurückgreifen?

    Mein Ansatz ist nun, dass ich den Wert um den es geht in einer Variable speicher. Doch jene würde dann ja, wenn die Schleife wieder durchläuft, überschrieben...

    Muss nun erstmal weg, danach geht es weiter.

    Vielen Dank!
     

  14. #14
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    PHP-Code:
    // um auf das vorige element zuzugreifen
    $treffen[$i-1
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  15. #15
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Hi,

    du kannst in den eckigen Klammern ebenfalls schreiben:

    PHP-Code:
    $treffen[$i-1][1
    Damit referenzierst du den vorherigen Eintrage. Vorsichtig musst du da natürlich beim ersten Eintrag sein (einen Index -1 gibt es nicht). Ansonsten wird $i in dem Fall auch nicht verändert, $i-1 wird berechnet, benutzt und wieder weggeschmissen.

    Best regards
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.01.08, 12:58
  2. Antworten: 2
    Letzter Beitrag: 31.08.06, 12:35
  3. Zeiten berechnen
    Von chriha im Forum PHP
    Antworten: 13
    Letzter Beitrag: 26.12.05, 01:23
  4. verschieden pages zu verschiedenen zeiten
    Von tumid im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 19.12.02, 18:45

Stichworte