anpera.net
http://anpera.homeip.net/phpbb3/

Bios/Avas in eine eigene Tabelle.
http://anpera.homeip.net/phpbb3/viewtopic.php?f=43&t=3902
Seite 1 von 2

Autor:  Taikun14 [ Mi 15 Aug, 2007 06:23 ]
Betreff des Beitrags:  Bios/Avas in eine eigene Tabelle.

( Ich rate die Verwendung nur erfahreneren Admins, da es natürlich noch einige Unstimmigkeiten gibt! )

Beschreibung:

Hiermit könnt ihr die Bios und die Avatare in eine eigene Tabelle verfrachten. Damit entlastet ihr die Accounts Tabelle.
Da ich bis jetzt noch keine weiteren Ansätze gemacht habe, sieht alles nicht sehr schön aus
und es müssen noch einige Sachen angepasst werden. Entweder macht ihr das selber oder wartet, bis ich damit fertig bin.

Nun zum Einbau:

[php]
CREATE TABLE `bio` (
`acctid` int(11) NOT NULL default '0',
`login` varchar(50) NOT NULL default '',
`bio` text NOT NULL,
`avatar` text NOT NULL,
PRIMARY KEY (`acctid`)
) TYPE=MyISAM;

Nun folgenden Befehl ausführen:

INSERT INTO `bio` (`acctid`,`login`,`bio`, `avatar`)
SELECT `acctid`,`login`, `bio`,`avatar` FROM `accounts`


Öffne bio.php

Suche:

$result = db_query("SELECT login,... FROM accounts WHERE login='$_GET[char]'");

Entferne:

,bio & ,avatar

Füge unter:

$row = db_fetch_assoc($result);

Das hier ein:

$result1 = db_query("SELECT * FROM bio WHERE login='$_GET[char]'");
$row1 = db_fetch_assoc($result1);


Suche alle:

$row['avatar']

und ersetze sie mit:

$row1['avatar']


Suche alle:

$row['bio']

und ersetze sie mit:

$row1['bio']


Save & Close.

Open prefs.php


Suche:
[Achtung: KANN ABWEICHEN]

"bio"=>"Kurzbeschreibung des Charakters `n(Maximal {$maxbio} Zeichen),textarea,80,40,$maxbio",
"avatar"=>"Link auf einen Avatar`n(Bilddatei - maximal 200x200 Pixel)`n"

und entferne es.

Suche weiter:


( und das, das darüber steht! )
addnav("Bio","$link");

Ersetze mit:

addnav("`^Bio bearbeiten`0","biograph.php");

Save & Close.

Öffne user.php

Suche:
[Achtung: KANN ABWEICHEN]

"bio"=>"Kurzbeschreibung des Charakters `n(Maximal {$maxbio} Zeichen),textarea,80,40,$maxbio",

und entferne es.

Suche:

}elseif ($_GET[op]=="del"){

$sql = "SELECT name,lastip,uniqueid from accounts WHERE acctid='$_GET[userid]'";

Füge darunter ein:

$sql4 = "DELETE FROM bio WHERE acctid='$_GET[userid]'";
$result4 = db_query($sql4) or die(db_error(LINK));



Suche:

}elseif ($_GET[op]=="save"){

füge danach ein:

$bio = mysql_real_escape_string(stripslashes($_POST['bio']));

$avatar = mysql_real_escape_string(stripslashes($_POST['avatar']));

db_query("UPDATE bio SET avatar='$avatar', bio='$bio' WHERE acctid='".$_GET['userid']."'");

Suche weiter:

showform($userinfo,$row);

darunter:


$prefs['bio'] = $row1['bio'];

$prefs['avatar'] = $row1['avatar'];

showform($form,$prefs);

Suche weiter:

"lastwebvote"=>"Zuletzt bei Top Wep Games gewählt,viewonly",

"donationconfig"=>"Spendenkäufe,viewonly"

);

darunter:

$form=array(



"bio"=>"Kurzbeschreibung des Charakters `n(Maximal {$maxbio} Zeichen),textarea,80,40,$maxbio",

"avatar"=>"Link auf einen Avatar`n(Bilddatei - maximal 200x200 Pixel)`n"

);
[/php]

Die angehängte Datei einfach in den Root laden.

Dateianhänge:
biograph.zip [1.05 KIB]
209-mal heruntergeladen

Autor:  Harthas [ Mi 15 Aug, 2007 06:33 ]
Betreff des Beitrags: 

Wenn du das schon veränderst, dann stell doch gleich die SQL-Where-Klausel auf die Account-ID um. Suchen nach integeren Zahlen ist erstens schneller als eine Suche mit einem String als Kriterium, und zweitens sparst du dir so ein Feld in der Bio-Tabelle.

