mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 20:07 Benutzername: Passwort: Auto-Login

Thema: Nach Datum sortieren vom 07.06.2010


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Nach Datum sortieren
Seite: 1, 2  Weiter
Autor Nachricht
kolja82
Threadersteller

Dabei seit: 07.06.2010
Ort: Münster
Alter: 42
Geschlecht: Männlich
Verfasst Mo 07.06.2010 23:40
Titel

Nach Datum sortieren

Antworten mit Zitat Zum Seitenanfang

Nabend Forum

Ich versuche mich gerade an meinen ersten eigenen MYSql Abfragen. (Im Rahmen von PHPBB3)

Worum gehts;
Ich möchte aus der Spalte topic_title nur die Inhalte herrausfiltern,
welche mit einem Datum anfangen (10.02.1982 Party zu meinem Geburtstag).
Diese dann alle nach dem Datum sortieren und nur die ausgeben die nicht von gestern oder älter sind.

Kompliziert ?

Ich habe mit php schon angefangen, hoffe aber es "eleganter" lösen zu können - also schon in der Abfrage.
Hier mal mein php versuch:
Code:
´ $topic_cal =  substr($topic_cal, 0, 10);
       $topic_cal_ohne=str_replace(".","",$topic_cal); 
           if (is_numeric($topic_cal_ohne))       
           
           
      { 
      $template->assign_block_vars('kalender', array(
      'TOPIC_TITLE'       => $topic_title,


Hoffentlich wird klar, was ich beabsichtige....

Nur zur Vollständigkeit, hier noch die SQL Abfrage:
Code:

$forum_id = array(37,22);
$forum_id_where = create_where_clauses($forum_id, 'forum');
 
$topics = 'SELECT * FROM ' . TOPICS_TABLE . '
         ' . $forum_id_where . '
         AND topic_status <> ' . ITEM_MOVED . '
         AND topic_approved = 1
         ORDER BY topic_title DESC';


Vielleicht kann mich ja einer auf den richtigen Pfad lenken!
Auch nur ein Link zu einer mir nicht bekannten Funktion, kann helfen!

Danke
und eine schönen Abend

Kolja

Edit sagte gerade noch was zu mir:
Kann ich innerhalb einer sql Abfrage auch mit php "rechnen" ?


Zuletzt bearbeitet von kolja82 am Mo 07.06.2010 23:42, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
safer-print

Dabei seit: 11.03.2010
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 08.06.2010 00:03
Titel

Antworten mit Zitat Zum Seitenanfang

Ich schätze recht elegant ließe es sich mit regulären Ausdrücken lösen. Vielleicht nicht besonders schnell, aber wenn die Datenbank keine Gigabytes hat macht das nichts.

Die Abfrage müsste dann in etwa so aussehen:
Code:
SELECT * FROM `deineTabelle` WHERE `deineSpalte` RLIKE '^[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{4}'
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 08.06.2010 00:56
Titel

Antworten mit Zitat Zum Seitenanfang

Nein. Es ist nicht elegant, das Pferd von hinten aufzuzäumen. Wenn, dann muss man an das Datenschema - sprich die Struktur der Tabelle - heran. Stichwort erste Normalform.

Außerdem: Komplexe Geschäftslogik hat in der Datenbankschicht nichts verloren - auch wenn das Datenbanksystem Mechanismen dafür bereitstellt. Das sieht vielleicht elegant aus, ist es aber in den seltensten Fällen. Man *kann* natürlich Prozeduren auf Datenbankebene implementieren. Dicke Datenbanksysteme wie Oracle stellen dafür auch ungleich mächtigere DSLs bereit, als mySQL sie bietet. Diese Prozeduren sind aber ausschließlich für performance-kritische und asynchrone Kisten gedacht.


Zuletzt bearbeitet von bacon am Di 08.06.2010 00:57, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
kolja82
Threadersteller

Dabei seit: 07.06.2010
Ort: Münster
Alter: 42
Geschlecht: Männlich
Verfasst Di 08.06.2010 04:01
Titel

Antworten mit Zitat Zum Seitenanfang

Danke für die schnellen Antworten!

@safer-print
Ich habe es mal so versucht:
Code:
 
$topics = 'SELECT * FROM ' . TOPICS_TABLE . '
         ' . $forum_id_where . '
         RLIKE '^[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{4}'
         AND topic_status <> ' . ITEM_MOVED . '
         AND topic_approved = 1
         ORDER BY topic_title DESC';
//ORDER BY (SUBSTR(topic_title, 7, 4)SUBSTR(topic_title, 4, 2)SUBSTR(topic_title, 1, 2))
$topics_result = $db->sql_query_limit($topics, $search_limit);


bekomme damit aber ein sql Syntaxfehler...

Ganz unten steht noch ein anderer Ansatz von mir.
Geht aber auch nicht.

@bacon

Wir sind jetzt nicht gerade das größte Forum ca 150 Besucher täglich.

Was wäre den der bessere Weg?
Alle Werte nach der Abfrage mit php (aus)sortieren ?

Vielleicht muss es eh darauf hinauslaufen,
da in der abgefragten tabelle keine Beiträge sind..

Danke nochmal und schnell ind Bett

Kolja
  View user's profile Private Nachricht senden
safer-print

Dabei seit: 11.03.2010
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 08.06.2010 09:26
Titel

Antworten mit Zitat Zum Seitenanfang

Hi kolja82,
du kannst den Fehler besser finden, wenn du dir die Abfrage vor der Ausführung mal zusammengesetzt anzeigen lässt. Dann ist natürlich die Fehlermeldung interessant. Die gibt manchmal ganz gute Aufschlüsse wo anzusetzen ist. Geh' doch folgenden Weg: Verwende eine beispielhafte SQL-Anfrage und probiere in phpMyAdmin rum bis die Syntax stimmt.

Ach, noch zu einer anderen Frage:
Zitat:
Kann ich innerhalb einer sql Abfrage auch mit php "rechnen" ?

http://dev.mysql.com/doc/refman/5.1/de/arithmetic-functions.html

@beacon
Zitat:
Wenn, dann muss man an das Datenschema - sprich die Struktur der Tabelle - heran. Stichwort erste Normalform.

Da hast du natürlich vollkommen recht. Man hätte die Datenbank entsprechend anlegen sollen. Aber kolja82 sucht eine Lösung für die Datenbank die er vorliegen hat. Es klang für mich nicht so, als ob er sie ändern will/kann.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 08.06.2010 14:39
Titel

Antworten mit Zitat Zum Seitenanfang

Sehr schmeichelhaft, "bacon" reicht völlig *zwinker*
  View user's profile Private Nachricht senden
kolja82
Threadersteller

Dabei seit: 07.06.2010
Ort: Münster
Alter: 42
Geschlecht: Männlich
Verfasst Mi 09.06.2010 12:13
Titel

Antworten mit Zitat Zum Seitenanfang

safer-print hat geschrieben:
Hi kolja82,
du kannst den Fehler besser finden, wenn du dir die Abfrage vor der Ausführung mal zusammengesetzt anzeigen lässt. Dann ist natürlich die Fehlermeldung interessant. Die gibt manchmal ganz gute Aufschlüsse wo anzusetzen ist. Geh' doch folgenden Weg: Verwende eine beispielhafte SQL-Anfrage und probiere in phpMyAdmin rum bis die Syntax stimmt.


Moin

Ich glaube ich verstehe was du meinst,
aber wie komme ich an die (von php) zusammengesetzte Abfrage ?

Wenn ich die dann habe werde ich sie im PMA direckt testen!

Kolja
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mi 09.06.2010 12:21
Titel

Antworten mit Zitat Zum Seitenanfang

Code:
var_dump($topics)
* Keine Ahnung... *
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen MYSQL Datum Abfrage Sortieren
[PHP, MySQL] Datenbank Abfrage nach Datum sortieren
Sortieren mit MySQL
MP3 Dateien sortieren
Fotos am Mac sortieren
[php] liste sortieren
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.