• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

jüngstes Datum aus mehreren Tabellen filtern und zu Liste zusammenstellen

Ich möchte einen Vorschlag aus dem Forum aufgreifen.
Damit möchte ich das erstellen der News bzw. der UpDate-Liste vereinfachen.

Dazu möchte ich für den Liste Inhaltliche UpDates alle Einträge der Tabellen "Fantasien", "Ideen", "Stellungen", "Medien" und Projekt nach dem (jüngsten) UpDate Datum (teilweise neu einzuführen) durchsuchen.
Es sollen immer alle Inhaltlichen UpDate Einträge in einer Bullet-Liste zusammen getragen werden.
Das Datum jedoch soll nur einmal darüber angeführt werden.

Da ich aber nicht nach dem aktuellen Tagesdatum suche.
Würde ich gern wissen wonach ich suchen muss wenn ich das jüngste Datum (nicht aktuelles Tagesdatum) suche.
Und wie ich es hin bekomme das dies ermittelte Datum aus allen Tabellen bei mehreren gleichen Tagesdaten in einer Liste zusammen kommt.

Bei einigen Einträgen kann es vorkommen das diese nur in FSK18 vollständig dargestellt werden.
Ich mache bei der Freien Liste dann nur eine Vorschau.
Es würde in so einem Fall eine unterschiedliche Verknüpfung geben.

Gibt es einen wichtigen Unterschied zwischen Date und Timestamp
 
Zuletzt bearbeitet:
Werbung:
Würde ich gern wissen wonach ich suchen muss wenn ich das jüngste Datum (nicht aktuelles Tagesdatum) suche.

Code:
... WHERE UNIX_TIMESTAMP(datum) < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
ORDER BY datum DESC

Und wie ich es hin bekomme das dies ermittelte Datum aus allen Tabellen bei mehreren gleichen Tagesdaten in einer Liste zusammen kommt.

Ich würde vorschlagen UNION dafür zu verwenden. Damit kannst Du die Ergebnismengen mehrerer Statements zu einer Ergebnismenge zusammenführen, müsstest das dann aber nur noch Sortieren. Schematisch (ungetestet):

Code:
SELECT (
 SELECT datum1 FROM tabelle1
 UNION
 SELECT datum2 FROM tabelle2
) datum
WHERE [irgendeineBedingung]
ORDER BY datum

Gibt es einen wichtigen Unterschied zwischen Date und Timestamp

Natürlich. Sonst würde es die beiden Datentypen ja nicht geben ;)
MySQL :: MySQL 5.1 Reference Manual :: 11.3.1 The DATE, DATETIME, and TIMESTAMP Types
 
Code:
... WHERE UNIX_TIMESTAMP(datum) < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
ORDER BY datum DESC

In der UpDate-Liste scheint mir das so zu funktionieren alles was kleiner ist als das aktuelle Tagesdatum.
Doch in den News sollen ja nur die vom jüngsten Tag, nicht aber die noch jüngernen aufgelistet werden. Dort wird sicher noch eine weitere Angabe notwendig werden.

Zu UNIX eine Frage:
Bezieht sich das auf den server?
Da ich auf meinem PC (wo ich entwickle) kein

Code:
... WHERE UNIX habe sondern Windows möchte ich zuvor abklären ob dann UNIX_Date < UNIX_Date(Format(Now(), '%A  %d. %B %Y'))
ORDER BY datum DESC
 
Zuletzt bearbeitet:
Werbung:
Lies richtig was UNIX_TIMESTAMP() macht. Das hat nichts mit dem verwendeten Betriebssystem zu tun.
MySQL :: MySQL 5.5 Reference Manual :: 12.7 Date and Time Functions

Wenn Du ein Datum vor dem heutigen Tag haben willst, kannst Du - wie oben geschrieben - eine Uhrzeit noch dran ergänzen um den heutigen Tag von dem Statement auszuschließen. Intern kommt bei MySQL bei diesem Vergleich quasi so etwas heraus:

