anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Einzelne Werte aus dem Datenbankfeld "prefs" https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=5113 |
Seite 1 von 1 |
Autor: | Nomegz [ Sa 06 Mär, 2010 10:58 ] |
Betreff des Beitrags: | Einzelne Werte aus dem Datenbankfeld "prefs" |
Guten morgen alle zusamm'. Ich benutze diese Standard-Emote & Talk Farben. Ich würde nun gerne für einige Ereignisse im Wald und auch für das normale sprechen auf den Plätzen die commentemotecolor und die commenttalkcolor aus der Datenbank ziehen. Nun habe ich nur folgendes Problem, dass ich nicht weiß wie ich diese Werte aus dem Datenbankfeld prefs rausziehen kann. Ich versteh nicht wie die Daten dort eingespeichert sind, da sie bei jedem Spieler unterschiedlich sind. Hier die Datenbankabfrage aus der viewcommentary() (common.php): PHP: $sql = "SELECT commentary.*, accounts.name, accounts.login, accounts.loggedin, accounts.location, accounts.laston, accounts.prefs FROM commentary INNER JOIN accounts ON accounts.acctid = commentary.author WHERE section = '$section' AND accounts.locked=0 ORDER BY commentid DESC LIMIT ".($com*$limit).",$limit"; $result = db_query($sql) or die(db_error(LINK)); $counttoday=0; for ($i=0;$i < db_num_rows($result);$i++){ $row = db_fetch_assoc($result); Ist die Standard-Abfrage nur um das Feld prefs erweitert. Wenn ich nun aber versuche mit $row['prefs']['commentemotecolor'] die Farbe aufzurufen führt er nur den ersten Buchstaben des Datenfeldes aus, Da nun ['commentemotecolor'] den Wert 0 für dieses Array erhält. Ich habe dann in der Datenbank die Zeichen abgezählt bis zum gesuchten Zeichen (bei meinem eigenen Char) und die Zahl eingefügt. Hab dann aber gemerkt, dass die prefs bei jedem Spieler anders angelegt ist. Ich selbst komme leider nicht mehr weiter und hoffe auf Hilfe. ![]() Vielen Dank schon mal im Voraus! |
Autor: | Patzue [ Sa 06 Mär, 2010 11:31 ] |
Betreff des Beitrags: | Re: Einzelne Werte aus dem Datenbankfeld "prefs" |
Ich weiß zwar nicht, was das problem ist. Aber was mir auffällt, wenn ich durch die common.php schaue.. du hast sowohl $HTTP_GET_VARS als auch $_GET in der common.php drin. Falsl du in der dbwrapper kein $HTTP_GET_VARS = $_GET oder sowas drin hast. Würde ich dir raten dich für eins entscheiden ![]() |
Autor: | anpera [ Sa 06 Mär, 2010 12:39 ] |
Betreff des Beitrags: | Re: Einzelne Werte aus dem Datenbankfeld "prefs" |
Das Feld 'prefs' wird mit mehreren Werten befüllt, die "serialized" gespeichert werden. Um daraus wieder einzelne Werte zu bekommen, musst du diese aus dem serialized String erst wieder in ein Array schreiben. Dir fehlt eigentlich nur ein $row['prefs'] = unserialize($row['prefs']); bevor du mit $row['prefs']['commentemotecolor'] auf den gewünschten Wert zugreifen kannst. |
Autor: | Nomegz [ Sa 06 Mär, 2010 16:38 ] |
Betreff des Beitrags: | Re: Einzelne Werte aus dem Datenbankfeld "prefs" |
anpera hat geschrieben: $row['prefs'] = unserialize($row['prefs']); Super! Vielen Dank! Hab damit noch nie gearbeitet deshalb hab ich auch keine Ahnung davon gehabt. ![]() Gruß vom Goblin Nomegz |
Autor: | Salator [ Do 11 Mär, 2010 14:55 ] |
Betreff des Beitrags: | Re: Einzelne Werte aus dem Datenbankfeld "prefs" |
Nochmal von vorn: Du willst einige Standard-Texte in den Farben so gestalten wie der User eingestellt hat? Quasi um zu verdeutlichen dass er mit einem NPC spricht/interagiert? Solange nur jeder seine eigenen Einstellungen sieht brauchst du keine Datenbankabfrage sondern nimmst einfach $session['user'] und hier liegen die prefs schon unserialisiert vor. Dies wird z.B. dafür verwendet ob der User Töne hören will. Die folgende Zeile setzt $c auf die Sprachfarbe falls vorhanden, ansonsten auf `3. Du musst dann nur noch die betreffenden Farben durch $c ersetzen. $this->bbcode_second_pass_code('', '$c='`'.($session['user']['prefs']['commenttalkcolor']>''?$session['user']['prefs']['commenttalkcolor']:'3'); ') |
Autor: | Nomegz [ Do 11 Mär, 2010 20:17 ] |
Betreff des Beitrags: | Re: Einzelne Werte aus dem Datenbankfeld "prefs" |
Salator hat geschrieben: Nochmal von vorn: Du willst einige Standard-Texte in den Farben so gestalten wie der User eingestellt hat? Quasi um zu verdeutlichen dass er mit einem NPC spricht/interagiert? Solange nur jeder seine eigenen Einstellungen sieht brauchst du keine Datenbankabfrage sondern nimmst einfach $session['user'] und hier liegen die prefs schon unserialisiert vor. Dies wird z.B. dafür verwendet ob der User Töne hören will. Die folgende Zeile setzt $c auf die Sprachfarbe falls vorhanden, ansonsten auf `3. Du musst dann nur noch die betreffenden Farben durch $c ersetzen. $this->bbcode_second_pass_code('', '$c='`'.($session['user']['prefs']['commenttalkcolor']>''?$session['user']['prefs']['commenttalkcolor']:'3'); ') Hehe. Ich hoffe das wird nun einigen anderen weiterhelfen, die sich damit nicht auskennen, aber das war mir nun schon bewusst. ![]() Bei mir gings nun aber darum, das für den aktuellen Charakter die Farben von anderen Charakteren eingefügt werden. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |