anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 14:29

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Verlängerte Posts
BeitragVerfasst: Mi 16 Aug, 2006 12:57 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Mahlzeit!
Nach einigem hin- und herüberlegen habe ich nun meine Chatlängen erweitert. Da sich zunächst das problem auftat, das in VARCHAR eben nicht mehr als 255 Zeichen reinpassen und TEXT bei irgendwelchen Scherzbolden auf dem Server seeeeehr ungemütlich werden kann und dazu auch noch weitaus unperformanter ist, kam ich dann auf die Lösung: Teilen und Zusammenfügen. Diese variante unterstützt nun etwas mehr als 500 Zeichen, also etwa doppelt so viel, wie die Ausgangslage. Allerdings lässt sich das auch im Prinzip beliebig erweitern... man braucht nur mehr Felder in der DB und muss dann die Zerlegung und Verkettung anpassen.
Doch genug Theorie, hier nun also die Umsetzung für die 500-Zeichen Variante:

Zunächst einmal muss ein weiteres Feld in DB, das erstellt man per:
$this->bbcode_second_pass_code('', ' ALTER TABLE `commentary` ADD `comment_2` VARCHAR( 255 ) NOT NULL AFTER `comment` ;')

Danach geht es an die PHP-Dateien, was auch nicht weiter wild ist, da nur die Funktionen addcommentary() und viewcommentary() in der common.php betroffen sind, also erstmal öffne common.php!

Suche:
[php]$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session[user][acctid].",\"$commentary\")";[/php]
ersetze mit:
[php]if(strlen($commentary)<=255) {
$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session['user']['acctid'].",\"$commentary\")";
} else {
$sql = "INSERT INTO commentary (postdate,section,author,comment,comment_2) VALUES (now(),'$section',".$session['user']['acctid'].",'".substr($commentary,0,255)."','".substr($commentary,255)."')";
}[/php]
Damit werden die Posts zerlegt, wenn sie länger als 255 Zeichen sind...

Suche: (in der funktion viewcommentary - ist direkt unter dem großen Query...)
[php]$x=0;
$ft="";[/php]
Füge DAVOR ein:
[php]$row['comment'] .= $row['comment_2'];[/php]
Das setzt den Kommentar dann wieder zusammen...

Suche: (ebenfalls in der viewcommentary...)
[php]<input name='insertcommentary[$section]' size='40' maxlength='".(255-$tll)[/php]
Ersetzte mit:
[php]<input name='insertcommentary[$section]' size='40' maxlength='".(510-$tll)[/php]
Das erweitert die Eingabeleiste auf die entsprechende Länge

Hinweis: Hier wird nur die maximale Anzahl eingebbarerZeichen verändert, nicht aber die Größe des Eingabefeldes selbst. Das lässt sich mit dem size-Attribut ändern (wie ihr oben seht steht es so auf 40)

Gut, das wäre dann schon alles... im allgemeinen eine recht simple, aber sehr effektive Modifikation, wenn man längere Texte ohne größere Risiken oder Performanceverluste haben möchte - meine User lieben es zumindest.

Auric :wink:

_________________
Mehr oder minder inaktiv


Zuletzt geändert von Auric am Mi 16 Aug, 2006 13:43, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 16 Aug, 2006 13:26 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 484
Wohnort: Saarbrücken
Geschlecht: Männlich
Wunderbar :)

Hattest aber n kleinen Fehler drin wenn man das ganze $sql dings wegmacht :P

Suche:

[php]
$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session[user][acctid].",\"$commentary\")";
db_query($sql) or die(db_error(LINK));
return true;
[/php]

ersetze mit:
[php]
if(strlen($commentary)<=255) {
$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session['user']['acctid'].",\"$commentary\")";
} else {
$sql = "INSERT INTO commentary (postdate,section,author,comment,comment_2) VALUES (now(),'$section',".$session['user']['acctid'].",'".substr($commentary,0,255)."','".substr($commentary,255)."')";
}
db_query($sql) or die(db_error(LINK));
return true;
[/php]

