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

Zeilen einer SQL-Spalte (einzeln) wieder ausgeben

stvn

Neues Mitglied
Guten Tag.

Also mal angenommen ich habe in einer Tabelle eine Spalte, in der ich die Einträge kategorisiere. Ich möchte allerdings, mehrere Kategorien festlegen können.

Ich möchte die Kategorien entweder untereinander oder via Komma getrennt in die Spalte eintragen. Geht soweit problemlos, aber nun frage ich mich, wie ich diese Kategorien eben getrennt bzw. einzeln wieder ausgeben kann...:shock:

Gibt es denn irgendeine Möglichkeit, die Zeilen der Spalte einzeln anzusprechn?
Jeglicher Ansatz und/oder weiterführende Links sind erwünscht! :)

Danke!
stvn
 
Nee, das mein ich nich.

Ich bin da:
Datenbank heißt "Datenbank1"
Tabelle heißt "Tabelle1"
Spalte heißt "Kategorie"

So, und aus dieser Spalte "Kategorie" möchte ich die Kategorien wie oben beschrieben wieder ausgeben können.
(Oder habe ich mich zu unverständlich ausgedrückt, dann bitte sagen, dann überarbeite ich den ersten Beitrag nochmal.:D)
 
Ich will wohl eine Zelle auslesen.:oops::mrgreen:

BTW: Wie genau definiert sich denn der Unterschied zwischen Spalte und Zelle? (Zeile is klar.)
 
Eine Spalte ist eine Spalte von Zellen.

Aber wieso willst du etwas "auslesen"? Du kannst mit SQL eine Abfrage absetzen, aber nichts auslesen. In dieser Abfrage kannst du vielfältig die Spalten und Reihen begrenzen. Dazu muss man sich aber mit den Möglichkeiten von SQL auskennen und deine Anforderungen verstehen.

Nicht zu vergessen, dass wenn man mit dieser Technik arbeitet, das Tabellendesign eine wichtige Role spielt. Soweit ich deine Beschreibung verstehe, ist dein Tabellendesign nicht sonderlich glücklich gewählt.
 
Wenn ich das richtig verstanden habe, beruht Dein Problem darauf, dass Du Dein Datenbankdesign nicht vernuenftig normalisiert hast: Genauer gesagt, Du hast nicht atomatere Daten.

Speichere die Kategorieren nicht gesammelt in einem Feld (Eintrag1 | Kategorie1, Kategorie2), sondern lege eine neue Tabelle an, in der Du Eintrag und Kategorie verknuepfst:
Eintrag1 | Kategorie1
Eintrag1 | Kategorie2
 
Jetzt bin ich sowas von verwirrt. xD Die Missverständnisse unterliegen wohl meiner Nichtkenntnis der Fachbegriffe diesbezüglich. Sorry dafür. :)

Nochmal neu.

Also, das hab ich:

PHP:
$query = "SELECT * FROM tabelle WHERE ID = '$id'";
$resultat = mysql_query($query);
if ($resultat) {
	while($daten = mysql_fetch_object($resultat)){
	   $daten->Kategorien
	}	
}

Jetzt wird doch der Inhalt der Spalte/Zelle(?) "Kategorien" des Eintrags mit einer bestimmten ID ausgegebn.

Mal angenommen, die Kategorien wurden wie folgt untereinander, ohne Komma oder ähnliches, in "Kategorien" eingetragen.

Code:
Kategorie1
Kategorie2
Kategorie3

Dann sieht die Ausgabe folglich einfach so aus: "Kategorie1Kategorie2Kategorie3"

Ich möchte allerdings, dass ich irgendwie z.B. nur "Kategorie2" ausgeben kann.

So, evtl verständlicher? :)
 
Ich möchte allerdings, dass ich irgendwie z.B. nur "Kategorie2" ausgeben kann.

So, evtl verständlicher? :)
Nicht wirklich, da nichts einfacher ist als das. Dazu musst du einfach eine entsprechende where Abfrage machen.

EDIT: Übrigens solltest du dich auch damit vertraut machen, dass sql und Web gefährlich sein kann. Du solltest den Begriff sql-injection kennen.
 
Na, hä? Wenn das so wäre, hätte ich mir doch den ganzen Thread sparen können...

Ich glaub ich gebs auf, da ich nicht weiß, wie ich mich noch erklären soll.:|


Aber danke, für den Hinweis bzgl. sql-injection! Werd ich mir mal anschauen. ;)
 
Na, hä? Wenn das so wäre, hätte ich mir doch den ganzen Thread sparen können...

Ich glaub ich gebs auf, da ich nicht weiß, wie ich mich noch erklären soll.:|

Du willst also nicht:
Code:
$query = "SELECT * FROM tabelle WHERE ID = '$id' AND kategorie = 'Kategorie2'";

Genau so hast du es beschrieben.
 
Code:
Kategorie1
Kategorie2
Kategorie3

Wenn du das in einem Feld (in einer Zelle) stehen hast, siehe teeny. Das ist vom Design her falsch.

entry:
id | title
----------
1 | Foo
2 | Bar

category:
id | name
----------
1 | PHP
2 | CSS

entry_to_category:
entry_id | category_id
----------------------
1 | 1
2 | 1
2 | 2

Code:
SELECT c.name
FROM entry AS e
  INNER JOIN entry_to_category AS e2c
    ON e.id = e2c.entry_id
  INNER JOIN category AS c
    ON e2c.category_id = c.id
WHERE e.id = $id

Diese Query liefert alle Kategorien, denen Eintrag $id zugeordnet ist. (Ungetestet.)
 
Du willst also nicht:
Code:
$query = "SELECT * FROM tabelle WHERE ID = '$id' AND kategorie = 'Kategorie2'";

Genau so hast du es beschrieben.

Nee. Dann da stand von mir noch folgendes:

Mal angenommen, die Kategorien wurden wie folgt untereinander, ohne Komma oder ähnliches, in "Kategorien" eingetragen.

Code:
Kategorie1
Kategorie2
Kategorie3

Dann sieht die Ausgabe folglich einfach so aus: "Kategorie1Kategorie2Kategorie3"

Ich möchte allerdings, dass ich irgendwie z.B. nur "Kategorie2" ausgeben kann.

"Kategorie2" war somit also keine eigenständige Spalte, sondern selber Inhalt. :)


---------------------------------------------

Naja, meine Idee/Variante ist wohl jedenfalls Blödsinn.:mrgreen:
Ich werd mich an euch halten und 'ne extra Tabelle erstellen.

Vielen Dank an alle!
 
Ah hast Recht, ich hatte mich mal wieder falsch ausgedrückt!! Ich meinte das halt eigentlich anders...
Heute ist echt der Wurm drin.:oops::mrgreen:
 

Neueste Beiträge

Zurück
Oben