You are here: Bestimmte Reihen anspringen? « All PHP « IT news, forums, messages
Bestimmte Reihen anspringen?

Posted by Markstar on 09/28/99 11:56

Hallo!

Kurze Version:
Wie kann ich bestimmte Einträge eines Resultats-Arrays ansprechen, wenn also
mein Array so aussieht:
id Typ Wert ...
-------------------------------
1 Name Hans ...
2 Name Klaus ...
3 Name Michael ...
....
und ich möchte zuerst Klaus, dann Hans und dann Michael auslesen. Wie mache
ich das?


Lange Version:
Ich habe eine Meta-Datenbank deren Einträge ich mit

$sql = mysql_query("SELECT id, type, val, parent FROM testtable WHERE mainid
= xxxx;");

auslesen kann. Das Ergebnis sieht dann ungefähr so aus:

id Typ val parent
-------------------------------
10 type1 value1 NULL
11 type1 value2 NULL
...
100 type1 value3 10
101 type2 value4 10
102 type3 value5 10
348 type1 value13 10
103 type1 value6 11
104 type2 value7 11
...
1000 type1 value8 100
1001 type2 value9 100
...
2432 type1 value10 NULL
2433 type1 value11 2432
2434 type3 value12 11
...

Es gibt also bestimmte Einträge (vom typ 1), die durch andere Einträge
beschrieben werden (typ 2,3...). Offensichtlich gibt es auch noch eine
Struktur: der selbständige Eintrag 100 gehört zum Eintrag 10, also so
ähnlich wie Kapitel, Sektionen, Untersektionen, usw.. Die Beschreibungen
können alles mögliche sein, z.B. Farbe (also z.B.: type=color, val=green),
Größe, Beschreibungstexte, etc., sie müssen ABER NICHT unbedingt existieren
sondern werden nur verwendet wenn sie auch vorhanden sind.

Wie kann ich denn nun in dieser Reihenfolge auf meine Ergebnisse zugreifen,
so dass ich auch zuerst die Beschreibungen über einen Eintrag abarbeite
bevor ich (rekursiv) zum nächsten übergehe???

id Typ val parent
-------------------------------
10 type1 value1 NULL
101 type2 value4 10
102 type3 value5 10
100 type1 value3 10
1000 type1 value8 100
1001 type2 value9 100
348 type1 value13 10
...
11 type1 value2 NULL
103 type1 value6 11
104 type2 value7 11
2434 type3 value12 11
...
2432 type1 value10 NULL
2433 type1 value11 2432
2434 type1 value12 2433
...

Das gewünsche Schema würde sieht also so aus:
10 (Beschrieben durch 101, 102)
100
1000 (Beschrieben durch 1001)
348
11
103 (Beschrieben durch 104, 2434)
2332
2333
2334

Die Problematik für mich ist:
1) Wie greife ich, nachdem ich bei einem Eintrag angelangt bin, zuerst auf
deren Beschreibungen zu (z.B. wären dass für 10: alle die, die als parent 10
haben ausser die vom Typ1. In SQL wäre das wohl "Select * WHERE parent=10
AND NOT Typ=type1". Aber dann müsste ich ja ständig SQL-Abfragen machen!!!)
2) Wie sortiere ich das ganze überhaupt? Es wäre ja z.B. auch durchaus
denkbar, das es eine weitere Beschreibung gibt, die angibt an welcher Stelle
sich ein Eintrag befinden soll (z.B. das 2432 ganz an den Anfang kommt statt
numerischer Sortierung). Ich muss also irgendwie eine Möglichkeit finden,
die Position rauszufinden. Durch eine extra Variable? Aber wie? Das ganze
wird zudem erschwert das ich prinzipiell beliebig viele Nachfolger haben
möchte. Denn z.B. bei einem Typ=Reihenfolge mit 0... würde ja 10 an Stelle
0, 11 an Stelle 1, 2332 an 2 kommen. Aber 100 ist auch an Stelle 0 und
würde, wenn ich eine Sortierung mit "ORDER BY 'Reihenfolge'", auch nicht an
der richtigen Stelle stehen.

Ich bedanke mich schonmal fürs lesen und für jede Hilfe die man mir geben
kann.

MfG
Markus

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация