Auslesen bestimmter Zeilen in ein Array

Pollux

Erfahrenes Mitglied
Hi!

Ich weiss nicht, ob schonmal nachgefragt wurde, aber ich habe ein kleines Problem (bin noch ein ziemlicher Newbie :():

Ich möchte die letzten drei Zeilen in der Datenbank in jeweils einen Array übergeben, um dann direkt auf die einzelnen Spalten zugreifen zu können.
Mir war folgendes schonmal klar:
PHP:
$rs = mysql_query("SELECT * FROM news");
$anzahl = mysql_num_rows($rs);

$outn1 = $anzahl;
$outn2 = $anzahl - 1;
$outn3 = $anzahl - 2;

Der Übersichtlichkeit wegen habe ich $anzahl nicht benutzt, sondern in eine neue Variable übergeben.

Jetzt könnte ich ja mit

PHP:
$row1 = mysql_query("SELECT * FROM news WHERE id='$outn1'");
$row2 = mysql_query("SELECT * FROM news WHERE id='$outn2'");
$row3 = mysql_query("SELECT * FROM news WHERE id='$outn3'");

den Rest auslesen, aber scheinbar werden die Daten nicht in einen Array übergeben. :(
Wenn ich mysql_fetch_array() nehme, dann weiss ich leider nicht, wie ich die einzelnen Zeilen dafür angebe, die er auslesen soll. :(

Kann mir da jemand bitte, bitte weiterhelfen? Falls die Frage schon gestellt wurde, würde ich mich über ein entsprechendes Keyword dazu oder den Link freuen.
Das dürfte für euch ja kein Problem sein, ich als Newbie bin damit aber hoffnungslos überfordert :(

Danke im Vorraus!
 
Also: für mich sieht das so aus, dass du auf deiner news.php nur die letzten 3 news haben willst. Der Rest soll dann im Archiv zu finden sein, oder ?

Wenn ich dich da richtig verstanden habe, dann kann man das mit "LIMIT" machen.

PHP:
$res = mysql_db_query("db", "select * from news order by id desc LIMIT 3");

Alle Daten werden nach der id geordnet, und durch LIMIT 3 wählst du nur die 3 aus, die die höchste ID haben.

Einfach, oder ? :D
 
Das klingt gut. Ist zumindest mal eleganter als meine Version. :)

Mein Problem war nur, wie ich auf die einzelnen Zellen zugreife *nichtschlagen*. :(
 
wenn du einen gültigen datensatz/ also eine zeile hast, einfach $ar = mysql_fetch_array($query);

dann hast du einen array $ar der immer die spalten als index hast, beispielsweise $ar["name"] oder $ar["id"];

wenn du das mit mehreren zeilen machen willst einfach ne schleife:

while($ar = mysql_fetch_array($query)){
blablub
}
 
db abfrage

ich mache mir mal die mühe eine kurz
anleitung wie frage ich mit php eine mysqldatenbank ab und zeige den inhalt an :-)

also zuerst sollte man erst mal kontakt zur datenbank herstellen:

$link = mysql_pconnect("localhost",$user,$passwd);
$err = mysql_select_db("db",$link);

so jetzt frage ich mal alle einträge ab:

$erg = mysql_query("select * from tabellename",$link);
jetzt habe ich irgendwo ja ergebnisse wie komme ich ran?
zuerst mal abfragen mit wieviel zu rechnen ist:

$zeilen = mysql_num_rows($erg);
in zeilen steht jetzt die anzahl der datenbankzeilen
jetzt alles raus:
for ($lo=0;$lo<$zeilen;$lo++) {
$row = mysql_fetch_row($erg); so jetzt habe ich ein array in dem alle felder einer zeile sind
echo "$row[0]<br>"; ausgabe feld 1 der zeile
} so diese schleife wird solange erledigt solange noch datenbankzeilen vorhanden sind

im groben war es das ..
 
Zuletzt bearbeitet:
@melmager

Wie ich alle Einträge rausbekomme, wusste ich. Daher habe ich ja auch gefragt, wie ich den Inhalt bestimmter Zellen ausgeben kann. Ebenso war die Angabe wie ich die Datenbank erreiche unnötig (asphyxia hatte mich ja schon soweit verbessert).
Kann mir niemand eine genaue Antwort auf meine Frage geben? :(
 
also wenn ich eine db habe sagen wir mal adresse:

felder:
name,ort,str
Inhalt
alf,melmag,woauchimmer
karl,stadt,hauptstr
otto,friesland,deich

wenn du die sql abfrage machst:
select * from adresse
$zeilen ist dann vom obrigen beispiel 3..

dann ist nach der ersten abfrage
von $row = mysql_fetch_row($erg);
$row[0] = alf
$row[1] = melmag
$row[2] = woauchimmer

-----

wenn du nur die felder name und ort haben möchtest ist die abfrage:

select name,ort from adresse;

dann gibt es nur row[0] und row[1]
row[0] = inhalt feld name
row[1] = inhalt feld ort

mann kann auch die abfrage mit
$row = mysql_fetch_array($erg);
machen und schon kann man bei row mit den feldnamen arbeiten

$row["name"]


ps ist nicht gegen dich die genaue beschreibung aber jetzt habe ich wenigstens ein link für mich :-) die frage kommt ja scheinbar öfter smile
 
Zuletzt bearbeitet:
Zurück