Ankündigung

Einklappen
Keine Ankündigung bisher.

dem verzweifeln nahe

Einklappen

Neue Werbung 2019

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

  • dem verzweifeln nahe

    PHP-Code:
    function kurse()
    {
        
    //Variablen setzen und globalisieren
        
    $date=date("Y-m-d",time()-date(2*24*60*60));

        
    //Mit der Datenbank verbinden
        
    include('inc/database.inc.php');
        
    $tmprslt '';
        
    $connection mysql_connect($db['host'],$db['uid'],$db['pwd']);
        if(
    $connection)
        {
        
    //Wenn Verbindung Zustandekommt

                
    mysql_select_db($db['db']);
                
    $sql "SELECT 
                      k_id, k_name, k_zeit, 
                      UNIX_TIMESTAMP(k_beginn) AS k_newbeginn, 
                      UNIX_TIMESTAMP(k_ende) AS k_newende, 
                      k_preis 
                    FROM 
                      kurse 
                    WHERE 
                      k_beginn > '"
    .$date."'
                    ORDER BY 
                      k_beginn ASC,  k_zeit ASC 
                   "

            
            
    //Auslesen der Datensätze
            
    $result mysql_query($sql)or die(mysql_error()) ;
            if(
    $result)
            {
                
    //Arrays setzen
                
    $tag[] = "Mon";
                
    $tag[] = "Tue";
                
    $tag[] = "Wed";
                
    $tag[] = "Thu";
                
    $tag[] = "Fri";
                
    $tag[] = "Sat";
                
    $tag[] = "Sun";
                
                
    //for-Schlaufe
                
    for ($n 0$n<count($tag); $n++)
                {
                        
    //while-Schlaufe
                        
    while($row mysql_fetch_assoc($result)) 
                        {
                            if (
    $tag[$n]==StrFTime('%a',$row['k_newbeginn'])
                            {
                                
    hier alle datensätze deren kursbeginn dem array entspricht
                            
    }//if ($weekday==$tag[$n])
                            
                        
    }//Ende while-Schlaufe
                
    }//Ende for-Schlaufe
            
    }//if ($result)
        
    }//if($connection)
        
    return $tmprslt;
    }
    //Ende function kurse()
    echo kurse(); 
    bin kurz vor dem verzweifeln.

    ich habe eine tabelle mit meinen Salsakursen. früher habe ich diese sortiert nach dem datum des kursbeginns ausgegeben.
    da es mitlerweile viele kurse sind, ist dies etwas unübersichtlich geworden.

    was ich nun erfolglos versucht habe, ist die kurse mit dem übertitel des wochentags auszugeben.

    bsp:

    Montag
    alle kurse deren k_beginn(zb.2004-11-22) ein montag ist

    Dienstag
    alle kurse deren k_beginn(zb.2004-11-23) ein dienstag ist


    Bitte um hilfe!!!

  • #2
    Re: dem verzweifeln nahe

    Zitat von andyM
    was ich nun erfolglos versucht habe, ist die kurse mit dem übertitel des wochentags auszugeben.
    Falls es Dich beruhigt: bei dem schlechten DB-Design würde ich es auch nicht hinkriegen. Lies Dir mal die entsprechenden Kapitel im MySQL Handbuch durch.
    http://dev.mysql.com/doc/mysql/de/Reference.html

    Stichworte:
    7.2.2 Datums- und Zeit-Typen
    7.3.4 Datums- und Zeit-Funktionen

    Das Leben kann so einfach sein...

    Kommentar


    • #3
      Danke
      Falls es Dich beruhigt: bei dem schlechten DB-Design würde ich es auch nicht hinkriegen.
      bringt mich unglaublich viel weiter. nur beruhigen kann es mich nicht.

      aber vieleicht gibts ja leute im forum die php so im griff haben, dass sie mir helfen können.

      Kommentar


      • #4
        Zitat von andyM
        aber vieleicht gibts ja leute im forum die php so im griff haben, dass sie mir helfen können.
        Auch die können aus "Sch... kein Gold machen".

        Lies Dir das Handbuch durch.

        Du suchst
        Code:
        SELECT ... GROUP BY DAYOFWEEK(datum)
        Allerdings funktioniert das nicht mit UNIX_TIMESTAMP sondern mit DATETIME.

        Kommentar


        • #5
          @andyM :

          nur kurz am rande.
          du unterschätzt meikel.

          merks dir für die zukunft.
          [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

          Kommentar


          • #6
            was ist den an meinem db design so schlecht?? sorry, aber bin eben noch anf.

            Kommentar


            • #7
              ok, könnte mein sql so gestalten
              PHP-Code:
              $sql "SELECT 
                                DAYOFWEEK(k_beginn)
                                k_id, k_name, k_zeit, 
                                UNIX_TIMESTAMP(k_beginn) AS k_newbeginn, 
                                UNIX_TIMESTAMP(k_ende) AS k_newende, 
                                k_preis 
                              FROM 
                                kurse 
                              WHERE 
                                k_beginn > '"
              .$date."'
                              ORDER BY 
                                k_beginn ASC,  k_zeit ASC 
                             "

              aber sehe jetzt noch nicht ganz, wie ich dass jetzt richtig nutzen kann, um den gewünschten efekt zu bekommen.

              sorry

              Kommentar


              • #8
                Zitat von andyM
                was ist den an meinem db design so schlecht??
                Du willst Kurse anbieten. Ein Kurs hat einen Anfang(Datum und Zeit) und ein Ende(Datum und Zeit).
                Da man bei MySQL sehr luxeriöse Datum- und Zeitfunktionen hat, die aber größtenteils auf dem Spaltentyp DATETIME aufsetzen, ist es ratsam, von vornherein den Spaltentyp zu verwenden. Dann ist die Suche nach allen zukünftigen Terminen, gruppiert nach dem Wochentag, relativ simpel (anderes Tabellenformat):
                Code:
                SELECT kurs_id, beginn, ende, titel, DAYOFWEEK(beginn) AS wochentag FROM tabelle WHERE begin < NOW() GROUP BY wochentag
                Durch diese Ergebnistabelle marschierst Du mit ein paar Zeilen PHP Code.

                Falls Du auch Termine in der Zukunft listen willst, dann ersetze NOW() durch einen ISO Datumstring 'YYYY-MM-DD'

                Falls Du wochentag ausgeben möchtest, mußt Du noch ein array definieren:
                Code:
                $wochentag = array(0 => 'Sonntag', ... 6 => 'Samstag');
                auf das Du in der Schleife so zugreifst:
                Code:
                echo $wochentag[$row['wochentag']];
                Code:
                DATE_FORMAT(beginn,'%W')
                Name des Wochentags auf englisch (Sunday bis Saturday)

                Alles klar?

                Kommentar


                • #9
                  danke..ich werde das mal versuchen, hoffe ich krigs auf die reihe.

                  Kommentar


                  • #10
                    Zitat von andyM
                    danke..ich werde das mal versuchen, hoffe ich krigs auf die reihe.
                    Mach das. Ich bastele gerade an einer Hotelverwaltungssoftware rum. Die Listung freier Zimmer ist da ähnlich

                    Kommentar


                    • #11
                      ok.. ich glaub das pack ich.

                      meikel:
                      ev. weisst du das auch noch. kann ich den gruppen in der ausgabe einen titel geben?

                      Montag:
                      gruppe -> wochentag montag

                      Dienstag:
                      gruppe -> wochentag dienstag

                      also dass zuerst der wochentag als titel kommt und danach die schleife aller k_beginn=(zb.)montag.

                      gruss andy

                      Kommentar


                      • #12
                        Zitat von andyM
                        ok.. ich glaub das pack ich.
                        Fein.

                        ev. weisst du das auch noch. kann ich den gruppen in der ausgabe einen titel geben?
                        Das ist etwas trickreicher.
                        PHP-Code:
                        # SQL Abfrage: beginn und ende mit DATE_FORMAT(datum,'%e.%c.%Y') ausgeben!
                        # $res = mysql_query($sql) OR die (mysql_error());
                        # $wochentag = array (0 => 'Sonntag, usw. );

                        if (mysql_num_rows($res) > 0# es gab keinen Fehler und es gibt was zum Ausgeben
                        {
                        # definiere vor der Ausgabeschleife eine leere Kontrollvariable
                           
                        $flag '';

                        # Beginne die HTML Tabelle:
                           
                        echo '<table>';

                           while (
                        $row mysql_fetch_assoc($res))
                           {
                        # Wochentag 'übersetzen'
                              
                        $row['wochentag'] = $wochentag[$row['wochentag']];

                        # testen, ob neuer Kopf ausgegeben werden muß:
                              
                        if (empty($flag) OR $flag != [$row['wochentag'])
                             {
                                 
                        printf ('<tr><td>%s</td></tr>'$row['wochentag']);
                        # merken
                                 
                        $flag $row['wochentag'];
                              }
                              
                        printf ('<tr><td>[url="%s?kurs_id=%s"]%s[/url]</td></tr>'
                                          'anzeigen.php'
                        ,
                                          
                        $row['kurs_id'],
                                          
                        sprintf ('%s vom %s bis %s'$row['title'], $row['beginn'], $row['ende']));
                           }
                           echo 
                        '</table>';
                        }
                        else
                        {
                            echo 
                        '<h4>Keine(n) Kurs(e) gefunden.</h4>';
                        }
                        # usw.
                        ?> 
                        So oder so ähnlich...

                        Kommentar


                        • #13
                          sprintf ('%s vom %s bis %s',

                          was bedeutet %s??

                          Kommentar


                          • #14
                            Zitat von andyM
                            sprintf ('%s vom %s bis %s',
                            was bedeutet %s??
                            http://de3.php.net/sprintf

                            Kommentar


                            • #15
                              ach, du wohnst nicht zufälligerweise in der schweiz und würdest php kurse geben???

                              Kommentar

                              Lädt...
                              X