Code:
... UNIX_TIMESTAMP('2012-04-01 00:00:00') < UNIX_TIMESTAMP('2012-04-27 00:00:00')
 
Ich bin nun dabei die neuen Timestap Felder mit Daten zu füllen.
Da ich leider keine genauen Datum habe.
Und Uhrzeiten sowie so nicht.

z.b. 1998-12-00 00:00:00

ich bekomme dann folgende Meldung
Warning: #1265 Data truncated for column 'Veroeffentlicht_am'

die Struktur sieht wie folgt aus

Spalte: Veroeffentlicht_am
Typ: timestamp on update
Attribute: CURRENT_TIMESTAMP
Null: Nein
Standard: CURRENT_TIMESTAMP
Extra: ON UPDATE CURRENT_TIMESTAMP

Alle Felder sind mit 0000-00-00 00:00:00 gefüllt da ich diese Spalte nachträglich eingefügt habe
 
Brauchst Du diese Spalte unbedingt mit Werten? Irgendwie passt der Datentyp "timestamp" hier nicht zum Spaltennamen. Wenn Du sie "Veroeffentlicht_am" nennst, muss es doch ein festes Datum sein welches später nicht verändert werden sollte. Wenn Du den Datentyp "timestamp" nimmst, wird sie aber bei jedem Bearbeiten des Datensatzes geändert. Passt doch irgendwie nicht zusammen?
 
Werbung:
Brauchst Du diese Spalte unbedingt mit Werten? Irgendwie passt der Datentyp "timestamp" hier nicht zum Spaltennamen. Wenn Du sie "Veroeffentlicht_am" nennst, muss es doch ein festes Datum sein welches später nicht verändert werden sollte. Wenn Du den Datentyp "timestamp" nimmst, wird sie aber bei jedem Bearbeiten des Datensatzes geändert. Passt doch irgendwie nicht zusammen?

Natürlich nicht...
das habe ich nicht gewusst. Ich habe nur gelesen das inkl. der Zeit ist.

Aber das bedeutet auch das die Abfrage anders lauten muss.

Code:
... WHERE UNIX_TIMESTAMP(datum) < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) ORDER BY datum DESC

wird dann wohl kaum gehen

Code:
... WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) ORDER BY Veroeffentlicht_am DESC

Zur Liste: bei der kann ich eine Begrennzung zwischen Heute (obergrenze) und 1.1.12 (untergrenze) anggeben.

Doch bei den News kenne ich die Untergerenze nicht.
Denn die kann 1 Woche oder auch nur 1 Tag zurückliegen.
Und das ändert sich ja automatisch um 0:00 Uhr.
Und da ich nicht jeden Tag was neues habe.
Brauche ich eine Untergrenze.

bsp.
am 25.4.12 wurde das letzte geändert.
Dann würde ich mit "<" auch die anderen Änderungen aufgelistet bekommen.
Für Die UpDate-Liste 2012 super.
Für die News nicht.... dort sollen nur die zb. 4 Einträge aus dieversen Tabellen vom 25.4.12 ers
 
Zuletzt bearbeitet:
UpDate

PHP:
SELECT
(SELECT Veroeffentlicht_am FROM story)
UNION
(SELECT Veroeffentlicht_am FROM stellungen)
UNION
(SELECT Veroeffentlicht_am FROM erotikideen)
UNION
(SELECT Veroeffentlicht_am FROM buecher)
UNION
(SELECT Veroeffentlicht_am FROM ebooks)
UNION
(SELECT Veroeffentlicht_am FROM hoerspiele)
UNION
(SELECT Veroeffentlicht_am FROM filme)
UNION
(SELECT Veroeffentlicht_am FROM projekt)
UNION
(SELECT Veroeffentlicht_am FROM update_inhalt)
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) ORDER BY Veroeffentlicht_am DESC


