If (mysql_query)

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

  • #16
    Dann musst du in deiner for-Schleife noch eine foreach-Schleife einbauen, welche die (vorher abgerufenen und in einem Array gespeicherten) Ausblendzeiten durchrattert.

    Übrigens: $date->format("d-M-Y--W") wäre einfacher als alles einzeln abzurufen und selbst zusammenzustückeln.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #17
      ja, richtig ich kann das Array durchrattern lassen.
      PHP-Code:
      foreach( $datum_event_von as $var_von ){echo "(".$var_von.")";} 
      Habe aber 2 array die miteinanderverbunden sind, ich kann ja nciht 2 array in einer foreach schleife haben, wenn ich 2 schleifen machen und diese miteinander verschachtle - dann duchlääuft er eine Schaufe doppelt und es werden wilkürliche Daten ausgegeben.

      Kommentar


      • #18
        Welche foreach-Variante gibt es denn noch außer dieser?: foreach (... as ...)

        Richtig: foreach (... as ... => ...)

        Man bekommt für jedes Element eines Array (oder "des einen Array") den Schlüssel und den Wert. Was könnte man wohl mit dm Schlüssel anstellen, wenn es noch mehr Arrays gibt, die mit dem aktuellen verbunden sind?
        Zuletzt geändert von AmicaNoctis; 29.04.2011, 05:51.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #19
          Ja, klar wie hirnlos von mir, so sollte die Foreach aussehen.
          PHP-Code:
          foreach( $datum_event_von as $var  => $i)
          {
          echo= 
          "(".$datum_event_von[$var]."bis".$datum_event_bis[$var].")";

          Jezt habe ich aber das sêlbe Problem wie wenn ich direkt die While Schleife in die For schleife bauen würde.

          Kommentar


          • #20
            Ich verzweifle an dem Problem....

            Wie um alles in der Welt soll ich es nur angehen.

            Eine Foreach schleife ist gleich viel wert wie die while schleife. Ich muss ein $string zusammen bauen lassen in der Schleife die alle Werte enthält die später dann ich die Bedingung kommt.

            Nur wie mache ich das?

            Denn wenn ich innerhalb der Schleife folgendes ausgebe
            PHP-Code:
            echo"&& ($date < new DateTime(".$datum_event.") or $date > new DateTime(".$datum_event_end."))"
            bekomme ich den richtigen String zu sehen - wie kann ich den aber in eine $var stecken?

            So wird die variable bei jedem durchgang ja wieder neu geschrieben, bzw. überschieben.
            PHP-Code:
            $var "&& ($date < new DateTime(".$datum_event.") or $date > new DateTime(".$datum_event_end."))"
            Zuletzt geändert von sepp; 03.05.2011, 01:07.

            Kommentar


            • #21
              Hallo,

              das sieht ja aus, als wolltest du PHP-Code dynamisch erzeugen. Warum? Das ist nämlich in 99% aller Fälle eine schlechte Idee.

              Ursprünglich wolltest du bestimmte Daten ausblenden, was gleichbedeutend ist mit: alles anzeigen, was nicht so ein bestimmtes Datum ist. Die Daten die angezeigt werden sollen, was passiert dann mit denen? Darauf solltest du dich konzentrieren, statt irgendwelche merkwürdigen PHP-Code-Strings zusammenzubasteln.

              Gruß,

              Amica
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #22
                Ja, da hast Du recht, ich suchte einfach nach Möglichkeiten.

                Nun habe ich alles in die While schleife gepackt und versuche so auszugrenzen das nicht alle Daten bei jedem Durchlauf immer wieder angezeigt werden und die angegebenen Daten ebenso ausgrenzt.

                Also bin ich bereits auf Deiner Spur und überlege mir wie was angezeigt werden muss.

                Leider noch immer ohne Erfolg....bastle weiter

                Mein Gott ich verzweifle echt an dieser Sch....! Kann mir denn niemand einen Tipp geben wie ich es angehen kann - finde nirgens einen Ansatz weder auf Google noch sonst wo....HIIIILLLLFFFEEEEEEE


                Wenn ich die while Schleife innerhalb der for-Schleife mache habe ich zum einen folgendes Problem - alle Daten werden je Anzahl Datenzatzeiträge bzw. zeilen Duchläufe vervielfacht.

                PHP-Code:
                while ($row_test mysql_fetch_assoc($test))
                {
                $datum_event=$row_test['datum_event'];
                $datum_event_end=$row_test['datum_event_end'];
                        
                if(
                $date >= new DateTime($datum_event) && $date <= new DateTime($datum_event_end))
                {             
                $date1=$date->format("Y-m-d");
                echo 
                $date1<br />';

                So bekomme ich nun alle Tage die nicht angezeigt werden sollten.

                wenn ich nun folgend die Bedingun schreibe
                PHP-Code:
                if ($date !=  new DateTime($date1))
                {             
                echo 
                $tag.'-'$monat.'-'.$jahr.'--'.$woche.'+'.$i.'<br />';

                so wird zwar das Datum ausgeblendet aber nur von einem zeile der DB beim nächsten Durchlauf nimmt er diesen wieder mit.


                und das Problem mit dem muliplizieren wollten ich wie folgt angehen
                PHP-Code:
                if ($date !=  new DateTime($date_geschrieben))
                {             
                echo 
                $tag.'-'$monat.'-'.$jahr.'--'.$woche.'+'.$i.'<br />';
                $date_geschrieben=$date->format("Y-m-d");

                Geht aber auch nicht aus dem selben Grund - nun nimmt er nur noch die Daten aus der ersten Zeile der DB.


                Wenn ich aber alles umdrehe die for Schleife innerhalb der while- Schleibe mache dann geht es.
                PHP-Code:
                    while ($row_test mysql_fetch_assoc($test))
                    {
                    
                $datum_event=$row_test['datum_event'];
                    
                $datum_event_end=$row_test['datum_event_end'];
                        for (
                $date = clone $date_from$date <= $date_to$date->modify('next monday')) 
                        {        
                        
                $tag =$date->format('d');
                        
                $monat =$date->format('M');
                        
                $woche =$date->format('W');
                        
                $jahr =$date->format('Y');    
                            if(
                $date != $date_from)
                            {            
                                if(
                $date >= new DateTime($datum_event) && $date <= new DateTime($datum_event_end))
                                {             
                                
                $dd1 =$date->format("Y-m-d");
                                }
                                if (
                $date !=  new DateTime($dd) && $date !=  new DateTime($dd1))
                                {             
                                
                $dd =$date->format("Y-m-d");
                                echo 
                $tag.'-'$monat.'-'.$jahr.'--'.$woche.'<br />';
                                }            
                            }
                        }
                    } 

                Shit geht doch nicht!!! ;-(
                Zuletzt geändert von sepp; 04.05.2011, 02:10.

                Kommentar


                • #23
                  Ich suche noch immer nach Lösungen - hatt denn niemand eine Idee?


                  Schadee, dass mir niemand mehr helfen will! ;-(
                  Zuletzt geändert von sepp; 05.05.2011, 03:30.

                  Kommentar


                  • #24
                    Nun habe ich die Lösung. OHNE EURE MITHILFE!!!

                    Schade, dass mir nicht einmal jemand geraten hatte das ganze umzukehren.

                    Die Tage in ein Array laden und dann mittels For Schleife diese durchlaufen lassen wobei darin die MySQL Abfrage gemacht wird und nur die angezeigt werden welche keine Ergebnisse ausgeben.
                    PHP-Code:
                    $date_from = new DateTime('2010-08-22');
                    $date_to   = new DateTime('2011-07-22');


                    /* Tage ermitteln */
                    $days = array();
                    for ( 
                    $date = clone $date_from$date <= $date_to$date->modify('next Wednesday') ) 
                    {
                       if (
                    $date != $date_from)
                       {
                       
                    $days[] = clone $date;
                       }
                    }

                    /* Ausgabe der Tage*/
                    for ( $i 0$i count($days); $i++ )
                    {
                       
                    $date $days[$i];
                       
                    $daydate $date->format('Y-m-d');
                       
                    $resource mysql_query("SELECT * FROM  $tab_kalenderdaten  WHERE datum_event <=  '$daydate' AND datum_event_end >= '$daydate' ");
                          if ( 
                    mysql_num_rows($resource) < )  
                          {
                          echo 
                    $date->format('d-M-Y--W') . '<br />' "\n";
                          }
                    unset(
                    $date);

                    Kommentar


                    • #25
                      Zitat von sepp Beitrag anzeigen
                      Schade, dass mir nicht einmal jemand geraten hatte das ganze umzukehren.
                      Ja, echt schade, dass du nun 46 Datenbankabfragen machst, statt nur einer, wie wir vorgeschlagen hatten. Dass du die Tipps nicht verstanden hast, heißt nicht, dass dir hier niemand geholfen hat.
                      Zuletzt geändert von AmicaNoctis; 09.05.2011, 13:44.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #26
                        SQL Statements in Schleifen sind böse!
                        Vermutlich hat dir darum keiner den Tipp gegeben.
                        Wir werden alle sterben

                        Kommentar


                        • #27
                          Ja, das ist echt schade...da hast Du wohl recht.

                          Auch die SQL Statements in Schleifen sind böse - das stimmt.

                          Das sind doch Tipps wie sie immer kommen - schwammig, als Rätsel, etwas hämisch und ein bisschen überheblich. Warum kann man nicht einfach schreiben:
                          Super das Du zur Lösung gefunden hast aber man sollte vermeiden innerhalb einer Schleife ein SQL Statements zu machen. Und zudem läuft nun bei Deinem Beispiel die Abfrage 46 mal (nämlich je Tag) durch.
                          Ich würde auch die SQL Statements in ein Array packen und dann alles miteinander zu vergleichen.

                          So könnte man doch wertvolle und zielgerichtete Tipps geben.

                          Denn dann kommt das heraus:
                          PHP-Code:
                          date_default_timezone_set('Europe/Berlin');

                          $date_from = new DateTime('2010-08-22');
                          $date_to   = new DateTime('2011-07-22');

                          /* Datensaetze holen  nicht anzeigen*/
                          $kalenderdaten = array();
                          $abfrage_kalenderdaten mysql_query("SELECT * FROM  $tab_kalenderdaten  WHERE  event_art = 'ausblenden'");
                          while ( 
                          $row mysql_fetch_array ($abfrage_kalenderdaten) ) 
                          {
                             
                          $kalenderdaten[] = array(
                                 
                          'start' => $row['datum_event_start'],
                                 
                          'end' => $row['datum_event_end']
                             );
                          }


                          /* Tage ermitteln */
                          $days = array();
                          for ( 
                          $date = clone $date_from$date <= $date_to$date->modify('next Wednesday') ) 
                          {
                             
                          $days[] = clone $date;
                          }


                          /* Tage in Eventzeiten */
                          $tage_in_eventdate = array();
                          for ( 
                          $i 0$i count($kalenderdaten); $i++ )
                          {
                             
                          $event_start = new DateTime($kalenderdaten[$i]['start']);
                             
                          $event_end = new DateTime($kalenderdaten[$i]['end']);
                             for ( 
                          $j 0$j count($days); $j++ )
                             {
                                 if ( 
                          $days[$j] > $event_end ) { break; }
                                 if ( 
                          $days[$j] >= $event_start && $days[$j] <= $event_end && !in_array($days[$i]->format('Y-m-d'), $tage_in_eventdate) )
                                 {
                                     
                          $tage_in_eventdate[] = $days[$j]->format('Y-m-d');
                                 }
                             }
                             unset(
                          $event_start);
                             unset(
                          $event_end);
                          }



                          /* Ausgabe */
                          for ( $j 0$j count($days); $j++ )
                          {
                             if ( !
                          in_array($days[$j]->format('Y-m-d'), $tage_in_eventdate)
                              {
                                 echo 
                          $days[$j]->format('Y-M-d--W') . '<br />' "\n";
                             }
                           } 
                          Nun bin ich gespannt was ich nun wieder falsch gemacht habe, es läuft und macht mir Freude. Danke Jungs

                          Kommentar


                          • #28
                            Danke Jungs
                            Und Mädchen.
                            Wir werden alle sterben

                            Kommentar

                            Lädt...
                            X