Aber sonst Perfekt, danke^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 16 Aug, 2006 13:43 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Stimmt, da habe ich zuviel ersetzte Lassen... istz nun auch oben berichtigt!

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 16 Aug, 2006 16:45 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Auric hat geschrieben:
[..] und TEXT bei irgendwelchen Scherzbolden auf dem Server seeeeehr ungemütlich werden kann [...]


*Eliwood murmelt was von "maxlenght" als Hindernis und substr als Prüfer für die zu langen Texte...

:D

Ich weiss nicht, braucht text (oder tiny, medium, long) nicht weniger Speicherplatz als die gleiche Länge in varchar nachzubauen? oO


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 17 Aug, 2006 12:35 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 04 Dez, 2004 02:34
Beiträge: 825
AUA!
Wieso so kompliziert?

1. Den Datentyp auf TEXT umstellen
2. Eine kleine if-Abfrage mit strlen() oder einfach nur substring() benutzen um die maximale Laenge des Kommentars zu ermitteln.
3. das maxlength attribut hochstellen

Perfomant, einfach, sauber, sicher, cool, toll, geil, hot, im Trend, wohltuend, entspannend, ergegend.... was weiss ich


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 17 Aug, 2006 13:26 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Das hab ich mir auch überlegt als ich den ersten Post gelesen hab...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 17 Aug, 2006 14:15 
Offline
Held
Held
Benutzeravatar

Registriert: Di 23 Aug, 2005 23:46
Beiträge: 268
Wohnort: Köln
LoGD: http://www.dragnir.de
Da ist Auric wohl übers Ziel hinausgeschossen..
Manchmal sieht man eben den Wald vor lauter Bäumen nicht. Ich hab ja auch schon 'ne Funktion in die Admingrotte gebaut, um einem Spieler das goldene Ei abzunehmen.. :pein:

_________________
Warum UNIX/Linux böse ist:

- 'kill' macht Menschen zu brutalen, blutrünstigen Bestien
- 'killall' züchtet regelrecht Massenmörder
- 'whoami' löst bei psychisch labilen Personen Existenzkrisen aus!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 21 Mär, 2007 11:11 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mi 17 Jan, 2007 12:12
Beiträge: 98
Wohnort: Wien
Geschlecht: Männlich
LoGD: https://www.mondschatten-logd.de
Ich hätte da zum Thema Postlänge noch ein kleines Problem.
Erstmal die Erläuterung des Problems^^.
Wir haben bei uns am Server die große Chatbox zum Auswählen.
Nun die Spieler haben sich erst über die Kürze der Posts "beschwert".
Daher haben wir die Chatbox reingenommen für längere Posts, allerdings ist das Problem dass die Posts nun ich glaub irgendwas um 60000 Zeichen lang werden können und das will ich begrenzen auf etwa 5000 maximal.
Mit der einfachen Chatzeile ist das ja alles kein Problem, aber wie ichs bei der Chatbox einstellen kann übersteigt mein Wissen.

Mfg
Laserian

_________________
www.Avatarbase.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 15 Apr, 2007 17:18 
Offline
Meister
Meister

Registriert: Do 15 Mär, 2007 20:56
Beiträge: 304
Wohnort: Schwerte
LoGD: http://urulenta.de/source.php?url=/source.su.php
So ich hab das eingebaut und jetzt aber einen großen fehler-.-

wen dort jetzt jemand ein kommentar schreib steht dort immer:

$this->bbcode_second_pass_code('', 'Spurenleser Aragorn sagt: "Wie geht es ihrer Familie werter Sir Christoph?comment')

dort steht also immer ein comment hinter -.-

wie bekomm ich das comment da weg?

edit fehler behoben fuer alle die den gleichen haben/haben werden hier die loesung:

ersetze:
[php]if(strlen($commentary)<=255) {
$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session['user']['acctid'].",\"$commentary\")";
} else {
$sql = "INSERT INTO commentary (postdate,section,author,comment,comment_2) VALUES (now(),'$section',".$session['user']['acctid'].",'".substr($commentary,0,255)."','".substr($commentary,255)."')";
} [/php]

durch:

[php]if(strlen($commentary)<=255) {
$sql = "INSERT INTO commentary (postdate,section,author,comment_2) VALUES (now(),'$section',".$session['user']['acctid'].",\"$commentary\")";
} else {
$sql = "INSERT INTO commentary (postdate,section,author,comment_2) VALUES (now(),'$section',".$session['user']['acctid'].",'".substr($commentary,0,255)."','".substr($commentary,255)."')";
} [/php]


Zuletzt geändert von xatchemx am So 15 Apr, 2007 17:29, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 15 Apr, 2007 17:25 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Sicher das du alles richig eingebaut hast?

Steht das "comment" auch schon in der DB immer hintendran?

In deinem Source vom Server konnte ich den Einbau gar nicht finden, so lässt sich also nix sagen, wenn du das spiel lokal oder so testes.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 15 Apr, 2007 17:30 
Offline
Meister
Meister

Registriert: Do 15 Mär, 2007 20:56
Beiträge: 304
Wohnort: Schwerte
LoGD: http://urulenta.de/source.php?url=/source.su.php
auric ich hab nen test server deshalb kannste des auf dem wo du gekuckt hast nicht sehen weil er nicht der testserver is ;)

aber die loesung habe ich im post vor deinem schon geschrieben,,

_________________
Talea
und
Mein Lieblings Forum


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 15 Apr, 2007 17:47 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
xatchemx... Schreib mal mehr als 255 Zeichen und du wirst eine Fehlermeldung erhalten. Das dort oben ist garantiert keine Lösung, die den Fehler findet und entfernt. Beziehungsweise macht es nur einen weiteren Fehler.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 15 Apr, 2007 18:40 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Laserian hat geschrieben:
Ich hätte da zum Thema Postlänge noch ein kleines Problem.
Erstmal die Erläuterung des Problems^^.
Wir haben bei uns am Server die große Chatbox zum Auswählen.
Nun die Spieler haben sich erst über die Kürze der Posts "beschwert".
Daher haben wir die Chatbox reingenommen für längere Posts, allerdings ist das Problem dass die Posts nun ich glaub irgendwas um 60000 Zeichen lang werden können und das will ich begrenzen auf etwa 5000 maximal.
Mit der einfachen Chatzeile ist das ja alles kein Problem, aber wie ichs bei der Chatbox einstellen kann übersteigt mein Wissen.

Mfg
Laserian


Damit:
http://ch2.php.net/substr
http://ch2.php.net/strlen

:)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 15 Apr, 2007 23:25 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Na ja, Eli - die Funktionen sind zwar für die überprüfung auf dem Server dann ganz praktisch, aber beim Client kannst du das trotzdem noch nicht regeln.

Ich glaube, die möglichkeiten, die HTML biten (maxrows oder so) sind nicht ganz so präzise, so das da was verloren gehen könnte.

Möglich wäre noch die überprüfung per JS... Kevz hat glaube ich mal einen "Verbleibende Zeichen"-Counter geschrieben... denn könnte man ja modifizieren/erweitern.

@xatchemx: Also was der query nun genau bringen soll weiß ich auch nicht. und schreib doch für Leute, die dir helfen wollen mal nen Link zu deinem Testserver in die Sig (falls er nicht lokal ist).

by the way? stand jetzt eigentlich immer "comment" in dem DB-Feld?

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 16 Apr, 2007 03:25 
Offline
Meister
Meister

Registriert: Do 15 Mär, 2007 20:56
Beiträge: 304
Wohnort: Schwerte
LoGD: http://urulenta.de/source.php?url=/source.su.php
den test server hab ich ya schonmal gesagt ôo is'n verbnotener deshalb bin ich da nur noch zum testen^^

Aber ich schreib ihn in die sig ôo

yaya ich weis, ich bin dumm >.<

oehm aber koennte mir trotzdem jemand helfen?Den bei dem test server geht die source nicht ôo

_________________
Talea
und
Mein Lieblings Forum


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 16 Apr, 2007 14:55 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Auric hat geschrieben:
[...] by the way? stand jetzt eigentlich immer "comment" in dem DB-Feld?

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum