Per mysql_fetch_array auf best. zeile zugreifen

hi all,
standard-abfrage per mysql_fetch_array ist ja folgende struktur:

$abfrage = „SELECT * from $tabelle WHERE … Limit 1“;
$result = mysql_query($abfrage,$conn);

while ($row1 = mysql_fetch_array ($result)) …

jetzt bekomme ich über die while-schleife alle zurückgelieferten zeilen ins html-dokument…aber wie geht das bitte wenn ich NUR auf z. b. zeile 3 zugreifen will? ich will das aber nicht im sql-statement filtern mit Limit 2,1 sondern alle anderen zeilen müssen in $result bleiben da ich diese zeilen woanders auf der seite brauche… mit mysql_fetch_array ($result[2]) bekomm ich nur fehler…

danke für hilfe
meth

hi,

also ich probier dir mal zu helfen, ich werde jedoch den nicht fetch_array sonder fetch_row nehmen. bin mir zu dem nicht sicher ob ich dich richtig verstanden hab, aber ich probiers mal :smile:

/* Account informations */
$username="";
$password="";
$database="";
$host=„localhost“ ;

/* Database connect */
mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( „Unable to select database“);

$abfrage = „SELECT * from $tabelle WHERE … Limit 1“;

if ($result = mysql_query($abfrage,))
{
$i=1;
while ($row = mysql_fetch_row($result))
{
$ergebnis_$i[0] = $row[0];
$ergebnis_$i[1] = $row[2];
$ergebnis_$i[2] = $row[3];
i++;
}
}

// Ausgabe 3 Zeile

echo „$ergebnis_3[0], $ergebnis_3[1], $ergebnis_3[2]“;

// Ausgabe 1 Zeile
ecoh „$ergebnis_1[0], $ergebnis_1[1], $ergebnis_1[2]“;

hab die ganze sache nicht ausprobiert, aber ich denk so sollte es gehen. Ist das, dass was du gesucht hast ?

mfg
Christian

gute idee, habs jetzt folgendermaßen angepasst für meine bedürfnisse:

if ($result = mysql_query($abfrage,$conn))
{
$i=1;
while ($row = mysql_fetch_row($result))
{
$ergebnis_$i[0] = $row[0]; #name
$ergebnis_$i[1] = $row[1]; #bild
$ergebnis_$i[2] = $row[2]; #link
$ergebnis_$i[3] = $row[3]; #start
$ergebnis_$i[4] = $row[4]; #aufrufe
$ergebnis_$i[5] = $row[5]; #aufrufe1
$ergebnis_$i[6] = $row[6]; #klicks
$ergebnis_$i[7] = $row[7]; #maxviews
#$aufrufe = $aufrufe+1;
#$aufrufe1 = $aufrufe1+1;
$i++;
}
}

bekomm aber einen parse error für folgende zeile:

$ergebnis_$i[0] = $row[0]; #name

syntax scheint aber korrekt! :frowning:

hi
weiss jetzt wo der fehler liegt:

$ergebnis_$i

es funzt nicht das $i mit zahlen zu füllen! habs mit $ergebnis_.$i versucht, dann bekomm ich aber folgendes#

Cannot use a scalar value as an array

wie könnte man denn die variable $i sauber an $ergebnis dranhängen? wenn ich es statisch vergebe $ergebnis_1… dann funzt es :smile:

hi chris,
nochmal kurz, der hängt das nicht dran:

$t = 0;
while ($row = mysql_fetch_row($result)) {
echo $t;
$ergebnis_$t[0] = $row[0]; #name

dieser part:
…ergebnis_$t[0]…

da wird das $t nicht drangehange, es gibt einen fehler mit dieser „Cannot use a scalar value as an array“ meldung…was tun?

hi,

ned so schnell ich bin schon am suchen, aber mir fällts grad nicht ein. ich such mal weiter. nur nicht das du meinst ich hab dich vergessen :wink:

cu

was für ein netter leidensgenosse!!! :smile: hast was gut bei mir man! brauchst du was für photoshop, javascript, flash? :smile:)))

nönö ist doch ehrensache :smile:

ausserdem konnt ich dir ja noch nicht helfen :wink: hab jetzt mal die frage im http://www.php4-forum.de gestellt, dort bekommt man im Normal fall recht schnell eine antwort :smile:

ich selber such mal weiter, man hat ja sonst nix zu tun :wink:

ist nur zu empfehlen :smile:

ok ich habs :smile: … so gehts :wink:

if ($result = mysql\_query($abfrage))
{
$i=1;
while ($row = mysql\_fetch\_row($result))
{
$ergebnis[$i][0] = $row[0];
$ergebnis[$i][1] = $row[2];
$ergebnis[$i][2] = $row[3];
$i++;
}

echo $ergebnis[1][1];
}

nennt sich 2 dimensionales Array :smile:
ich dödel hab das schon mal wo gebraucht und es ist mir erst jetzt eingefallen … *g* stand wohl ein bisschen auf der Leitung.

oha, was macht ihr da … schau dir mal mysql_result() an, damit kannst du direkt auf eine ergebniszeile springen…

www.php.net/mysql_result

genial, es funzt schonmal, da hätte ich aber noch eine kleine feine sache!

nachdem mein array nun sauber durchlaufen und gefüllt wurde, echoe ich es und es kommt auch sauber raus:

echo $ergebnis[0][1];

liefert mein ergebnis.

aber wenn ich es so echoe (was früher, im eindimensionalen Array funzte):

echo „test: $ergebnis[0][1]“;

dann bekomm ich als endergebnis nur: test: Array[1]

wenn ich es wieder so mache: (einige ergebnissrelevante if-abfragen später):

echo $ergebnis[0][1];

bekomme ich wieder mein ergebnis! kann es sein dass man 2dimensionale arrays wie du sagtest, nicht einfach innerhalb strings weiterverwenden kann?

(

och verdirb uns doch nicht den ganze spass … jetzt haben wir solange gebastelt :wink:

hi,

das problem kannst du wie Folgt lösen:

echo „Test „.$ergebnis[0][1].“ und weiter gehts mit HTML“;

heut is wirklich nicht gut ich vergesse immer die hälft :wink: wird wohl zeit fürs Weekend :smile:

cu

dann mach es doch einfach so:
echo "test: ".$ergebnis[0][1];
das klappt bestimmt. :smile:

da war ich wohl ein bisschen zu langsam, sorry!

hab ich ja klar, aber ich raffs nicht, wieso gehts weiter oben, und unten nicht???

hm

2 dimensionale Arrays dürfen nicht zwischen den „“ zeichen stehen.

also nicht wie du echo „test: $ergebnis[0][0] weiter gehts“
sondern eben echo "test: ".$ergebnis[0][0].„weiter gehts“;

das wolltest doch du wissen oder ?

nene is ja nett, so hab ichs ja, aber ich würd gern wissen, warum denn dass nicht so geht?

boa, bin i überfragt *g*.

ich vermute weil er annimmt das nach dem ersten [] das array fertig ist, aber warum und wiso, da bin ich voll überfragt.

jeppp, und WIESO dürfen das zweidimensionale Arrays nicht??? ist das dem php-kernel zuviel???