anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 16:21

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit chat_delete.php
BeitragVerfasst: So 22 Okt, 2006 14:04 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
So. Könnte kompliziert werden. Wenn mir wer helfen könnte, wäre es aber sehr sehr nett :)

Ich beginne mal von ganz vorne.

Seit kurzem habe ich die RP-Charas eingebaut. Darum handelt es sich eigentlich um nichts weiter als ein DB-Feld, das "rpchar" (1 für RP-Char, 0 für ganz normaler Waldkampfchara) heißt. Ein RP-Char bekommt bei mir einen farblosen Titel und dafür sämtliche addnavs gesperrt, die zu den wesentlichen Teilen des Spiels führen könnten, es sei denn, man kann dort RP betreiben.
[php]
Z.B. if($session['user']['rpchar']!=1) addnav("Wald","forest.php");
[/php]
Ganz izi.

Für die Belohnung gibt es eine Änderung in der addcommentary. Die sieht so aus:

[php]
if ($row[comment]!=stripslashes($commentary) || $row[author]!=$session[user][acctid]){
// if ($row[comment]!=$commentary || $row[author]!=$session[user][acctid]){
$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session[user][acctid].",\"$commentary\")";
/*$whitesections = array(
'villageot' => true,
'infohaus' => true,
);*/
$postpoints = round(count(explode(' ',$commentary))/50);
if (count(explode(' ',$commentary)) >=50 && $section!="villageot" && $section!="infohaus"){
if($session['user']['rpchar']==1) $session['user']['donation']+=$postpoints;
$session['user']['rpgposts']++;
}


db_query($sql) or die(db_error(LINK));
return true;[/php]

Für einen Post über ~50 Wörter bekommt man pro 50 Wörter also 1 DP. Für ~100 Wörter 2 DP für 200 Wörter 4 DP, ganz logisch, ne?^^

Gut. Nun gibts ein Problem. Und zwar habe ich die Chatdelete installiert auf Vinestra. Heißt man kann seine Postings löschen. Naja nur ist das System nicht darauf gebaut, dass man DPs für seine Postings bekommen kann. Ergo: Es soll ermitteln wie lange der Kommentar war und dann die Anzahl von DPs abziehen.

Die chat_delete.php sieht so aus:
[php]
<?php
require_once "common.php";
//Gleichnamige Variable aus der viewcommentary();
//$section=$_GET[section];

$sql = "DELETE FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1 ";
db_query($sql);
$return = $_GET["return"];
// $return = preg_replace(""[?&]c=[[:digit:]-]*"","",$return);
// $return = substr($return,strrpos($return,"/")+1);
// if (strpos($return,"?")===false && strpos($return,"&")!==false){
// $x = strpos($return,"&");
// $return = substr($return,0,$x-1)."?".substr($return,$x+1);
// }
redirect($return);

?>[/php]

Nach einer Änderung von mir, welche allerdings nicht hinhaut so:
[php]
<?php
require_once "common.php";
//Gleichnamige Variable aus der viewcommentary();
//$section=$_GET[section];

$sql = "SELECT `comment` FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1";
$result = db_query($sql);
$row = db_fetch_assoc($result);

$points = round(count(explode(' ',$row))/50);
if (count(explode(' ',$row)) >=50 && $_GET['section']!="villageot" && $_GET['section']!="infohaus"){
if($session[user][rpchar]==1) $session[user][donation]-=$points;
$session[user][rpgposts]--;
}


$sql = "DELETE FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1 ";
db_query($sql);
$return = $_GET["return"];
// $return = preg_replace(""[?&]c=[[:digit:]-]*"","",$return);
// $return = substr($return,strrpos($return,"/")+1);
// if (strpos($return,"?")===false && strpos($return,"&")!==false){
// $x = strpos($return,"&");
// $return = substr($return,0,$x-1)."?".substr($return,$x+1);
// }
redirect($return);

?>[/php]

So nun die Frage: Wie zur Hölle muss das aussehen, dass es funktioniert? *ratlos ist*

MfG Draz

PS: "villageot" & "infohaus" sind 2 OOC Offtopicbereiche bei uns, welche keine RP Punkte geben, deshalb werden sie ausgeschlossen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 14:29 
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/
Du beziehst die Zählung nur auf $row, nicht auf $row['comment']

So sollte es allerdinsg funktionieren (und sieht nopch ein bisschen Ordentlicher aus:

[php]<?php
require_once "common.php";
//Gleichnamige Variable aus der viewcommentary();
//$section=$_GET[section];

$sql = "SELECT `comment` FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1";
$result = db_query($sql);
$row = db_fetch_assoc($result);

if($session['user']['rpchar']) $session['user']['rpgpoints'] -= floor(str_word_count($row['comment'])/50);

$sql = "DELETE FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1 ";
db_query($sql);
$return = $_GET["return"];
redirect($return);

?>[/php]

Grüße
Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 14:50 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
2 kleine Probleme:
- Das Feld "rpgpoints" gibt's net, das ist schlichtweg das Feld "donation".
- Es fehlen 2 Dinge:
    ~ Das Feld "rpgposts" soll (auch für normalcharas) um eins verringert werden.
    ~ Wenn man ein Posting am Ort "villageot" oder "infohaus" macht, sollen keine DP abgezogen werden, auch rpgposts soll nicht verringert werden.


Frage noch: Was macht die Funktion floor()?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 14:53 
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/
naja das bekommst du aber doch wohl noch selber hin, oder?

:D

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 14:54 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
Eigentlich...ja^^

Wollte es auch mehr anmerken, als eine LÖsung dafür...

Aber was floor() nun ist, wüsste ich trotzdem gerne *g*

€:

[php]
<?php
require_once "common.php";
//Gleichnamige Variable aus der viewcommentary();
//$section=$_GET[section];

$sql = "SELECT `comment` FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1";
$result = db_query($sql);
$row = db_fetch_assoc($result);

if($_GET['section']!="infohaus" && $_GET['section']!="villageot"){
if($session['user']['rpchar']) $session['user']['donation'] -= floor(str_word_count($row['comment'])/50);
$session['user']['rpgposts']--;
}

$sql = "DELETE FROM `commentary` WHERE `author` = ".$session[user][acctid]." AND `section` = '".$_GET[section]."' ORDER BY postdate DESC LIMIT 1 ";
db_query($sql);
$return = $_GET["return"];
redirect($return);

?>[/php]

So sieht das nun bei mir aus, nur falls es wen interessiert ;)

Ich bedanke mich ganz herzlich Auric :wink:

MfG Draz :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 15:29 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
floor() ist abrunden ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 21:30 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
wtf ist dann round()?
Das Selbe? Und wie runden die überhaupt? Nach normalen mathematischen regeln, ergo bis 4 abrunden, ab 5 aufrunden?

€: Lesen > me. Du hast ja ABrunden geschrieben Oo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 22 Okt, 2006 22:14 
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/
genau... round rundet kaufmännisch, (da kann mann auch angeben, bis zu welcher Stelle)
floor rundet ab und ceil rundet auf.

Ansonsten einfach mal bei php.net nachschlagen.. sind ganz sinnvol, die funktionen.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Jun, 2007 20:02 
Offline
Newbie

Registriert: Do 21 Dez, 2006 17:37
Beiträge: 4
Wohnort: Lauenhagen
hat sich erledigt


Zuletzt geändert von Anduriell am Di 12 Jun, 2007 21:06, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Jun, 2007 20:47 
Offline
Newbie

Registriert: Do 21 Dez, 2006 17:37
Beiträge: 4
Wohnort: Lauenhagen
hat sich erledigt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 12 Jun, 2007 22:36 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
Auric hat geschrieben:
genau... round rundet kaufmännisch, (da kann mann auch angeben, bis zu welcher Stelle)
floor rundet ab und ceil rundet auf.

Ansonsten einfach mal bei php.net nachschlagen.. sind ganz sinnvol, die funktionen.

Schreib doch wenigstens auch noch dazu was kaufmännisch Runden ist, bzw. funktioniert.....

1-4 wird abgerundet, 5-9 wird aufgerundet.....

Ich weiss, bin ein alter Klugscheisser, aber ich stehe dazu...*fg*

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 13 Jun, 2007 16:26 
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/
einmal abgesehen davon ist das, was du da schreibst nicht richtig, es geht ja im normallfall nicht um runden auf die Zehnerstelle, sondern genau genommen um die stelle vor jener, auf die gerundet werden soll. Bei dieser wird bei weniger als der Hälfte ab und bei 50% oder mehr aufgerudet:

Auf ganze Zahl runden (Klassisches Beispiel, Standard)
X,0 bis X,4periode9 -> X
X,5 bis X,9preiode9 -> X+1

_________________
Mehr oder minder inaktiv


Zuletzt geändert von Auric am Mi 13 Jun, 2007 17:55, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 13 Jun, 2007 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:
Auf ganze Zahl runden (Klassisches Beispiel, Standard)
X,0 bis X,8periode9 -> X
X,5 bis X,9preiode9 -> X+1


*hust*

Zitat:
Auf ganze Zahl runden (Klassisches Beispiel, Standard)
X,0 bis X,4periode9 -> X
X,5 bis X,9preiode9 -> X+1


... Wobei 0.periodisch9 sowieso identisch mit 1 ist, denn:
$this->bbcode_second_pass_code('', '
1/3 = 0.periodisch3
3 * 1/3 = 3 * 0.periodisch3
1 = 0.periodisch9')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 13 Jun, 2007 17:53 
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/
Eliwood hat geschrieben:
... Wobei 0.periodisch9 sowieso identisch mit 1 ist, denn:
$this->bbcode_second_pass_code('', '
1/3 = 0.periodisch3
3 * 1/3 = 3 * 0.periodisch3
1 = 0.periodisch9')


"1/3 = 0.periodisch3" ist im Prinzip eine Ungenauigkeit! Desshalb kann man das auch nicht auf "1 = 0.periodisch9" zurückrechnen. Mag zwar möglich erscheinen, stimmt aber letztenendes nicht, denn 0,periode9 < 1.
Deine Beispierechnung mag zwar in der Praxis anwendbar, aber genauso gut kann ich dann behaupten: 3 = 1 denn:

Eine Katze hat einen Schwanz, ist klar, oder?
Es gibt keine Katze mit zwei Schwänzen... normalerweise jedenfalls nicht.
Eine Kastze plus keine Katze ist immer noch eine Katze, aber mit drei Schwänzen. (0 + 1 = 1; 2 + 1 = 3)

Also immer schön aufpassen, mit Mathematischen Beweisen ^^
Fakt ist 0,periode9 < 1, es hat eben Asymptotischen Charakter


PS: Die 8 war allerdings wirklich ein Tippfehler *g*

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 13 Jun, 2007 18:40 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Auric hat geschrieben:
Eliwood hat geschrieben:
... Wobei 0.periodisch9 sowieso identisch mit 1 ist, denn:
$this->bbcode_second_pass_code('', '
1/3 = 0.periodisch3
3 * 1/3 = 3 * 0.periodisch3
1 = 0.periodisch9')


"1/3 = 0.periodisch3" ist im Prinzip eine Ungenauigkeit! Desshalb kann man das auch nicht auf "1 = 0.periodisch9" zurückrechnen. Mag zwar möglich erscheinen, stimmt aber letztenendes nicht, denn 0,periode9 < 1.
Deine Beispierechnung mag zwar in der Praxis anwendbar, aber genauso gut kann ich dann behaupten: 3 = 1 denn:

Eine Katze hat einen Schwanz, ist klar, oder?
Es gibt keine Katze mit zwei Schwänzen... normalerweise jedenfalls nicht.
Eine Kastze plus keine Katze ist immer noch eine Katze, aber mit drei Schwänzen. (0 + 1 = 1; 2 + 1 = 3)

Also immer schön aufpassen, mit Mathematischen Beweisen ^^
Fakt ist 0,periode9 < 1, es hat eben Asymptotischen Charakter


PS: Die 8 war allerdings wirklich ein Tippfehler *g*


2 reelle Zahlen x und y sind dann verschieden, wenn es zwischen ihnen mindestens eine reelle Zahl z gibt. Zwischen 0.999... und 1 gibt es aber keine solche Zahl z - also müssen 0.999.. und 1 gleich sein. :D

So, nun genug geschwafelt.. Sollte eigentlich nur ne Hintergrundinfo sein *g*


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 25 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