SQL von phpmyadmin gibt an

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'' at line 19

doch was ist da gemeint?
das entspricht doch so auch dem Vorschlag.
Oder sehe ich einen Fehler vor lauter Code nicht.
 
Zuletzt bearbeitet:
Natürlich. Du musst die Funktionsweise und den Sinn von UNION beachten. Das fehlt dir offenbar beides.

Falsch:
Code:
SELECT
                         Veroeffentlicht_am FROM story
                         UNION
                         Veroeffentlicht_am FROM stellungen
                         UNION
                         Veroeffentlicht_am FROM erotikideen
                         UNION
                         Veroeffentlicht_am FROM buecher
                         UNION
                         Veroeffentlicht_am FROM ebooks
                         UNION
                         Veroeffentlicht_am FROM hoerspiele
                         UNION
                         Veroeffentlicht_am FROM filme
                         UNION
                         Veroeffentlicht_am FROM projekt
                         UNION
                         Veroeffentlicht_am FROM update_inhalt
                         UNION
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) ORDER BY datum DESC

Richtiger:
Code:
SELECT
                         Veroeffentlicht_am FROM story
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM stellungen
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM erotikideen
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM buecher
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM ebooks
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM hoerspiele
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM filme
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM projekt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00')) 
                         UNION
                         SELECT Veroeffentlicht_am FROM update_inhalt
                         WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))

Und wenn Du das dann noch sortieren willst (hier bin ich mir unsicher, ob das MySQL so mitmacht, bei Oracle geht es mit Sicherheit):

Code:
SELECT Veroeffentlicht_am FROM ( [Hier das Statement von oben] ORDER BY Veroeffentlicht_am DESC
 
Werbung:
Doch das scheint zu funktionieren.
Ich bekomme keine Fehlermeldungen weder von phpmysql noch von der localen Entwicklung.

Nur meldet phpmysql ein leeres Resultat.
Aber es muss ja etwas kommen.
Denn alle Einträge wären älter als jetzt.
 
bei phpmysql hatte ich das umgebende select nicht dabei (wie ich eben bemerkte) mich bekomme ich
Zeige Datensätze 0 - 0 ( 1 insgesamt, die Abfrage dauerte 0.0169 sek.)

ohne
MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen).

also schein mit umgebenden SELECT besser zu sein oder??

Ohne Bedingung WHERE bekomme ich 41 Datensätze zurück.
Das das 00:00:00 vom Timestamp hat gestört
!



Code:
SELECT(
                         SELECT Veroeffentlicht_am FROM story
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM stellungen
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM erotikideen
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM buecher
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM ebooks
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM hoerspiele
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM filme
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM projekt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am FROM update_inhalt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
ORDER BY Veroeffentlicht_am DESC)

Für die UpDate-Liste super... Danke

Und wie begrenze ich nun so das nur das jüngste Datum kommt?
bsp. aktuell ist der 25.4.12 das jüngste update datum.
aber das kann ich ja nicht fest eingeben. dann läuft es beim nächsten Update nicht mehr.

Gibt es da einen Befehl?
Könnte ich da was mit Limit anfangen?
damit kann man doch die Anzahl der Datensätze begrenzen wenn ich mich recht erinnere.
 
Zuletzt bearbeitet:
Werbung:
Danke ich habs.

LIMIT 1 und das Ergebnis ist soweit erst mal da.
mal sehen ob auch der Rest rauskommt den ich brauche.

zu LIMIT habe ich gesehen das es wohl eingentlich LIMIT 0, 1 heist.
Warum?
Funkioniert ohne warunung und fehler hat beides.
 
Ich habe gerade mit jeder Menge Notice Meldungen zu kämpfen.
Doch nur eine Warning Meldung

Deswegen eine Frage

Darf ich das so schreiben?
Code:
     // Story
     echo'Story: ' ,$row->story.Storyname;

ich habe inzwischen
PHP:
         SELECT Veroeffentlicht_am, Storyname FROM story
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION

um Storyname ergänzt.
Somit sollte Storyname doch im Ergebnis drin sein. Und auch definiert sein.
den die Warning lautet
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
und die ganzen Notice immer irgendwie auf die SQL-Felder nach den Komma (diese heißen in den anderen Tabellen anders aber die NOTICE ist ähnlich)
 
Du müsstest Storyname bei jedem der SELECT-Statements im UNION ergänzen. Das hast Du gerade vermutlich nicht gemacht, weshalb es einen MySQL-Fehler gibt. Du solltest auch MySQL-Fehler mit mysql_error() dir ausgeben lassen damit Du das sofort siehst.

Ich ahne schon was Du hiermit erreichen willst. Du brauchst zu dem Datum auch noch einen Titel und vlt. einen Text, oder? Und die heißen in jeder Tabelle anders, oder? Daher noch der Tipp:

Code:
SELECT Veroeffentlicht_am, Storyname as title FROM story
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am, stellungsname as title FROM stellungen
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))

Dadurch hast Du im Ergebnis immer die Bezeichnung aus der jeweiligen Tabelle in der Spalte "title" stehen auf die Du per

PHP:
$row->title

zugreifen kannst. Die von dir versuchte Variante mit story.storyname geht nicht, unterstützt PHP nicht.
 
Werbung:
Du müsstest Storyname bei jedem der SELECT-Statements im UNION ergänzen. Das hast Du gerade vermutlich nicht gemacht, weshalb es einen MySQL-Fehler gibt. Du solltest auch MySQL-Fehler mit mysql_error() dir ausgeben lassen damit Du das sofort siehst.

Ich ahne schon was Du hiermit erreichen willst. Du brauchst zu dem Datum auch noch einen Titel und vlt. einen Text, oder? Und die heißen in jeder Tabelle anders, oder? Daher noch der Tipp:

Code:
SELECT Veroeffentlicht_am, Storyname as title FROM story
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))
                         UNION
                         SELECT Veroeffentlicht_am, stellungsname as title FROM stellungen
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y 00:00:00'))

Dadurch hast Du im Ergebnis immer die Bezeichnung aus der jeweiligen Tabelle in der Spalte "title" stehen auf die Du per

PHP:
$row->title

zugreifen kannst. Die von dir versuchte Variante mit story.storyname geht nicht, unterstützt PHP nicht.


1.) Da ich nicht aus allen Tabellen gleich viele Einträge ausgeben möchte die Frage:
Kann das Probleme geben?


2.) Wenn ich das so umsetzte wie unten.
Dann habe ich keine Fehler mehr.
Aber es werden auch keine Ergebnisse nach dem Datum geliefert.
Und es müsste mindestens bei ebooks ein Ergebnis ankommen.


PHP:
SELECT Veroeffentlicht_am, Storyname as title FROM story
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT
Veroeffentlicht_am,
Titel as ueberschrift FROM buecher
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT
Veroeffentlicht_am,
Titel as ueberschrift FROM ebooks
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT
Veroeffentlicht_am,
CD_Titel as ueberschrift FROM hoerspiele
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT
Veroeffentlicht_am,
Titel as ueberschrift FROM filme
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT
Veroeffentlicht_am,
Zweittitel as ueberschrift FROM projekt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT
Veroeffentlicht_am,
inhaltliches_UpDate as ueberschrift FROM update_inhalt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))

ORDER BY Veroeffentlicht_am DESC
LIMIT 1");

