PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array erstellen


Said
28.02.2007, 09:48:42
Mh brauch mal einen denkanstoss für ein Projekt.
Habe in einer mysql tabelle

sprach_id || text_id || text


Jetzt möchte ich sie auslesen und die text_id und den dazugehörigen text in einen array schreiben damit ichs dann an entsprechender stelle einfach auslesen kann bsp:



//Die Variable sprache wird aus der Session entnommen
$lang_get=mysql_query("SELECT * FROM sprache WHERE sprach_id = '$sprache'");
while($txt = mysql_fetch_array($lang_get)){
$lang = array();
$lang = $txt['text_id']. "=>" .$txt['text'];
};


irgendwie so.
will das letzendlich so machen das da wo der Text mit der text_id 114 auftauchen soll schreib ich dann nur noch

echo $lang[114];

so in der Art.

Bitte um Denkanstoß wie man zum Beispiel den array richtig aufbaut da ich damit noch nie gearbeitet habe.

Said
28.02.2007, 10:02:10
ok hab einen denkanstoss durch die Forumfunktion hier unten gefunden :) assoziatives Array erstellen :)

habs jetzt so gelöst:
while($txt = mysql_fetch_array($lang_get)){
$lang[$txt['text_id']] = $txt['text'];
}

Andes
28.02.2007, 11:47:50
Warum willst du überhaupt die Daten noch zusätzlich in einem Array speichern? Die kannst du doch direkt an entsprechender Stelle ausgeben. Dieses zusätzliche in Array speichern kann bei großen Datenmengen ganz schön an die Performance gehen.

Edit:

while($txt = mysql_fetch_array($lang_get)){
$lang = array();
$lang = $txt['text_id']. "=>" .$txt['text'];
};
Die Zeile $lang = array() muss außerhalb der Schleife stehen. Sonst überschreibst du bei jedem Durchlauf dein erstelltes Array.

meikel (†)
28.02.2007, 12:13:57
//Die Variable sprache wird aus der Session entnommen
$lang_get=mysql_query("SELECT * FROM sprache WHERE sprach_id = '$sprache'");
while($txt = mysql_fetch_array($lang_get)){
$lang = array();
$lang = $txt['text_id']. "=>" .$txt['text'];
};

irgendwie so.
Das ist irgendwie falsch.

1. SELECT * ist Mist.
$lang_get=mysql_query("SELECT text_id, txt FROM sprache WHERE sprach_id = '$sprache'");

2. $lang = array(); gehört nicht in die Schleife.

3. das $lang = $txt['text_id']. "=>" .$txt['text']; ist Unfug. So erzeugst Du einen String aber kein Arrayelement.

So wirds gemacht:
$lang[$txt['text_id']] = $txt['txt'];

Said
28.02.2007, 13:09:37
Hallo Meikel :)

Danke für deine schnelle Antwort und Hilfe.

Wie du schon sagst hab ich dann ja auch so gelöst

$lang_get=mysql_query("SELECT text_id,text FROM sprache_text WHERE sprach_id = '$sprache'");
$anzahl = mysql_num_rows($lang_get);

while($txt = mysql_fetch_array($lang_get)){
$lang[$txt['text_id']] = $txt['text'];
}


Meinst du statt das in einen Array zu speichern sollte ich jedes mal wo die sprache ausgetauscht wird einen neuen mysql_select machen??? geht das nioch auch zu sehr an die Performance?

Ist es vielleicht besser wenn ich die SQL Tabelle auslese und den Array dann in der Session des Users Abspeicher der die Sprache wechselt???

Wie kann ich das sonst noch umsetzen mit nicht soviel Performance Einbußen??

Mit freundlichen Grüssen
Said

Andes
28.02.2007, 13:41:38
Ich weiß ja nun nicht wie viele Datensätze da ausgelesen und ausgegeben werden. Bei einem Content (Inhalte der Seite) kann man ja vor der Ausgabe alles erstellen und anschließend ausgeben.
Ansonsten kannst du mit mysql_data_seek() den Zeiger immer wieder an den Anfang oder auf einen bestimmten Datensatz setzen. Da musst du nicht jedes Mal einen neuen Select starten.

Said
02.03.2007, 00:30:58
Mh muss ich mir diesen Befehl gleich mal genauer anschauen.
mysql_data_seek()

Es werden später schon viele datensätze sein da ich ja komplette homepage mit allen inhalten mehrsprachiug haben will und er dann jedesmal diese abfrage includet um dann die texte zu ersetzen.