Daten nach Aktualität auswerten und ausgeben

Kasimir61

Grünschnabel
Hallo,

zuerst einmal ein frohes neues nachträglich!

Folgendes Problem habe ich grad auf dem Tisch und komme nicht weiter.

Ich habe eine MySQL Tabelle in der ich verschiedene Avatar Bildchen speichere. Pro Datensatz können es immer bis zu 10 Stück sein.

Nun möchte ich eine Abfrage gestalten, in der ich nachsehe -
welche Bilder neu sind. Diese möchte ich dann auf der Seite anzeigen.

Die Tabelle heißt avatar_item

und enthält neben meinen gewünschten Daten verschiedene jetzt eher unwichtige Daten.

Ich kann die Einträge vorab ausfiltern, damit ich nicht alle Einträge durchsuchen muss. Das kann ich am

Feld type erkennen.
Dort steht dann avatar drin, wenns ein Eintrag für einen Avatar ist.

Der Datensatz enthält weiter einen datetime Eintrag

modified

der auch bei der Erst Erstellung des Datensatzes das gleiche Datum enthält. Später dann, wird der Datum und Zeitstempel dann bei einer Bearbeitung geändert. Da die Bearbeitung nach dem Ersteintrag nur statt findet, wenn ein weiterer Avatar hinzukommt, ist das Feld

modified für mich das ausschlaggebende !

Der Inhalt des Feldes sieht dann so aus 2011-01-10 23:51:45

Nun möchte ich erreichen, das alle Datensätze durchsucht werden, die Avatare enthalten. Jeder Datensatz kann wie gesagt 10 Avatare enthalten. Wichtig bei der Suche ist für mich immer der letzte Eintrag, der einen Avatar enthält.

Die Daten sind alle in einem Text Feld gespeichert, das

elements
heißt.

Der Inhalt dieses Feldes sieht folgendermaßen aus :

Code:
<?xml version="1.0" encoding="utf-8"?>
<elements>
<text identifier="12e3333e-8a91-466d-9b1a-d4757a2d4f83">
  <value><![CDATA[Comic Jumper - Avatar Arwards]]></value>
