Schleifenproblem Array

Schleifenproblem Array

am 15.09.2006 12:48:56 von Christopher Lex

hi.. hab folgendes problem

in folgendem code (unten) versuche ich eine Abfrage des öfteren zu
tätigen. dies macht man normal mit schleifen, das weis ich. nun hab ich
aber folgendes problem dass mir der syntax nicht so bekannt ist.
die variablen (wie unten im bsp) sollen die nummern mitzählen.
z.b. $helm1 soll jede runde eben $helm2 $helm3 usw
werden... wie mach ich aus der zahl am ende nochmal eine variable ??!
genau das selbe mit den variablen $intruhe['1'] $intruhe['2'] etc. wo
die ['#'] -> das # mitzählen soll bzw. als alleinständige variable
zählen soll.. und am ende eben die z.b. $helm1['id'] wo auch wieder die
ziffer +1 zählen soll.

is vielleicht ein wenig kompliziert erklärt das problem. aber vielleicht
steigen ja die gurus durch und erkennen mein nproblem auf den ersten
blick. nämlich wenn ich diese abfrage von $helm1 - $helm2 machen muss,
bekomm ich ca. 50 Zeilen code den ich mir mit ner schleife sparen könnte.

ich danke euch im vorraus
greetz lex

code einzelne zeile:
$helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
tragetyp='helm' AND id='".$intruhe['2']."'"));
if(!empty($helm1)) { print ""; }


code wiederholend:
$helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
tragetyp='helm' AND id='".$intruhe['2']."'"));
if(!empty($helm1)) { print ""; }
$helm2 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
tragetyp='helm' AND id='".$intruhe['3']."'"));
if(!empty($helm2)) { print ""; }
$helm3 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
tragetyp='helm' AND id='".$intruhe['4']."'"));
if(!empty($helm3)) { print ""; }

Re: Schleifenproblem Array

am 15.09.2006 13:14:06 von Christian Kirsch

Christopher Lex schrieb:
> hi.. hab folgendes problem
>
> in folgendem code (unten) versuche ich eine Abfrage des öfteren zu
> tätigen.
....


> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print ""; }
>
>
> code wiederholend:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print ""; }

Bitte frag' doch in einer PHP-Gruppe, wenn es um PHP geht (und dort
vielleicht gleich mit vernünftiger Orthografie - Großbuchstaben sind
keine Schikane, sondern verbessern die Lesbarkeit).

Hier geht es ausschließlich um MySQL, und damit hast Du ja offenbar kein
Problem (wenn man von der Verwendung von SELECT * absieht, die allgemein
als gefährlich gilt).

Re: Schleifenproblem Array

am 15.09.2006 14:01:58 von Andreas Scherbaum

Hallo,

Christopher Lex wrote:

> in folgendem code (unten) versuche ich eine Abfrage des öfteren zu
> tätigen. dies macht man normal mit schleifen, das weis ich. nun hab ich
> aber folgendes problem dass mir der syntax nicht so bekannt ist.
> die variablen (wie unten im bsp) sollen die nummern mitzählen.
> z.b. $helm1 soll jede runde eben $helm2 $helm3 usw
> werden... wie mach ich aus der zahl am ende nochmal eine variable ??!

Wird das PHP? de.comp.lang.php.datenbanken existiert, dort wäre die Frage
wohl besser aufgehoben. Nichtsdestotrotz:

Du kannst Variablen nicht nur über $helm1, $helm2 ... ansprechen sondern
auch über ${'helm1'}, ${'helm2'} ...
und halt auch über ${'helm' . $zaehler} .

Letztendlich würde sich aber ein Array besser machen an dieser Stelle.


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Schleifenproblem Array

am 15.09.2006 14:36:09 von Thomas Rachel

Christopher Lex wrote:

> hi.. hab folgendes problem

Aber, soweit ich das sehe, weniger mit MySQL. Deshalb crosspost+F'up2
de.comp.lang.php.datenbanken.


