Seite 1 von 1

Ausgabe sortieren

Verfasst: 14.10.2009, 14:19
von Michael1967
Hallo,

ich habe eine Tabelle wo bei jedem Eintrag 4 Schlagwörter stehen.

Code: Alles auswählen

$abfrage = "SELECT word1, word2, word3, word4 FROM tabelle";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) {

echo'.......';
}

Beispielsweise hat der Eintrag mit der ID 1 die Schlagwörter -

Hans Paul Peter Anton

der Eintrag mit der ID2 hat die Schlagwörter

Otto Andy Bert Knut

Jetzt möchte ich diese Schlagwörter gerne sortieren, so das ich folgende Ausgabe erhalte -

Anton
Andy
Bert
Hans
Knut
Paul
Peter
Otto

Wie bekommt man sowas hin? Am besten noch so - das die Schlagwörter mit "A" unter A stehen usw.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Re: Ausgabe sortieren

Verfasst: 14.10.2009, 14:37
von Mork vom Ork
Michael1967 hat geschrieben:ich habe eine Tabelle wo bei jedem Eintrag 4 Schlagwörter stehen.
[…]
Jetzt möchte ich diese Schlagwörter gerne sortieren, so das ich folgende Ausgabe erhalte
Falscher Aufbau. Die Schlagwörter gehören in eine separate Tabelle mit zwei Spalten, eine für das Schlagwort, eine für die ID des dazugehörigen Eintrags (ein Eintrag mit vier Schlagwörtern hätte dementsprechend vier Zeilen in dieser Tabelle).

Für eine Schlagwortsuche braucht es dann nur einen Index (statt vier wie bei deinem Aufbau), zweitens kann eine beliebige Anzahl an Schlagwörtern gespeichert werden und last but not least kannst du alle Schlagwörter einfach mit select schlagwort order by schlagwort aufführen.

Verfasst: 14.10.2009, 14:42
von Michael1967
Ja - das verstehe ich auch - nur leider ist das nun so aufgebaut.

Eine Änderung ist nicht mehr möglich. Gibt es dafür keine Lösung?

Verfasst: 14.10.2009, 14:54
von xAaron
Michael1967 hat geschrieben:Ja - das verstehe ich auch - nur leider ist das nun so aufgebaut.

Eine Änderung ist nicht mehr möglich. Gibt es dafür keine Lösung?
Da hätte man echt mal jemanden fragen sollen, der schon Mal was von SQL gehört hat. Gruselig.

Google mal nach UNION.

Verfasst: 14.10.2009, 15:04
von e-fee
Ich wette sogar, dass man das mit 'nem passenden SQL-Befehl doch noch anders aufbauen kann: neue Datenbanktabelle, wie der Mork schon sagte. Abfrage über die alte Tabelle, die für jede der vier Wort-Spalten das Wort und die ID in die neue Tabelle schreibt, feddich! Notfalls machste das für jede Spalte einzeln.

Hätte auch den Vorteil, wenn das tatsächlich Schlagwörter, neudeutsch Tags, sind, zu denen wieder die passenden Beiträge rausgesucht werden sollen, dass man das dann ebenfalls wieder ganz einfach realisieren kann und nicht wieder so ein abenteuerliches Konstrukt á la "wenn das Schlagwort ein EINER dieser vier Spalten ..."

Verfasst: 14.10.2009, 15:27
von xAaron
Noch ein gut gemeinter Rat:
Du wirst bei jeder etwas komplizierteren Abfrage Probleme bekommen, die nur Leute lösen können, die sich intensiv mit SQL beschäftigen. Und in der Regel sind Experten nicht sehr gewillt Leuten dabei zu helfen, wenn das Problem keine spannende Herausforderung ist, sondern nur in der Unfähigkeit des Designer ein SQL-Buch aufzuschlagen, begründet ist. Geht mir zumindestens so. Zudem wirst du Performance-Probleme sehen, so dass du manche Abfrage gar nicht mehr laufen lassen kannst, weil sie einfach zu lange dauern.
Deshalb würde ich dir raten, jetzt wo das ganze wohl noch in den Kinderschuhen steckt, dich dran zu machen, das nochmal umzuschreiben.

Verfasst: 14.10.2009, 15:28
von Michael1967
Das hört sich alles sehr schön an - nur leider blicke ich das nicht so ganz.

Hat vielleicht jemand ein Beispiel, wie ich das UNION auf meine Abfrage anwenden kann?

Verfasst: 14.10.2009, 15:31
von Michael1967
Naja, das mit dem Umschreiben ist schon zu spät, gg

@e-fee

Kannst du mir deine Idee vielleicht ein wenig ausführlicher erklären? Damit könnte ich mein Problem nämlich lösen - nur leider ist das ein wenig zu hoch für micht! :cry:

Verfasst: 14.10.2009, 15:33
von xAaron
Du machst vier Abfragen, alle der gleichen Tabelle und vereinigst sie. Totaler Schwachsinn, aber nicht zu ändern.
https://www.aspheute.com/artikel/20011015.htm

Verfasst: 15.10.2009, 12:08
von Michael1967
Hallo,

das mit dem Sortieren klappt schonmal. Danke für die Tipps.

Aber wie bekomme ich die Schlagwörter mit "A" nun unter Buchstabe "A"?

A
Schlagwörter mit A

B
Schlagwörter mit B

usw.

Hat da noch jemand einen Tipp für mich?

Verfasst: 15.10.2009, 22:27
von Michael1967
Niemand eine Idee?

Schade!

Verfasst: 15.10.2009, 23:10
von Michael1967
Hat sich erledigt - habe eine Funktion gefunden -


https://www.php.de/tutorials/44051-php- ... stabe.html

Verfasst: 16.10.2009, 11:49
von Michael1967
Eine Frage hätte ich noch.

Wie kann ich das Ganze verlinken -

Code: Alles auswählen

foreach ($data as $initial => $group) { 
    // Den Anfangsbuchstaben ausgeben 
    printf&#40;'<br />%s<br />
', $initial&#41;; 
    for &#40;$i = 0, $x = count&#40;$group&#41;; $i < $x; ++$i&#41; &#123; 
     // Und natürlich noch die aus der Datenbank zugeordneten Gruppen 
 printf&#40;'%u&#58; <a href="">%s</a><br />', $i + 1,  implode&#40;', ', $group&#91;$i&#93;&#41;&#41;; 
   
&#125; 
 &#125;

Das -

<a href="%s">%s</a>

ergibt -

Warning: printf() [function.printf]: Too few arguments in...

Wie genau muss das aufgebaut sein - damit es auch funktioniert?