</text>
<image identifier="bfc5f460-d297-43b6-bf49-ffeb8a247313">
  <file><![CDATA[images/stories/Avatare/comic_jumper_cover.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[136]]></height>
</image>
<select identifier="c6af2e74-f898-4a89-8c6c-bf55997ce7ec">
  <option><![CDATA[2k-games]]></option>
</select>
<textarea identifier="eb198cd3-af9b-4ac5-a80c-151d65add04b">
  <value><![CDATA[<p>Nach der Einstellung seiner eigenen Comic-Reihe wird Captain Smiley von  Twisted Pixel Games gekauft und als Aushilfs-Superheld eingesetzt, der  in andere Comics springt und dort alle möglichen Probleme löst. <b>Comic Jumper</b> ist die neueste Schöpfung des Teams hinter den preisgekrönten Spielen <b>Splosion Man</b> und <b>The Maw</b>.</p>]]></value>
</textarea>
<text identifier="63e16eef-8628-4756-b069-54c1b9fc0684">
  <value><![CDATA[Avatar1]]></value>
</text>
<text identifier="8372a9f7-0794-4350-9b21-e09aad6bbfdb">
  <value><![CDATA[Das ist Avatar 1, den bekommt man für..]]></value>
</text>
<image identifier="a2606f3d-baf8-4310-b603-6145d398c5cb">
  <file><![CDATA[images/stories/Avatare/Aqua_aw_1.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="6ad3d31a-d670-41db-bc4e-93b4736ecfa4">
  <value><![CDATA[Avatar2]]></value>
</text>
<text identifier="b2d20b43-9ba7-4431-8a34-8fd8841a4ebf">
  <value><![CDATA[Das ist Avatar 2, den bekommt man für..]]></value>
</text>
<image identifier="9d1f5240-d0d8-47d3-b59e-a724e2b538a7">
  <file><![CDATA[images/stories/Avatare/Aqua_aw_3.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="dacd286f-d15b-473a-91de-77f4e032b859">
  <value><![CDATA[Avatar3]]></value>
</text>
<text identifier="9b5604cc-e4d2-4902-887b-e29c2d4508fd">
  <value><![CDATA[Das ist Avatar 3, den bekommt man für..]]></value>
</text>
<image identifier="65ee7e54-a8ea-4191-8e26-07e7961c305f">
  <file><![CDATA[images/stories/Avatare/alien_breed_2_aw_1.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="0bdb1ae5-0640-4c7e-85ba-0046bf76b1f9">
  <value><![CDATA[Avatar4]]></value>
</text>
<text identifier="fa613050-43be-4da6-b63c-f09cc649cab1">
  <value><![CDATA[Das ist Avatar 4 den bekommt man für..]]></value>
</text>
<image identifier="b9433253-f5eb-4fca-ad1c-dceaa71f3229">
  <file><![CDATA[images/stories/Avatare/alien_breed_2_aw_2.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="b8edb888-d369-4281-abf4-b81997a2e2f2">
  <value><![CDATA[Avatar5]]></value>
</text>
<text identifier="86d0e4cd-9be5-4f9b-861b-81aadd1459cb">
  <value><![CDATA[Das ist Avatar5, den bekommt man für..]]></value>
</text>
<image identifier="d847fa8c-2d11-4440-b55c-927b1e3076f4">
  <file><![CDATA[images/stories/Avatare/alien_breed_2_aw_3.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="43682832-3be6-4883-9e5e-2172b5813e14">
  <value><![CDATA[Avatar6]]></value>
</text>
<text identifier="47eac9ac-51c7-420b-88b3-7e657f0ae00c">
  <value><![CDATA[Das ist Avatar 6, den bekommt man für..]]></value>
</text>
<image identifier="bfdd2c25-87e8-4884-b2c9-9c9cc265927c">
  <file><![CDATA[images/stories/Avatare/comic_jumper_aw_1.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="30fad788-a13e-47f3-8a3a-ad3f2b7f570c">
  <value><![CDATA[Avatar7]]></value>
</text>
<text identifier="c1aa8713-13fb-4701-80ce-0ceec0a9e333">
  <value><![CDATA[Das ist Avatar 7, den bekommt man für..]]></value>
</text>
<image identifier="73e72ec7-8fbb-47c6-a217-9dec5eed06e3">
  <file><![CDATA[images/stories/Avatare/comic_jumper_aw_2.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="934211f8-218a-45dc-b08e-2a100e46f436">
  <value><![CDATA[Avatar8]]></value>
</text>
<text identifier="0eca7438-e593-4243-9265-9587e1778c55">
  <value><![CDATA[Das ist Avatar82, den bekommt man für..]]></value>
</text>
<image identifier="392cc880-1be7-45d0-bee0-073d011b2494">
  <file><![CDATA[images/stories/Avatare/comic_jumper_aw_3.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="0e49f6db-64f3-468e-8478-890a2cdc90ae">
  <value><![CDATA[Avatar9]]></value>
</text>
<text identifier="a226ca36-9a3c-4dbb-8796-6907b0c50b6a">
  <value><![CDATA[Das ist Avatar 9, den bekommt man für..]]></value>
</text>
<image identifier="de06f985-eb75-4b9c-98bf-641c10686b55">
  <file><![CDATA[images/stories/Avatare/costume_quest_aw_1.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<text identifier="5242a913-f834-4ac2-9584-ad02c603d052">
  <value><![CDATA[Avatar10]]></value>
</text>
<text identifier="a578e92f-1d0f-4063-827c-db1bf9602fda">
  <value><![CDATA[Das ist Avatar 10, den bekommt man für..]]></value>
</text>
<image identifier="09d23a30-577b-4c94-9038-e2702db5cad0">
  <file><![CDATA[images/stories/Avatare/costume_quest_aw_2.jpg]]></file>
  <title/>
  <link/>
  <target/>
  <rel/>
  <lightbox_image/>
  <width><![CDATA[100]]></width>
  <height><![CDATA[100]]></height>
</image>
<link identifier="9abba42f-58d7-4eba-8237-4d0bf7feb0a0">
  <value><![CDATA[http://domain.com/]]></value>
  <text><![CDATA[Mitspielersuche]]></text>
  <target><![CDATA[1]]></target>
  <custom_title><![CDATA[Mitspieler Suche]]></custom_title>
  <rel/>
</link>
<text identifier="207c40eb-485a-47c5-8940-7568331f18c0">
  <value><![CDATA[Voraussichtlich 3 Auszeichnungen]]></value>
</text>
<link identifier="1afb3554-4fda-4b16-a1d0-931c952c4ebb">
  <value><![CDATA[http://domain.com/board/viewforum.php?f=16]]></value>
  <text><![CDATA[Finde hilfreiche Tips in unserem Forum]]></text>
  <target/>
  <custom_title><![CDATA[Hilfreiche Tips]]></custom_title>
  <rel/>
</link>
<text identifier="d478a841-1e41-4d64-85f3-6268fd666d21">
  <value><![CDATA[2 Stunden]]></value>
</text>
<text identifier="43d7e6d9-2068-4118-84e8-578c9450f0cc">
  <value><![CDATA[Einfach]]></value>
</text>
<text identifier="c8bf483d-83af-4530-84df-e7a8dcdd944f">
  <value><![CDATA[800 MSP]]></value>
</text>
<link identifier="50d254f2-d133-4114-8534-f3b0abca71e8">
  <value><![CDATA[http://domain.comu]]></value>
  <text/>
  <target/>
  <custom_title/>
  <rel/>
</link>
<text identifier="5358a13d-2d80-4c47-aef8-14b36b0ace14">
  <value><![CDATA[Henry Maske]]></value>
</text>
<socialbookmarks identifier="f03e59a0-c204-4c70-a363-7c067627dea0">
  <value><![CDATA[1]]></value>
</socialbookmarks>
<rating identifier="60c03c52-56d3-42c6-82c4-f68ada98c429">
  <votes/>
  <value/>
</rating>
<relateditems identifier="74acc9a8-73a9-471f-8b34-05d09eb36580"/>
<checkbox identifier="00d7b336-d8f2-4d90-9ab0-e431705a481d">
  <option><![CDATA[img-srcimagesstoriessystemexbox360gif]]></option>
</checkbox>
<checkbox identifier="00e2574b-9e73-43f6-a04c-1fbe36979449"/>
<facebookilike identifier="e0ef2447-9668-4efc-b9fe-c3f7f2d1cce6">
  <value><![CDATA[1]]></value>
</facebookilike>
</elements>

Zum Beispiel wäre das hier Avatar10 von einem imaginären Datensatz, von denen mehrere Datensätze gespeichert sein können.
Code:
<text identifier="5242a913-f834-4ac2-9584-ad02c603d052">
  <value><![CDATA[Avatar10]]></value>
</text>
<text identifier="a578e92f-1d0f-4063-827c-db1bf9602fda">
  <value><![CDATA[Das ist Avatar 10, den bekommt man für..]]></value>
</text>
<image identifier="09d23a30-577b-4c94-9038-e2702db5cad0">
  <file><![CDATA[images/stories/Avatare/costume_quest_aw_2.jpg]]></file>

Nun die Frage :

Wie muss eine Abfrage aussehen, die folgendes Ergebnis hat.

1.) Durchsuche alle Datensätze dieser Tabelle nach Datensätzen, die ein Avatar sind.
2.) Lese in allen Datensätzen nach, wann der Datensatz das letzte mal aktualisiert wurde.
3.) Suche die 10 Datensätze heraus, die am aktuellsten sind.
4.) Gebe mir von den aktuellsten 10 Datensätzen den jeweils letzten eingetragenen Avatar aus, in form des Bilderlinks.
5.) gebe mir den Inhalt des Feldes alias ( ist ein Feld aus dem Datensatz-ist also in jedem Datensatz ein Feld wie datetime.) aus, in Form von Text.

Wenn zum Beispiel in einem Datensatz keiner von 10 möglichen Avatare enthalten sind, dann bleiben die Inhalte leer. Also im XML Eintrag steht dann nur der Datensatz drin, der zuletzt eingetragen ist.

Beispiel, wenn Avatar10 nicht existiert, dann ist der letzte Avatar dann Avatar9 oder eben bis runter zu Avatar 1. Eventuell müsste man noch berücksichtigen, wenn man den Datensatz speichert und aus irgend einem Grund hat der User vergessen, ein Bild hochzuladen - das man dann so verkehrt, ist der Datensatz aktuell und trifft zu - aber es ist kein Avatar gespeichert worden, dann vergiss diesen Datensatz.

Das ist im wesentlichen, was ich nicht hinbekomme...

Gibt es jemanden unter euch, der mir das mal näher erklären kann, wie ich das realisieren könnte ****

Vielen Dank für eure möglichen Antworten und Hilfestellungen im voraus.

Liebe Grüße
Kasi
 
Also vielleicht bin ich zu blond für das, was du vorhast. Lass mich wiederholen:

Du hast eine MySql-Tabelle.
In dieser MySql-Tabelle, kippst du in einem einzigen Textfeld dieses XML ab, das du oben präsentiert hast.
In diesem XML soll nun nach dem letzten Avatar gesucht werden.

Das ist in meinen Augen nicht sinnvoll. Warum baust du nicht eine ganz normale MySql-Tabelle mit diesen Avataren. Dann geht alles supereinfach und superschnell. Denn selbst wenn es eine Lösung gäbe, dies mit RegExen zu lösen - wie lange soll denn eine solche Abfrage eigentlich laufen, wenn deine Datenbank voll ist?

Irgendwo wird dieses XML ja zusammengebaut werden. Das ist der Ort, an dem ich die Daten auch für deinen beschriebenen Zweck aufbereitet in eine MySql-Tabelle einfügen würde. Das ist leider alles, was ich bieten kan.
 
Hallo Anna,
wenn das so einfach gehen würde - dann hätte ich es sicher so gemacht. Es geht aber dabei um eine Software, die das vorgibt und in diesem Punkt nicht verändert werden kann. Ich bin heute aber scho nein Stück weiter gekommen und konnte zumindest meine Abfragen fehlerfrei formulieren. Jetzt habe ich aber noch das Problem, das diese Abfragen in einen Guss kommen. Vielleicht fällt dir ja dazu auch was ein - das es bei vielen Dingen bessere Lösungen gibt, ist mir klar. Aber meine Abfrage zur Hilfe hatte mehr den Focus auf das Problem an sich, weniger auf "was besser wäre". An diesem Punkt komme ich eben nicht vorwärts und deshalb meine Anfrage im Forum.

Danke aber dennoch, das du dich bemüht hast, mir einen Weg aufzuzeigen. Nur leider habe ich in diesem Punkt keine Alternativen zum Problem ;-)

Achso, Es gibt nicht soviele Daten dazu - es werden dauerhaft vielleicht um die 200 Avatare, aber davon bin ich noch lange,lange entfernt ;-)
 
Zuletzt bearbeitet:
Wie kann ich diese Abfragen nun zusammen bringen ****

Also, nachdem ich mal ein wenig getüftelt habe, habe ich mit Hilfe von jemanden zumindest die Abfragen hinbekommen, ohne das es Fehler gab.

Nun muss ich irgendwie erreichen, das ich die Daten bekomme, die mein Herz begehrt ;-)

Hier mal der Ansatz - Ich würde mich sehr über Hilfe freuen...

Code:
<?php
mysql_connect("localhost","user","passwort");
mysql_select_db("tabelle");

$abfrage=mysql_query("select * from zoo_item where type = 'avatar'");

$abfrage2=mysql_query("select modified from zoo_item");

$abfrage3=mysql_query("select * from zoo_item.elements WHERE file IS NOT NULL order by modified desc limit 10");

$Abfrage4=mysql_query("select file from (select * from zoo_item.elements order by modified desc limit 10) a order by a.modified asc limit 1");

$abfrage5=mysql_query("select alias from zoo_item");

:eek: hier hängt es ! - Wie bekomme ich es hin, 
das alle Abfragen ausgeführt werden und 
nur noch das gewünschte Ergebnis unten 
heraus kommt ****

:) Die Abfragen einzeln haben keine Fehler, 
das läuft durch - aber eben müssten ja alle Abfragen zuerst 
erfüllt sein, bevor das Ergebnis was ich möchte - 
da ist ....

$result= mysql_query($alles);

while($row=mysql_fetch_array($result))
{echo $row['alias']. '/';
	echo $row['file'].'<br>';
}
?>

Vielen Dank für eure mögliche Hilfe
Kasi
 
Zuletzt bearbeitet:
Zurück