YourWBB


yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB Lite 1.0.x » [WBB Lite 1.0.x] Allg. Fragen und Probleme » DB speichert INT-Werte nur bis 10 und fängt neu an zu zaehlen... » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 1.528 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Dieses Thema wurde als erledigt markiert. Thread erledigt

Zum Ende der Seite springen DB speichert INT-Werte nur bis 10 und fängt neu an zu zaehlen...
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Sheeky
Mitglied


Dabei seit: 27.10.12
Beiträge: 5

 DB speichert INT-Werte nur bis 10 und fängt neu an zu zaehlen... Antworten Zitieren Editieren Melden       UP

Hallo Forum! großes Grinsen

Forens.: WBBlite 1.0.2

Ich habe mal eine Frage zu einem kleinen Mini-Code, den ich geschrieben habbe. Da ich kein 'Kiss-Hack' o.V. mehr gefunden habe und ohnehin einen wollte, der sofort '+1' zaehlt, wenn man im Profil auf 'Kissen' klickt, habe ich eben selber einen geschrieben.

Die PHP Datei sieht so aus:

<?php
$filename="kiss.php";
require("./global.php");

if(!$wbbuserdata['userid']) access_error();

$action=$_REQUEST['action'];
$userid=$_REQUEST['userid'];

if($wbbuserdata['userid'] == "$userid"){
$error_msg="Sie können sich nicht selbst küssen.";
eval("\$tpl->output(\"".$tpl->get("error")."\");");
exit();
}

$kiss=$db->query_first("SELECT * FROM bb".$n."_users WHERE userid='".$userid."'");
$kiss=$kiss['user_kiss'];

if($action == "send"){
$kiss=$kiss['user_kiss']+1;
$db->query("UPDATE bb".$n."_users SET user_kiss='$kiss' WHERE userid='".$userid."'");
$url = "../profile.php?userid=$userid";
header("Location: " . $url);
}
else
{
$error_msg="Es ist ein Fehler aufgetreten. Bitte wende dich an einen Administrator.";
eval("\$tpl->output(\"".$tpl->get("error")."\");");
exit();
}
?>

Mein Problem: Soweit funktioniert alles. Nur wenn ein User nun 10 Kiss erhalten hat und dann noch einmal geküsst wird, faengt die Datenbank wieder von 1 an zu zaehlen.

Die Spalte ist in der Datenbank normal unter bb*_users angelegt, wie z.B. andere Funktionen auch, die augenscheinlich genauso funktionieren und auch gehen. (Typ: INT, Standard: 0)

Vll. kann mir dabei ja wer helfen! verwirrt
02.11.12 17:49 Sheeky ist offline E-Mail Finden Als Freund hinzufügen
Beckebans Beckebans ist männlich
Alternativ Mitglied


images/avatars/avatar-5856.jpg

Dabei seit: 10.07.05
Beiträge: 481
Fähigkeiten: WBB Lite 1 Fortgeschritten
Herkunft: Paderborn
Forenversion: Lite 1.0

Antworten Zitieren Editieren Melden       UP

Ich würde ich das lieber "Küssen" nennen, nicht "Kissen" Zunge raus


Welche Länge hat das Feld denn in der Datenbank? Wenn das int(1) ist, können nur einstellige Zahlen gespeichert werden.


Hier ein paar kleine Änderungen am Code:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
<?php
 $filename="kiss.php";
 require("./global.php");

 if(!$wbbuserdata['userid']) access_error();

 if(isset($_REQUEST['action'])) $action=$_REQUEST['action'];
 else $action="error";
 if(isset($_REQUEST['userid'])) $userid=intval($_REQUEST['userid']);
 else $userid=0;

 if($wbbuserdata['userid'] == $userid) {
  $error_msg="Sie können sich nicht selbst küssen.";
  eval("\$tpl->output(\"".$tpl->get("error")."\");");
  exit();
 }

 if($action == "send") {
  $kiss_db=$db->query_first("SELECT user_kiss FROM bb".$n."_users WHERE userid='".$userid."'");
  $kiss=$kiss_db['user_kiss']+1;
  $db->query("UPDATE bb".$n."_users SET user_kiss='".$kiss."' WHERE userid='".$userid."'");
  header("Location: profile.php?userid=$userid");
 } else {
  $error_msg="Es ist ein Fehler aufgetreten. Bitte wende dich an einen Administrator.";
  eval("\$tpl->output(\"".$tpl->get("error")."\");");
  exit();
 }
?>


__________________
Meine Hacks:

- Userpage
- Geburtstagsliste
- Beitrag bedanken
- User verlinken
- PHP-Fehler anzeigen
- Umfragedauer
- Neue Beiträge während Eigenem
- Gruppenspezifische Mitgliederliste
- und weitere...

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Beckebans: 02.11.12 18:21.

02.11.12 18:19 Beckebans ist offline E-Mail WWW Finden Als Freund hinzufügen
Sheeky
Mitglied


Dabei seit: 27.10.12
Beiträge: 5

Themenstarter Thema begonnen von Sheeky
Antworten Zitieren Editieren Melden       UP

Wieso geht das jetzt bei deinem Code und bei meinem nicht? unglücklich

Aber vielen Dank! Freude Nächstes Problem:

Nun würde ich gerne einbauen, dass ein User genau 100x am Tag küssen kann und dann eine Sperre bis zum naechsten Tag erhaelt. Da ich nicht genau weiß, wie ich das mit PHP realisieren soll, wuerde ich gerne einen Cronjob verwenden (es sei denn jemand belehrt mich eines besseren. smile ..)

Meine PHP-Datei sieht nun so aus:

<?php
$filename="kiss.php";
require("./global.php");

if(!$wbbuserdata['userid']) access_error();

if(isset($_REQUEST['action'])) $action=$_REQUEST['action'];
else $action="error";
if(isset($_REQUEST['userid'])) $userid=intval($_REQUEST['userid']);
else $userid=0;

$kiss_db=$db->query_first("SELECT user_kiss FROM bb".$n."_users WHERE userid='".$userid."'");
$kiss_max_db=$db->query_first("SELECT user_kiss_max FROM bb".$n."_users WHERE userid='".$wbbuserdata['userid']."'");

if($wbbuserdata['userid'] == $userid) {
$error_msg="Sie können sich nicht selbst küssen.";
eval("\$tpl->output(\"".$tpl->get("error")."\");");
exit();
}

if($kiss_max_db['user_kiss_max'] == 0) {
$error_msg="Du hast für heute bereits genug geküsst.";
eval("\$tpl->output(\"".$tpl->get("error")."\");");
exit();
}

if($action == "send") {

$kiss=$kiss_db['user_kiss']+1;
$db->query("UPDATE bb".$n."_users SET user_kiss='".$kiss."' WHERE userid='".$userid."'");
$kiss_max=$kiss_max_db['user_kiss_max']-1;
$db->query("UPDATE bb".$n."_users SET user_kiss_max='".$kiss_max."' WHERE userid='".$wbbuserdata['userid']."'");
header("Location: profile.php?userid=$userid");
} else {
$error_msg="Es ist ein Fehler aufgetreten. Bitte wende dich an einen Administrator.";
eval("\$tpl->output(\"".$tpl->get("error")."\");");
exit();
}
?>

Das funktioniert alles tadellos. Danke nochmal. smile

Dazu habe ich eine Spalte in der DB eingefügt mit dem definierten Wert 100 als Standard.


Nun die Datei, die ich gerne als Cronjob benutzen wuerde:

<?php
$filename="kiss_cronjob.php";
require("./global.php");

$kiss_max_db=$db->query_first("SELECT user_kiss_max FROM bb".$n."_users);
$kiss_max=100;
$kiss_max=$kiss_max_db['user_kiss_max'];
$db->query("UPDATE bb".$n."_users SET user_kiss_max='".$kiss_max."');

?>

Und zwar soll diese Datei einfach nur alle 'user_kiss_max' wieder auf 100 auffüllen, wenn das Script ausgeführt wird. Klappt nur irgendwie nicht wie gewollt. unglücklich

Wäre super, wenn da auch nochmal jemand drueber gucken koennte. smile

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Sheeky: 02.11.12 21:19.

02.11.12 18:39 Sheeky ist offline E-Mail Finden Als Freund hinzufügen
Beckebans Beckebans ist männlich
Alternativ Mitglied


images/avatars/avatar-5856.jpg

Dabei seit: 10.07.05
Beiträge: 481
Fähigkeiten: WBB Lite 1 Fortgeschritten
Herkunft: Paderborn
Forenversion: Lite 1.0

Antworten Zitieren Editieren Melden       UP

Ich würde noch dieses:
php:
1:
if($kiss_max_db['user_kiss_max'] == 0) {

durch dies ersetzen:
php:
1:
if($kiss_max_db['user_kiss_max'] <= 0) {


und dieses:
php:
1:
$kiss_max=$kiss_max_db['user_kiss_max']-1;

durch dies ersetzen:
php:
1:
2:
if($kiss_max_db['user_kiss_max'] >= 1$kiss_max=$kiss_max_db['user_kiss_max']-1;
else $kiss_max=0;




Als Cronjob kannste mal dies testen, das sollte reichen:
php:
1:
2:
3:
4:
5:
6:
7:
<?php
 $filename="kiss_cronjob.php";
 require("./global.php");

 $db->query("UPDATE bb".$n."_users SET user_kiss_max='100'");

?>



Allerdings setzt die Datei den Wert bei jedem Aufruf auf 100 zurück. Die musste noch irgendwo hinpacken (und Pfad zur global.php anpassen), dass die keiner zufällig findet und aufruft.

__________________
Meine Hacks:

- Userpage
- Geburtstagsliste
- Beitrag bedanken
- User verlinken
- PHP-Fehler anzeigen
- Umfragedauer
- Neue Beiträge während Eigenem
- Gruppenspezifische Mitgliederliste
- und weitere...

02.11.12 21:46 Beckebans ist offline E-Mail WWW Finden Als Freund hinzufügen
Sheeky
Mitglied


Dabei seit: 27.10.12
Beiträge: 5

Themenstarter Thema begonnen von Sheeky
Antworten Zitieren Editieren Melden       UP

Uh. Sehr schoen! Funktioniert super. Sowohl der Code, als auch mein Cronjob. - Hab die Datei einfach etwas kryptischer genannt. Freude

Dankeee. Augenzwinkern
02.11.12 22:06 Sheeky ist offline E-Mail Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB Lite 1.0.x » [WBB Lite 1.0.x] Allg. Fragen und Probleme » DB speichert INT-Werte nur bis 10 und fängt neu an zu zaehlen...