while($row = mysql_fetch_object($ergebnis) or die(mysql_error()))      // Daten werden gelesen
     {
        echo "Fehler: ".mysql_error();

        echo'
        <div class="news">
        <h2>Letzte Änderung: ' ,strftime("%A  %d. %B %Y", strtotime($row->Veroeffentlicht_am)), '</h2>';
     };

                              // Abfrage ob USER 18 oder minderjährig
     if ($_GET['p4'] == "fsk18")
     { // -->  USER ist Volljährig
       // weitere Bedinugnen
     } // FSK18 Ende

     else
     { // -->  USER ist minderjährig

     // Story
     echo'Story: ' ,$row->ueberschrift;

     // Stellungen
     echo'Stellungen: ' ,$row->ueberschrift;

     // Erotikideen
     echo'Erotikideen: ' ,$row->ueberschrift;

     // Bücher
     echo'Bücher: ' ,$row->ueberschrift;

     // eBooks
     echo'eBooks: ' ,$row->ueberschrift;

     // Hörbücher
     echo'Hörbücher: ' ,$row->ueberschrift;

     // Filme
     echo'Filme: ' ,$row->ueberschrift;


     } // Minderjährig ENDE

                 echo'
        </div>';



?>

dann wird mir Keine Fehlermeldung ausgeworfen.
Die Notice sind weg. Sollte ja auch so sein.
Aber es kommen auch keine Ergebnisse.
Und das kann nicht sein den das Datum kommt raus. Und zu diesem Datum sollten mindestens ein Eintrag (bei ebooks) vorhanden sein.
für die anderen müssten noch Muster angelegt werden.
 
Kommt denn bei

Code:
SELECT
Veroeffentlicht_am,
Titel as ueberschrift FROM ebooks
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))

etwas raus? Wenn nein, stimmt der Datumsvergleich evtl. nicht. Ist "Veroeffentlicht_am" denn jetzt ein UNIX_TIMESTAMP- oder ein DATE/DATETIME-Datentyp?

Aus jeder Tabelle könnten theoretisch beliebig viele Datensätze ausgegeben werden, deren Anzahl kann unterschiedlich sein. Was wichtig ist, ist das jedes Statement die selbe Spaltenanzahl mit den selben Datentypen zurück gibt.
 
Kommt denn bei

Code:
SELECT
Veroeffentlicht_am,
Titel as ueberschrift FROM ebooks
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))

etwas raus? Wenn nein, stimmt der Datumsvergleich evtl. nicht. Ist "Veroeffentlicht_am" denn jetzt ein UNIX_TIMESTAMP- oder ein DATE/DATETIME-Datentyp?

Aus jeder Tabelle könnten theoretisch beliebig viele Datensätze ausgegeben werden, deren Anzahl kann unterschiedlich sein. Was wichtig ist, ist das jedes Statement die selbe Spaltenanzahl mit den selben Datentypen zurück gibt.

Veroeffentlicht_amueberschriftinhalturlbild
storyDateVarchar(50)TextVarchar(40)geplant / über weiter Tabelle
stellungenDateVarchar(70)Varchar(30)
ertikideenDateVarchar(50)Varchar(20)
buecherDateVarchar(50)TextVarchar(30)über weiter Tabelle in der der Amazoncode steht
ebooksDateVarchar(50)TextVarchar(30)über weiter Tabelle in der der Amazoncode steht
hoerspieleDateVarchar(60)TextVarchar(30)über weiter Tabelle in der der Amazoncode steht
filmeDateVarchar(50)TextVarchar(30)über weiter Tabelle in der der Amazoncode steht
projektDateVarchar(60)Varchar(25)
update_inhaltlich
(sonstiges)
DateText

phpmysql gibt zwei zurück. (ich habe in mehreren Tabellen zum Test Muster angelegt)
das ist soweit richtig.
die website wie gehabt nichts außer dem Datum
Spielt es ein Rolle ob ich Date oder Datetime verwende?
Das Datum wird ja richtig ermittelt.
 
Zuletzt bearbeitet:
Werbung:
Wenn ich also die gleiche Anzahl Spalten haben muss.
Diese Spalten aber nicht unbedingt gefüllt sein müssen.
Dann müsste ich für die Spalte wo ich weniger Felder ausgeben möchte als in den übrigen Zeilen ein Feld einführen das ich leer lassen.

