Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
frenetic

Einzelne Daten auslesen

Recommended Posts

Hier mal 'ne ganz leichte Frage meinerseits. Wie kann ich per PHP einzelne Daten aus 'ner DB auslesen und in Form von einem Array speichern?

Genauer möchte ich aus einer Spalte (spalte2) dieselben Daten (wert2) von verschiedenen Einträgen (3, 7 und 8) ermitteln und dann die einzelnen erhaltenen Werte in Form eines Arrays ($werte) ausgeben.

Also in etwa so:

$wo = array(3, 7, 8);

$werte = mysql_query("SELECT wert2 FROM spalte2 WHERE id = '$wo'");

echo $werte[1];

So sollt dann natürlich der Wert2 des Eintrags mit der id=3 aus Spalte2 ausgegeben werden ... allerdings müsste ja dazu auch $werte ein Array sein und wie genau ich das hinkrieg, weiss ich nicht.

Is wie gesagt eine ziemliche N00b Frage *schäm*, aber ich wär trotzdem dankbar, wenn sie mir jemand beantworten könnt.

~f

Share this post


Link to post

Also um ehrlich zu sein, versteh ich deine Beschreibung nicht ganz, versuch aber mal auf das Grundverständnis einzugehen.

Zunächst in einfachen Worten, wie es ungefähr in der Datenbank funktioniert, da ich hier keine komplette Abhandlung tippen will. :)

Um Daten aus der Datenbank abzufragen, muß du zunächst ein SELECT Statement absetzen, was du ja auch so ungefähr getan hast. Daraus erstellt die Datenbank quasi eine temporäre Ergebnistabelle und gibt dir eine ID dafür zurück. Du kannst nun diese Daten aus dieser Tabelle nacheinander abfragen.

Das SELECT Statement in einfacher Form ist so aufgebaut:

SELECT Spaltenname FROM Tabellenname WHERE Bedingung

Okay, anhand eines praktischen Beispieles:

Tabelle testtabelle hat die Spalten idspalte und wertspalte. Die Tabelle sieht mit ein paar Beispielwerte ungefähr so aus:

idspalte wertspalte

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

1 wert1

2 wert2

3 wert3

4 wert4

5 wert5

Wenn man nun folgendes Statement absetzt

SELECT wertspalte FROM testtabelle WHERE idspalte = 2;

erhält man folgende temporäre Ergebnistabelle:

wertspalte

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

wert2

Dieses Ergebnis kann man nun auslesen.

Du möchtest von bestimmten IDs die Werte auslesen, dann sieht das ungefähr so aus:

SELECT wertspalte FROM testtabelle WHERE idspalte IN (2,4,5);

Ergebnistabelle sieht dann wie folgt aus:

wertspalte

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

wert2

wert4

wert5

Du kannst natürlich auch mehrere Spalten auslesen in einer Selectanweisung.

Beispiel:

SELECT wertspalte, idspalte FROM testtabelle WHERE idspalte IN (2,4,5);

Ergebnistabelle sieht dann so aus:

wertspalte idspalte

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

wert2 2

wert4 4

wert5 5

Wenn man allte Spalte will, nimmt man auch einfach das Zeichen *.

Beispiel:

SELECT * FROM testtabelle WHERE idspalte IN (2,4,5);

Ergebnistabelle:

idspalte wertspalte

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

2 wert2

4 wert4

5 wert5

Soviel zur Theorie. :)

Zu deinem Problem, was ich ja nicht ganz verstehe und deswegen es mehr auf mein Beispiel beziehe. :)

Du hast ein Array mit den IDs, die du auslesen willst:

$wo = array(2, 4, 5);

Diese muß du in dein SQL Statement einbauen, so das es die Db versteht.

$sql = "SELECT wertspalte FROM testtabelle WHERE idspalte IN (". implode(",", $wo).")";

Der Befehl

implode verbinden die Arraywerte mit einem Komma dazwischen.

$resultid = mysql_query($sql);

Mit dem obrigen Befehl wird das Statement an die DB übermittelt und diese gibt eine ID der nun erstellten temporöre Ergebnistabelle zurück.

$row = mysql_fetch_array($resultid);

Mit dem obrigen Befehl wird nun von der Ergebnistabelle die erste Zeile ausgelesen. Führst du die Zeile nochmal aus, dann wird die nächste Zeile ausgelesen. Deswegen verwendet man häufig eine while Schleife, um alle Zeilen aus der Ergebnistabelle zu bekommen.

while ($row = mysql_fetch_array($resultid))

{

// Irgendwas mit den Daten machen

}

Nun noch etwas zu dem Befehl mysql_fetch_array. Dieser ließt, wie oben beschrieben, eine Zeile aus der Ergebnistabelle aus und gibt diese zurück, was hier der Variable $row übergeben wird. Diese Variable ist dann ein Array, auch wenn du nur eine Spalte ausließt. Der Name der Spalte ist dann auch gleich der Index des Arrayfeldes.

Also da wir hier nur die Spalte wertspalte auslesen, wäre der Aufruf um den Wert zu bekommen $row['wertspalte'] und beim ersten Aufruf würde dies wert2 enthalten.

Beispiel:

$wo = array(2, 4, 5);
$sql = "SELECT wertspalte FROM testtabelle WHERE idspalte IN (". implode(",", $wo).")";
$resultid = mysql_query($sql);
while ($row = mysql_fetch_array($resultid))
{
    echo "Ergebnis: ".$row['wertspalte']."<br>";
}
Dieses Beispielprogramm mit den obrigen Testdaten würde folgende Ausgabe produzieren. Ergebnis: wert2 Ergebnis: wert4 Ergebnis: wert5 In der while-Schliefe kannst du natürlich machen, was du möchtest. Zum Beispiel die Werte in ein anderes Array speichern:
$ergebnis = array();
while ($row = mysql_fetch_array($resultid))
{
    $ergebnis[] = $row['wertspalte'];
}

Somit würde in $ergebnis[0] der Wert "wert2" stehen, in $ergebnis[1] der Wert "wert4", usw.

Hoffe, das hat dir ein wenig geholfen. :)

Share this post


Link to post

... ein wenig? Ich sag nur: GENIAL! :w00t:

Vielen herzlichen Dank für deine schnelle und superverständliche Antwort, Stefan! Echt, du kannst sowas super erklären. Hatte keinrelei Probleme, deiner Anleitung zu folgen und hab mittlerweile auch genau das, was ich wollte, zum Laufen gebracht.

Sowas nenn ich kompetenten und individuellen Support. :thumb_up:

~f

Share this post


Link to post

Das hab ja selbst ich verstanden :D

Mensch, man merkt gleich, daß Stefan der Urlaub gut getan hat, und er wieder ziemlich viel Energie in sich hat :D:P :)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×