Ankündigung

Einklappen
Keine Ankündigung bisher.

ordnen nach datum

Einklappen

Neue Werbung 2019

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

  • ordnen nach datum

    hallo!

    ich habe wieder mal eine frage.


    momentan steht im quelltext:

    PHP-Code:
    $query3="SELECT * FROM $sqltable_msg_aus WHERE rraass='$id_id' ORDER BY datum DESC"
    also ORDER BY datum DESC - leider wird nur nach dem tag geordnet, monat und jahr wird nicht geordnet. was kann ich tun damit auch monat und jahr berücksichtigt wird?

    wie muss die zeile dann lauten

    vielen dank
    esra

  • #2
    Dein Datum sollte vom Typ DATE sein, also das Format YYYY-MM-DD haben. Sonst haut die Sortierung nicht hin.

    Kommentar


    • #3
      ordnen nach datum

      Zitat von Zergling
      Dein Datum sollte vom Typ DATE sein, also das Format YYYY-MM-DD haben. Sonst haut die Sortierung nicht hin.

      danke.

      nun habe ich ein problem, denn bei mir wird tag / monat / jahr angezeigt.

      gibt es eine möglichkeit, es trozdem richtig zu ordnen?

      Kommentar


      • #4
        Ich rate dir trotzdem DATE zu benutzen, sonst verlierst du bei jedem Sortiervorgang, den du dir jetzt mit SUBSTRING() basteln musst Performance.
        Wenn du hingegen jetzt einmalig ein richtiges Format wählst, stehen dir die all die mächtigen MySQL und PHP-Datumsfunktionen zur Verfügung.

        http://dev.mysql.com/doc/refman/5.0/...functions.html

        Kommentar


        • #5
          ordnen nach datum

          danke.

          leider ist es so, das ich nicht so viel ahnung habe und zweitens laufen die seiten schon und alles ist im format tag.monat.jahr angeordnet.

          mir würde es also helfen, wenn das format bestehen bleibt und es trotzdem richtig geordnet wird.

          code der datei:
          PHP-Code:
          <?
          $area = "Nachrichten Postausgang";

          $tpl->assign("titel","$sektionsname - $area");
          $tpl->assign("area","$area");

          if($id_name=="")
          {
          include "fehler.php";
          exit;
          }
          $codessernder=0;
          $query2="SELECT * FROM $usertable WHERE mail='$id_mail' and passwort='$id_passwort' and code='1'";
          $result2=mysql_query($query2) or die(mysql_error());
          while($date=mysql_fetch_row($result2))
          {
          $codessernder=1;
          }
          if($codessernder=="0")
          {
          include "fehler3.php";
          exit;
          }

          $tpl->assign("content","<table cellspacing=0 cellpadding=1 width=100%  border=0>");
          $tpl->assign("content","<tbody><tr><td>");
          $tpl->assign("content","<table width=\"100%\" border=0 cellpadding=2>");
          $tpl->assign("content","<tbody><tr><td>");
          $tpl->assign("content","<table cellpadding=\"0\" width=\"100%\">");
          $tpl->assign("content","<tr><td width=10 valign=top></td><td width=1></td>");
          $tpl->assign("content","<td width=\"99%\" valign=top><div align=right>");
          $tpl->assign("content","<table cellpadding=0 width=\"100%\"><tr height=22>");
          $tpl->assign("content","<td height=22 valign=top>[b]Nachrichten: Ausgang[/b]</td></tr></table>");
          $tpl->assign("content","<table cellpadding=0 width=\"100%\"><tr height=22><td height=22 valign=top>");

          $query3="SELECT * FROM $sqltable_msg_aus WHERE rraass='$id_id' ORDER BY datum DESC";
          $result3=mysql_query($query3) or die(mysql_error());
          $number3 = mysql_numrows($result3);

          $tpl->assign("content","Gesendete Nachrichten: [b]($number3)[/b]");

          $tpl->assign("content","</td></tr>");
          $tpl->assign("content","</table><table cellpadding=0 width=\"98%\">");
          $tpl->assign("content","<tr height=25>");
          $tpl->assign("content","<td width=\"30%\" height=25>[b][/b]</td>");
          $tpl->assign("content","<td width=\"15%\" height=25>[b]an[/b]</td>");$tpl->assign("content","<td width=\"15%\" height=25>[b]Datum[/b]</td>");
          $tpl->assign("content","<td width=\"10%\" height=25></td>");
          $tpl->assign("content","<td width=\"30%\" height=25></td>");
          $tpl->assign("content","</tr></table>");

          $query2="SELECT * FROM $sqltable_msg_aus WHERE rraass='$id_id' ORDER BY datum DESC";
          $result2=mysql_query($query2) or die(mysql_error());
          $number2 = mysql_numrows($result2);
          while($daten=mysql_fetch_row($result2))
          {
          $vonuser= $daten[8];
          $trefferid= $daten[4];
          $datum= $daten[5];
          $id= $daten[0];
          $titel= $daten[1];
          $text= $daten[2];
          $gelesen= $daten[6];

          $query="SELECT * FROM $usertable WHERE id='$trefferid'";
          $result=mysql_query($query) or die(mysql_error());
          while($daten=mysql_fetch_array($result))
          {
          if($daten[online]=="online")
          {
          $codeonline2="<a href=\"index.php?open=start&trefferid=$daten[id]&$sidname=$sidsid\"><img src=\"images/online.gif\" border=\"0\"></a>";
          }
          else
          {
          $codeonline2="<img border=\"0\" src=\"images/offline.gif\">";
          }
          }
          if($gelesen=="0")
          {
          $gelesenbild="<a href=\"index.php?open=ans2&$sidname=$sidsid&id=$id\" class=\"a\"><img src=\"images/000964.gif\" align=\"BOTTOM\" border=\"0\"  alt=\"Neue Nachricht\"></a>";
          }
          else
          {
          $gelesenbild="";
          }
          $tpl->assign("content","<table cellpadding=\"0\" width=\"98%\" height=\"25\"><tr><td width=\"30%\" valign=\"top\">");
          $tpl->assign("content","<a href=\"index.php?open=ans2&$sidname=$sidsid&id=$id\" class=\"a\">[b]");
          $tpl->assign("content",snipstr($text,10));
          $tpl->assign("content","$text1");
          $tpl->assign("content","[/b]</a></td><td width=\"15%\" valign=\"top\"><a href=\"index.php?open=start&trefferid=$trefferid&$sidname=$sidsid\">[b]$vonuser[/b]</a></td><td width=\"30%\" valign=\"top\">[b]$datum[/b]</td><td width=\"10%\" valign=\"top\"><a href=\"index.php?open=paloeschen&$sidname=$sidsid&id=$id\"><font color=\"#FF0000\">Löschen</font></a></td><td width=\"15%\" valign=\"top\">$codeonline2</td></tr></table>
          ");
          }

          $tpl->assign("content","</div></td></tr></table></center>");
          $tpl->assign("content","[b]<a href=\"index.php?open=paloeschen&loeschen=alle&$sidname=$sidsid&id=$id\"><font color=\"#FF0000\">Alle Löschen</font></a>[/b]");
          $tpl->assign("content","</td></tr></tbody></table></td></tr></tbody></table>");
          ?>
          vielen dank

          Kommentar


          • #6
            Du musst damit eben deinen Datums-String DD.MM.YYYY zerlegen und ins Format YYYY-MM-DD bringen.

            An was scheiterst du bei SUBSTRING()?

            Kommentar


            • #7
              ja.

              es ist so ich habe keine kenntnisse. ich kann nur fertige zeilen einfügen - leider.

              momentan ist die anordnung im posteingang und postausgang total unordentlich. es wäre schön, wenn alles nach datum geordnet wäre.

              Kommentar


              • #8
                Ohne Fleiß kein Preis
                Verbessern: gern, neu für dich machen: nein.
                Aber ich bin ja nicht der einzige hier im Forum..

                Kommentar


                • #9
                  nun ich dachte es ist mit einer kleinen änderung getan.

                  dann werd ich es wohl so lassen müssen.

                  vielen dank

                  Kommentar


                  • #10
                    Hallo esra,

                    ich unterstütze eigentlich auch keine Faulheit und kein "ich will fertige Lösungen und hab keine Lust mich einzulesen", aber ich habe so etwas ähnliches schon mal implementiert um eine Datenmigration zu machen. Für deinen Fall sollte folgende Abfrage die Lösung sein:

                    SELECT Name, CONCAT_WS('-',SUBSTRING(Datum,7,4),SUBSTRING(Datum,4,2), SUBSTRING(Datum,1,2)) AS Datum FROM test ORDER BY Datum DESC;

                    Diese selektiert aus einer Tabelle mit den Spalten

                    Name | Datum | TID
                    Meier | 31.12.2006 | 1
                    Müller | 28.02.2008 | 2

                    die beiden Datensätze und Ordnet diese nach dem angegebenen Datum.

                    Ich habe hier zwar eine fertige Lösung, aber ich empfehle dir gerade im Hinblick auf die Sicherheits-Thematik die Grundlagen zu lesen und zu verstehen. Diese Lösung, bin ich mir sicher, hättest auch du herausfinden können in dem du einfach mal das MySQL-Manual auf Seite http://dev.mysql.com/doc/refman/4.1/...functions.html aufgeschlagen hättest. Kretaivität sollte natürlich auch nicht fehlen


                    Grüße,
                    Dr.E.

                    Kommentar


                    • #11
                      vielen dank für die hilfe.

                      ich werde mich nach einem programmierer umsehen. dieser kann diese lösung dann ja an der richtigen stelle einfügen. (die ich nicht kenne)

                      was die faulheit angeht, ich kann diese argumentation verstehen, doch lerne ich gerade russisch und ich habe keine zeit noch php und mysql zu lernen. ich habe den fehler in diesem fertigen script bemerkt und dachte man könne durch eine kleine veränderung den fehler beheben. ich habe es nach mehreren stunden aufgegeben und schon genug zeit verloren und deswegen dieses forum genutzt.

                      alles gute
                      esra

                      Kommentar


                      • #12
                        Hallo esra,

                        du musst dich hier nicht rechtfertigen. Es ging mir nur darum zum Ausdruck zu bringen, dass es oft hilft einfach mal ein Manual zu lesen (ich sag nur rtfm)

                        ich werde mich nach einem programmierer umsehen. dieser kann diese lösung dann ja an der richtigen stelle einfügen. (die ich nicht kenne)
                        Ein Programmierer sollte das sicher beherrschen. Man muss die bisherige Abfrage einfach um meinen Ansatz erweitern, sprich ein zusätzliches Feld (der Abschnitt 'CONCAT_WS(...) AS Datum') einfügen und das ORDER BY bei Bedarf ändern. Ich denke das wirst auch du hinbekommen.


                        Grüße,
                        Dr,E,

                        Kommentar


                        • #13
                          Einfacher wäre es übrigens mit STR_TO_DATE() zu lösen:
                          Code:
                          [...] ORDER BY STR_TO_DATE(datum, '%d.%m.%Y')

                          Kommentar


                          • #14
                            Zitat von dr.e.
                            sprich ein zusätzliches Feld (der Abschnitt 'CONCAT_WS(...) AS Datum') einfügen und das ORDER BY bei Bedarf ändern. Ich denke das wirst auch du hinbekommen.

                            danke. du scheinst ein optimist zu sein, ich glaube nicht das ich das hinbekomme.

                            wenn ich das richtig verstanden habe müsste die zeile dann so lauten:


                            PHP-Code:
                            $query3="SELECT * FROM $sqltable_msg_aus WHERE rraass='$id_id'  'CONCAT_WS(...) AS Datum' ORDER BY datum DESC"

                            Kommentar


                            • #15
                              Zitat von xabbuh
                              Einfacher wäre es übrigens mit STR_TO_DATE() zu lösen:
                              Code:
                              [...] ORDER BY STR_TO_DATE(datum, '%d.%m.%Y')
                              auch dir vielen dank.

                              dann muss ich also alle zeilen die sich auf das ordnen beziehen folgendermassen ändern


                              Code:
                              $query3="SELECT * FROM $sqltable_msg_aus WHERE rraass='$id_id' ORDER BY STR_TO_DATE(datum, '%d.%m.%Y");

                              Kommentar

                              Lädt...
                              X