Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit mehrfacher Datums ausgabe!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit mehrfacher Datums ausgabe!

    Hallo,

    könnt ihr mir noch einmal unter die Arme greifen, irgendwie ist hier noch der Wurm drin und anscheinend sehe ich den Wald vor lauter Bäumen nicht.

    Ich möchte eigentlich nur das ein Datum nicht zwei mal ausgegeben wird, leider scheint es nur hin und wieder zu funktionieren.
    Ich habe keine Ahnung warum der 13.Juni korrekt ausgegeben wird und der 7.Juni nicht!

    Das ganze hier befindet sich in einer foreach Schleife


    if (prev($temp_datum) == $datum)
    {$datum = "";}
    else {
    $datum = $datum. ' ' . $year;
    }

    $datum entspricht dem Datum jeweils hinter dem array

    Array ( [0] => 17.Juli [1] => 18.Juni ) 18.Juni
    Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni ) 13.Juni
    Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni ) 13.Juni
    Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni [4] => 7.Juni ) 7.Juni
    Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni [4] => 7.Juni [5] => 7.Juni ) 7.Juni
    Array ( [0] => 17.Juli [1] => 18.Juni [2] => 13.Juni [3] => 13.Juni [4] => 7.Juni [5] => 7.Juni [6] => 2.Juni ) 2.Juni

    AUSGABE:

    18.Juni 2008
    08:45:00 der Laufkalender

    13.Juni 2008
    11:59:00 und wie weit ??
    08:58:00 leider keine Zeit .....

    7.Juni 2008
    13:19:00 am Freitag den 13. ab nach Heckershausen

    7.Juni 2008
    13:00:00 Oelder Citylauf ist sehr zu empfehlen

    2.Juni 2008
    15:40:00 22. Bentfelder Abendlauf am 30.05.2008


    Ich hoffe man kann einigermaßen verstehen was ich möchte!
    Eventuell könnt ihr mir auch einen Tip geben warum der 7.Juni zwei mal ausgegeben wird.


    Gruß


    Arguss

  • #2
    Hoi, ich weiß nicht genau was du machen möchtest. Es wäre gut wenn du noch etwas mehr Quellcode zeigen könntest.

    Ich nehme gerade an dass du ein Array mit lauter verschiedenen oder gleichen Datum füllen möchtest. Am Ende möchtest du das Array durchgehen und alle Einträge die am selben Tag sind ausgeben.

    Einfacher wäre es da mit einem multidimensionalen Array zu arbeiten.

    Code:
    Array (
        [7.Juli] => Array (
            [0] => 'tue dies und dass',
            [1] => 'und hier ist noch das möchglich'
        ),
        [2.Juli] => Array (
            [0] => 'tue dies und dass',
            [1] => 'und hier ist noch das möchglich'
        ),
        [1.August] => Array (
            [0] => 'tue dies und dass',
            [1] => 'und hier ist noch das möchglich'
        )
    )
    Das kannst du dann viel leichter durchgehen!

    PHP-Code:
    <?php
    foreach($array as $datum => $werte) {
        echo 
    $datum.'<br />';
        foreach(
    $werte as $aktion) {
            echo 
    $aktion.'<br />';
        }
        echo 
    '<br />';
    }

    Kommentar


    • #3
      Ich gebe dir mal den ganzen Quellcode

      PHP-Code:
      <title><?php echo $titel?></title>
      <?php include ("./config/config.php"); ?>
      <?php 
      include ("./includes/news_ticker.php"); ?>
       
      <?php
      $year        
      $_GET[year];
      $timestamp time();
      $real_y date(Y,$timestamp);
       
      ###Jahre auslesen Pulldown Menu##############################################################
       
          
      $news "SELECT YEAR(datum) AS Y FROM news";
          
      $news_archiv mysql_query($news);
      while (
      $objResult mysql_fetch_object($news_archiv)){
          
      $y_temp[]     = $objResult->Y;
      }
       
      ##Button Jahre###############################################################################
      $result array_unique($y_temp);
      rsort($result);
      $zaehler count($result);
      $zaehler $zaehler -1;
      $count "0"
       
      ?>
      <center>
      <table><tr>
      <form action="./index.php" method="GET" name="liste">
       
      <?php
      while ($count <= $zaehler){
      ?>
      <td><p><input type="hidden" name="name" value="News Archiv"></p><p><input type="submit" name="year" value="<?=$result[$count]?>"></p><br><br></td>
       
      <?php
      $count
      ++;
          }
      ?>
      </tr></table></center>
      </form>
       
       
      <?php
      ##Monate/Tage################################################################################
      $month = array();
       
      if (
      $year != true)
          {
      $year $real_y;}
       
          
      $news "SELECT titel as t, news_id as id, TIME(datum) as time, MONTH(datum) as m, DAY(datum) as d, titel as t FROM news WHERE YEAR(datum)= $year";
          
      $news_archiv mysql_query($news);
      while (
      $objResult mysql_fetch_object($news_archiv)){
          
      $temp_month    $objResult->m;
          
      $temp_day    $objResult->d;
          
      $temp_titel    $objResult->t;
          
      $temp_id    $objResult->id;
          
      $temp_time    $objResult->time;
       
      $monate    = array(    "1" => $januar,
                      
      "2" => $februar,
                      
      "3" => $maerz,
                      
      "4" => $april,
                      
      "5" => $mai,
                      
      "6" => $juni,
                      
      "7" => $juli,
                      
      "8" => $august,
                      
      "9" => $september,
                      
      "10" => $oktober,
                      
      "11" => $november,
                      
      "12" => $dezember);
       
      ###Speichern der Daten in einem mehrdiminsonalen Array Monat/Tag/ID/Titel/Zeit ##########################################
      ###und Überprüfen ob Werte schon vorhanden, speichern nur wenn nicht vorhanden ##########################################
       
      if ($temp_month == true)
          {
      $temp_month $monate[$temp_month];}
       
      if (!
      array_key_exists($temp_month$month))
          {
      $month[$temp_month] = array();}
       
          if (!
      array_key_exists($temp_day$month[$temp_month]))
              {
      $month[$temp_month][$temp_day] = array();}    
       
              if (!
      array_key_exists($temp_id$month[$temp_month][$temp_day]))
                  {
      $month[$temp_month][$temp_day][$temp_id] = array();}
       
                  if (!
      array_key_exists($temp_titel$month[$temp_month][$temp_day][$temp_id]))
                      {
      $month[$temp_month][$temp_day][$temp_id][$temp_titel] = array();}
       
                      if (!
      array_key_exists($temp_time$month[$temp_month][$temp_day][$temp_id][$temp_titel]))
                          {
      $month[$temp_month][$temp_day][$temp_id][$temp_titel][$temp_time] = array();}
      }
       
      ###Ausgabe und sortieren des Mehrdiminsonalen Arrays durch foreach Schleifen #############################################
       
      ksort ($month);
      foreach (
      $month as $temp_month => $days) {
      include(
      './template/news-archiv/header.php');
       
          
      krsort ($days);
          foreach (
      $days as $temp_day => $id) {
       
              
      krsort ($id);
              foreach (
      $id as $temp_id => $titel) {
               if (!
      $temp_id == "")
                  {
      $temp_id;}
       
                  foreach (
      $titel as $temp_titel => $time) {
       
                      foreach (
      $time as $temp_time => $end) {
       
       
      ###Anlegen eines Datum(Tag) array zur Überprüfung ob der Tag schonn einmal ausgegeben wurde ##############################
      ###wenn ja Varable $datum löschen ########################################################################################
       
      $temp_datum[] = "$temp_day.$temp_month";
      $datum "$temp_day.$temp_month";
       
       
      ### HIER SITZT DAS PROBLEM ####################################################
       
      if (prev($temp_datum) == $datum)
          {
      $datum "";}
       
      else {
          
      $datum $datum'&nbsp;' $year;}
       
      ###Anlegen der Zeit Variable ############################################################################################
       
      $time $temp_time;
       
      ###erstellen des Links für die Newstitel und speichern ##################################################################
       
      $news '<div align="left"><a href="./index.php?name=Home&news_id='.$temp_id.'&longtext=ok">'.$temp_titel.'</a></div>';
       
      include(
      './template/news-archiv/body.php');
       
      }
          }
              }
                  }
      include(
      './template/news-archiv/footer.php');
      }
       
      ?>
      Du kannst dir das ganzen auch unter
      Meine Testseite

      anschauen!

      Das Problem ist das das gleiche Tagesdatum in einen Monat nicht zwei mal ausgegeben werden soll!


      Gruß


      Arguss

      Kommentar


      • #4
        Bitte schreib den Quellcode in die entsprechenden PHP Tags. Damit der Quellcode eingerückt wird und man Syntaxhighlight hat. So kann das keiner lesen. Kommentare im Quellcode wären auch nicht schlecht zum rein finden.

        Und dein PHP Code sieht ziemlich kompliziert aus. Ist das wirklich nötig so viele array_key_exists(), so viele Arrays, so viel Zeugs? Das was du machen möchtest hört sich für mich eigentlich ziemlich einfach an!

        Kommentar


        • #5
          Ich habe den mein letztes Posting überarbeitet in Kommentare eingefügt, allerding lies sich der Text nicht einrücken, er landet immer wieder links am Rand.

          Ich hoffe du kannst mir trotzdem helfen.

          Eigentlich geht ja nur darum das in bei jedem durchlauf einer foreach Schleife ein neues Datum in ein array geschrieben wird und ich es mit dem letzten Wert des voran gegangen durchlauf vergleichen möchte. Sollten die Werte gleich sein dann soll die Variable $datum leer sein.



          Gruß


          Arguss

          Kommentar


          • #6
            Wenn du die [ php] [ /php] Tags nutzen würdest könnte man deinen Code
            1. besser lesen da Syntaxhighlight
            2. würde er eingerückt werden.

            Ich denke dass prev() den internen Zeiger des Arrays verändert. Und daher beim nächsten durchlauf nochmal dieses Item durchgelaufen wird.

            Du könntest es auch theoretisch so lösen:
            PHP-Code:
            <?php
            $last_element 
            '';
            foreach (
            $array as $key => $value) {
               if (
            $key == $last_element// gleich wie das letzte

                // tu was du tuen musst ;)

                
            $last_element $key// das aktuelle Element als "letztes" speichern für die nächste Runde
            }

            Kommentar

            Lädt...
            X