Ach ja, wofür hast du eigentlich den Namen in der Tabelle mit drin?

[php] output("Erfolgreich geändert");
redirect("biograph.php"); [/php]
Hier ist der output überflüssig, da er eh nicht angezeigt wird ;-)

Autor:  Taikun14 [ Mi 15 Aug, 2007 06:40 ]
Betreff des Beitrags: 

Dankeschön für den Hinweis, hab' das grad' eben in paar Minuten gemacht und da trifft man dann durchaus mal zu schnelle Entscheidungen.. wollt eig. mit der bioID arbeiten, aber kA :)

Autor:  Harthas [ Mi 15 Aug, 2007 06:47 ]
Betreff des Beitrags: 

Mit der Bio-ID arbeiten würde natürlich auch gehen, nur steht diese nicht in direktem Zusammenhang mit dem Accounts-Eintrag des betreffenden Spielers. Deshalb wäre die acctid eigentlich praktischer, da da der Zusammenhang ja bereits klar ersichtlich ist ^^

Aber es ist dein Projekt, also arbeite so, wie es für dich richtig ist.

Autor:  Taikun14 [ Mi 15 Aug, 2007 07:03 ]
Betreff des Beitrags: 

Ach was, ich bin immer für Kritik zu haben und versuche es besser zu machen, wenn es geht, ganz klar, nur ich habe eben nicht dran gedacht. :)

Autor:  Kevz [ Mi 15 Aug, 2007 17:09 ]
Betreff des Beitrags: 

Das erneute speichern des "Benutzernamens" ist ebenfalls "Sinnlos". Warum speicherst Du diesen zweimal Separat? - Macht wenig Sinn. . . da kannst Du genauso gut, in die Accounts-Tabelle eben verknüpfen.

Autor:  Eliwood [ Mi 15 Aug, 2007 17:11 ]
Betreff des Beitrags: 

Ich habs bei mir mit dieser Tabellenstruktur gemacht:
$this->bbcode_second_pass_code('', 'CREATE TABLE `characterbiographies` (
`acctid` int(11) unsigned NOT NULL,
`content` mediumtext,
`status` tinyint(1) NOT NULL default '0',
`lastcheck` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`acctid`)
) COMMENT='Tabelle für die Biographien, als Auslagerung aus der Account';')

Wobei inzwischen nicht einmal mehr die Originale Bio in der Datenbank steht, die ist auf der Platte hart gespeichert (... Das interpretieren meiner Codes dauert zu lange und benötigt zuviel Speicherplatz, um einfach alles on-the-fly zu machen).

Avatare lasse ich hochladen, so entfällt das Avatarfeld sogar ganz.

Um an die Bio zu kommen, brauchst du die Acctid. Falls du was anderes hast, muss ein Join her:
$this->bbcode_second_pass_code('', 'SELECT cb.content FROM characterbiographies cb LEFT OUTER JOIN accounts a USING(acctid) WHERE a.login = ?')

Autor:  Linus [ So 09 Sep, 2007 16:31 ]
Betreff des Beitrags: 

Schon eine tolle Idee die Bio und Avartar aus der accounts zu werfen. Bei mir sind dann direkt auch noch der Tiername, Tieravatar und die Tierbio mit umgezogen. Allerdings ist mir aufgefallen das an Taikuns Umbauanleitung noch eine Kleinigkeit fehlt:

Suche in der setnewday.php nach:
[php] $sql = "DELETE FROM accounts WHERE acctid IN ($delaccts)";
db_query($sql) or die(db_error(LINK));[/php]

Und füge darunter ein:
[php] $sql = "DELETE FROM bio WHERE acctid IN ($delaccts)";
db_query($sql) or die(db_error(LINK));[/php]

Autor:  Constance [ Sa 12 Apr, 2008 07:25 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Also ich hab ein Problem mit dem ganzen und zwar funktioniert mein Usereditor seitdem ichs eingebaut hab nichtmehr funktioniert und ich in einer Badnav lande, wenn ich das Formular speicher. Nebenbei öffnet er unten im iframe das iframe so 5 mal in sich selbst, habs aber nach anleitung eingebaut ... ich geb die notwendigen dateien mal frei, wäre toll wenn wer helfen könnt

link zur source
http://yandal.silicon.hl-users.com/sour ... showsource

Autor:  Linus [ Sa 12 Apr, 2008 10:56 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Da auch der Link zum Avatar zusammen mit der Bio in die neue Tabelle umgezogen ist muss in dem Array $userinfo auch die Zeile $this->bbcode_second_pass_code('', '"avatar"=>"Avatar:",') gelöscht werden oder mit // am Anfang der Zeile als Kommentar gekennzeichnet werden.
Schau mal ob deine user.php dann wieder funktioniert.

LG
Linus

Autor:  Constance [ Sa 12 Apr, 2008 17:55 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Ah super, das hab ich nicht bedacht, danke, funzt wieder *g*

Naja manchmal is die Lösung so einfach nur man sieht den Wald vor lauter Bäumen nicht :D

Autor:  Constance [ Mi 07 Mai, 2008 09:31 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Neues Problem, mir ist eben aufgefallen, dass Bio und Ava bei nem DK gelöscht werden -.-

muss da vllt doch noch was in der dragon.php geändert werden?

Ich hab in der gleichen tabelle noch ein paar zusatzinfos über den char, die die user selbst eintragen können, die werden aber nicht gelöscht.

Wahrscheinlich nur was kleines, aber ich komm nicht drauf woran es liegen könnte.

Autor:  Eichi [ Sa 10 Mai, 2008 01:10 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Zitat:
muss da vllt doch noch was in der dragon.php geändert werden?


Würde ich jetzt mal von ausgehen, einfach die Spalten in der Valuesliste ergänzen damit sie bei DK übergangen werden (zum zurücksetzen)

Autor:  Constance [ Sa 10 Mai, 2008 09:01 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Was mich wundert ist, wird nach nem dk nicht nur die accounts soweit geleert? (ausser die die eben übersprungen werden sollen).

Und alle anderen tabellen bleiben davon unberührt ... ausserdem stehen sie ja drin, weil sie ja standardmässig in den beiden arrays stehen.

Autor:  Eichi [ So 11 Mai, 2008 00:26 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Constance hat geschrieben:
Was mich wundert ist, wird nach nem dk nicht nur die accounts soweit geleert? (ausser die die eben übersprungen werden sollen).

Und alle anderen tabellen bleiben davon unberührt ... ausserdem stehen sie ja drin, weil sie ja standardmässig in den beiden arrays stehen.



Da hast du recht, nur die accounts werden geleert, aber wir kennen soweit ja auch deine Tabellenstruktur nicht, also wo werden denn die ICQ-Daten etc gespeichert?

Auf anhieb finde ich nun auch keine Stelle in deinem Source wo das gespeichert wird?

Grüße, Eichi

Autor:  Constance [ So 11 Mai, 2008 09:26 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

ICQ-Daten werden bei mir auch nicht gespeichert.

Ich hab einen kleinen Userpanel (nennt sich panel.php)
Dort kann der User z.b. Herkunft und Alter seines Chars eingeben, eben genauso wie die Bio und das Ava.

Diese Zusatzdaten bleiben auch nach dem Kill erhalten und nur eben Bio und Ava werden gelöscht ...

die Tabelle in die das alles gespeichert wird nennt ich eben bio.

Autor:  Constance [ Do 22 Mai, 2008 14:26 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

Okay, ich weiß jetzt wo das problem liegt, es liegt nicht am DK, sondern am neuen Tag ... wenn ich über den UE etwas an einem benutzer ändere und er dann einen neuen Tag bekommt (egal ob manuell oder system) sind Bio und Ava futsch, die restlichen daten bleiben aber erhalten. Also muss das Problem ja irgendwo im UE liegen, ich finds nur nicht, ich hab alles richtig eingebaut (zumindest hab ich es schon 3 mal durchgesehen und keinen fehler gefunden)

Autor:  Rikkarda [ Do 22 Mai, 2008 14:53 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

jop hast das feld in der user.php nicht geändert sicher.. hatte das auch anfangs als ich die bio vergrössert hatte vergessen

Autor:  Constance [ Do 22 Mai, 2008 16:29 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

öhm ehrlich gesagt kA, ich hab es so eingebaut wie in der Anleitung oben ... alles, auch die user.php


Daher weiß ich eben nicht wo der fehler liegt

Autor:  Rikkarda [ Do 22 Mai, 2008 16:35 ]
Betreff des Beitrags:  Re: Bios/Avas in eine eigene Tabelle.

$this->bbcode_second_pass_code('', '[code]$form=array("bio"=>"Kurzbeschreibung des Charakters `n(Maximal {$maxbio} Zeichen),textarea,80,40,$maxbio","avatar"=>"Link auf einen Avatar`n(Bilddatei - maximal 200x200 Pixel)`n");
[/code]')

$maxbio ist nicht definiert in der user.php

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/