> in folgendem code (unten) versuche ich eine Abfrage des öfteren zu
> tätigen. dies macht man normal mit schleifen, das weis ich. nun hab ich
> aber folgendes problem dass mir der syntax nicht so bekannt ist.
> die variablen (wie unten im bsp) sollen die nummern mitzählen.
> z.b. $helm1 soll jede runde eben $helm2 $helm3 usw
> werden... wie mach ich aus der zahl am ende nochmal eine variable ??!


So genau kenne ich mich mit PHP nicht aus; da weiß ich nicht genau, ob das
geht. Ansonsten könntest Du frühzeitig mit verschachtelten Arrays arbeiten,
also ein Array anlegen mit allen, äh, Helmen drin.

Zum Beispiel:

$helm=array($helm1, $helm2)

bzw. mit Referenzen

$helm=array(1 => &$helm1, &$helm2)

und dann eben mit $helm[1] arbeiten.


> genau das selbe mit den variablen $intruhe['1'] $intruhe['2'] etc. wo
> die ['#'] -> das # mitzählen soll bzw. als alleinständige variable
> zählen soll..

Hat es einen Grund, weshalb Du hier '1', '2'... anstatt 1,2,... verwendest?

> code einzelne zeile:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print " > value=\"".$helm1['id']."\">".$helm1['bezeichnung'].""; }

BTW: SELECT * ist böse. Rufe nur die Felder ab, die Du brauchst.

Andere Möglichkeit, evtl. zusätzlich: Das könntest Du in einer Funktion
unterbringen.

function helpfetchprint($id,$felder='') {
if ($felder)
$felder.=',bezeichnung'
else
$felder = 'bezeichnung'

$res=mysql_query(
"SELECT bezeichnung FROM items WHERE tragetyp='helm' AND id='".
mysql_real_escape_string($id)."'"
);
$helm = mysql_fetch_array($res);
if(!empty($helm)) {
print "";
}
return $helm // zur Verwendung bei Bedarf
}

> code wiederholend:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print " > value=\"".$helm1['id']."\">".$helm1['bezeichnung'].""; }

stattdessen:

$helm1=helpfetchprint($intruhe['2']);


> $helm2 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['3']."'"));
> if(!empty($helm2)) { print ""; }

$helm2=helpfetchprint($intruhe['3']);


> $helm3 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['4']."'"));
> if(!empty($helm3)) { print " > value=\"".$helm3['id']."\">".$helm3['bezeichnung'].""; }

$helm3=helpfetchprint($intruhe['4']);


HTH,

Thomas
--
>Ich hab' noch ne Heintje-Platte im Schrank.
Den Schrank würde ich ungeöffnet wegschmeissen.
(Markus Mehring zu Ulrich F. Heidenreich in dcpm)

Re: Schleifenproblem Array

am 15.09.2006 14:36:09 von Thomas Rachel

Christopher Lex wrote:

> hi.. hab folgendes problem

Aber, soweit ich das sehe, weniger mit MySQL. Deshalb crosspost+F'up2
de.comp.lang.php.datenbanken.


> in folgendem code (unten) versuche ich eine Abfrage des öfteren zu
> tätigen. dies macht man normal mit schleifen, das weis ich. nun hab ich
> aber folgendes problem dass mir der syntax nicht so bekannt ist.
> die variablen (wie unten im bsp) sollen die nummern mitzählen.
> z.b. $helm1 soll jede runde eben $helm2 $helm3 usw
> werden... wie mach ich aus der zahl am ende nochmal eine variable ??!


So genau kenne ich mich mit PHP nicht aus; da weiß ich nicht genau, ob das
geht. Ansonsten könntest Du frühzeitig mit verschachtelten Arrays arbeiten,
also ein Array anlegen mit allen, äh, Helmen drin.

Zum Beispiel:

$helm=array($helm1, $helm2)

bzw. mit Referenzen

$helm=array(1 => &$helm1, &$helm2)

und dann eben mit $helm[1] arbeiten.


> genau das selbe mit den variablen $intruhe['1'] $intruhe['2'] etc. wo
> die ['#'] -> das # mitzählen soll bzw. als alleinständige variable
> zählen soll..

Hat es einen Grund, weshalb Du hier '1', '2'... anstatt 1,2,... verwendest?

> code einzelne zeile:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print " > value=\"".$helm1['id']."\">".$helm1['bezeichnung'].""; }

BTW: SELECT * ist böse. Rufe nur die Felder ab, die Du brauchst.

Andere Möglichkeit, evtl. zusätzlich: Das könntest Du in einer Funktion
unterbringen.

function helpfetchprint($id,$felder='') {
if ($felder)
$felder.=',bezeichnung'
else
$felder = 'bezeichnung'

$res=mysql_query(
"SELECT bezeichnung FROM items WHERE tragetyp='helm' AND id='".
mysql_real_escape_string($id)."'"
);
$helm = mysql_fetch_array($res);
if(!empty($helm)) {
print "";
}
return $helm // zur Verwendung bei Bedarf
}

> code wiederholend:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print " > value=\"".$helm1['id']."\">".$helm1['bezeichnung'].""; }

stattdessen:

$helm1=helpfetchprint($intruhe['2']);


> $helm2 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['3']."'"));
> if(!empty($helm2)) { print ""; }

$helm2=helpfetchprint($intruhe['3']);


> $helm3 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['4']."'"));
> if(!empty($helm3)) { print " > value=\"".$helm3['id']."\">".$helm3['bezeichnung'].""; }

$helm3=helpfetchprint($intruhe['4']);


HTH,

Thomas
--
>Ich hab' noch ne Heintje-Platte im Schrank.
Den Schrank würde ich ungeöffnet wegschmeissen.
(Markus Mehring zu Ulrich F. Heidenreich in dcpm)

Re: Schleifenproblem Array

am 15.09.2006 14:50:22 von Christopher Lex

Christopher Lex schrieb:
> hi.. hab folgendes problem
>
> in folgendem code (unten) versuche ich eine Abfrage des öfteren zu
> tätigen. dies macht man normal mit schleifen, das weis ich. nun hab ich
> aber folgendes problem dass mir der syntax nicht so bekannt ist.
> die variablen (wie unten im bsp) sollen die nummern mitzählen.
> z.b. $helm1 soll jede runde eben $helm2 $helm3 usw
> werden... wie mach ich aus der zahl am ende nochmal eine variable ??!
> genau das selbe mit den variablen $intruhe['1'] $intruhe['2'] etc. wo
> die ['#'] -> das # mitzählen soll bzw. als alleinständige variable
> zählen soll.. und am ende eben die z.b. $helm1['id'] wo auch wieder die
> ziffer +1 zählen soll.
>
> is vielleicht ein wenig kompliziert erklärt das problem. aber vielleicht
> steigen ja die gurus durch und erkennen mein nproblem auf den ersten
> blick. nämlich wenn ich diese abfrage von $helm1 - $helm2 machen muss,
> bekomm ich ca. 50 Zeilen code den ich mir mit ner schleife sparen könnte.
>
> ich danke euch im vorraus
> greetz lex
>
> code einzelne zeile:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print ""; }
>
>
> code wiederholend:
> $helm1 = mysql_fetch_array(mysql_query("SELECT * FROM items WHERE
> tragetyp='helm' AND id='".$intruhe['2']."'"));
> if(!empty($helm1)) { print ""; }
> $helm2 = mysql_fetch_array(mysql_query("SELECT * FROM items
> WHERE tragetyp='helm' AND id='".$intruhe['3']."'"));
> if(!empty($helm2)) { print ""; }
> $helm3 = mysql_fetch_array(mysql_query("SELECT * FROM items
> WHERE tragetyp='helm' AND id='".$intruhe['4']."'"));
> if(!empty($helm3)) { print ""; }

Wow! danke für die schnellen antworten!
Als erstes.. sorry dass die frage hier etwas fehl am platz war. wird
nich mehr vorkommen.

die antwort von Herrn Scherbaum hilft mir wohl am besten weiter! Die
anderen haben mir allerdings auch weitergeholfen! das mit dem SELECT *
werd ich wohl noch einmal umschreiben müssen. Danke für den Tipp!

greetz
lex