Das werden dann alles Text-Typs sein. Kann die Möglichkeit NULL bei dem Feld hier von Vorteil sein?
Und zu den Varchar-Typ Feldern muss die Länge auch immer gleich sein?
 
Zur Anlage:

mal davon abgesehen das dort eine Notice ist. werden die Daten egal ob DESC oder ASC immer mit 0 als Datum ausgegeben.

Ich möchte das die Ergebnisse zu dem Datenbankweiten Datum ( das einmalig aufgegeben wird)
immer nach Bereich getrennt aufgelistet werden.

Deshalb kam ich zu beginn auch auf die Idee mit story.storyname
das kannte ich noch von Join
Aber inzwischen habe ich festgestellt das ich mit table_name auch diesen ausgeben kann.
Doch bin ich nicht sicher wie ich

Code:
table_name FROM INFORMATION_SCHEMA.TABLES
richtig in meinen code einbinde.

Mir ist aber klar das ich nur noch eine Zeile zb.
Code:
Story
     echo'<br />
         <b>Fantasien:</b> ' ,$row->ueberschrift;
benötige.
Wenn ich dann statt Fantasie table_name einstetze dann müste (annähernd) raus kommen was ich suche.



Auflistung.jpg

PHP:
<?
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');    // Server Version mit (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge')
                            p;                UNION
SELECT   /* Titel, Vorschau mit Bild von Amazon */
Veroeffentlicht_am,
Titel as ueberschrift,
Vorschaubild as inhalt FROM filme
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT   /* Zweittitel, Zusammenfassung */
Veroeffentlicht_am,
Zweittitel as ueberschrift,
Zusammenfassung as inhalt FROM projekt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))
                         UNION
SELECT   /* noch zu klären - provisorisch inhaltliches_UpDate */
Veroeffentlicht_am,
inhaltliches_UpDate as ueberschrift,
Lueckenfueller as inhalt FROM update_inhalt
WHERE Veroeffentlicht_am < UNIX_TIMESTAMP(DATE_FORMAT(NOW(), '%d.%m.%Y'))

ORDER BY Veroeffentlicht_am DESC
");

echo'
        <div class="news">
        <h2>Letzte Änderung: ' ,strftime("%A  %d. %B %Y", strtotime($row->Veroeffentlicht_am)), '</h2>';

while($row = mysql_fetch_object($ergebnis) or die(mysql_error()))      // Daten werden gelesen
{

                                      // Abfrage ob USER 18 oder minderjährig
     if ($_GET['p4'] == "fsk18")
     { // -->  USER ist Volljährig
       // weitere Bedinugnen
     } // FSK18 Ende

     else
     { // -->  USER ist minderjährig

     // Story
     echo'<br />
         <b>Fantasien:</b> ' ,$row->ueberschrift;

     // Stellungen
     echo'<br />
         <b>Stellungen:</b> ' ,$row->ueberschrift;

     // Erotikideen
     echo'<br />
         <b>Erotikideen:</b> ' ,$row->ueberschrift;

     // Bücher
     echo'<br />
         <b>Bücher:</b> ' ,$row->ueberschrift;

     // eBooks
     echo'<br />
         <b>eBooks:</b> ' ,$row->ueberschrift;

     // Hörbücher
     echo'<br />
         <b>Hörbücher:</b> ' ,$row->ueberschrift;

     // Filme
     echo'<br />
         <b>Filme:</b> ' ,$row->ueberschrift;


     } // Minderjährig ENDE
};

                 echo'
        </div>';



?>

Zur Info:
Veroeffentlicht_am ist Datetime
ueberschrift immer Varchar
inhalt immer Text

setzen ich 00:00:00 mit ein habe ich keine Ergebnisse
 
Zuletzt bearbeitet:
Zurück
Oben