-
08.12.10 21:16 #1
- Registriert seit
- Dec 2010
- Beiträge
- 54
Hallo Liebe Mitglieder
Ich bin der Sebatian. und bin 34 Jahre alt. Ich habe da ein problem
Undzwar.
Ich habe eine Msyql tabelle in der werte gespeichert werden un nach aktion automatisch erhöht werden. ( Punkte)
so jetzt meine frage ich möchte nun das wenn die punkte einen gewissen wert haben das dann in der gleichen tabelle eine ander spalte automatisch um eines erhöt wird.( Level)
Als Beispiel:
ein mitglied hat 148 punkte und ist noch in level null bei erreichen von 200 Punkten soll er in Level 1 kommen.
Wie stelle ich das nun an das das Level dann automatisch angehoben wird wenn ein wert erreicht ist.
Da ich mir im mpment das PHP und MYSQL selber beibringe und ich auch schon durch einiges nachlasen etwas eineignen konnte konnte ich schon ein paar probleme selber beheben aber das oben gennat bekomme ich einfach nicht hin
Vielen dank für eure Hilfe
-
Hallo bastiekleve,
du könntest eine IF-Abfrage machen die prüft ob der Wert nun >= 200 ist. Wenn die Bedingung erfüllt ist machst du ein UPDATE in Level und Wert in entsprechender Tabelle.
Da es ja vermutlich mehrere Level werden wäre allerdings eine Switch-Case Abfrage besser.PHP-Code:if ($Punkte >= 200) {
$PunkteNeu=$Punkte;
$LevelNeu=1;
$sql =("UPDATE
Tabellenname
SET
Punkte='$PunkteNeu',
Level='$LevelNeu'
Where
Username='$Username'");
mysql_query($sql);
//echo $sql;
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
}
Ich hoffe das hilft dir weiter.
-
Um das level um eins zu erhöhen sollte der Query allerding so aussehen:
Außerdem sollte man sich lieber IDs anlegen, statt nach usernamen zu gehen.PHP-Code:$userid = 1;
$result = mysql_query("SELECT * FROM `points` WHERE `userid` = '".$userid."'");
$row = mysql_fetch_assoc($result);
if( $row['points'] > 200 ){
mysql_query("UPDATE `points` SET `level` = `level`+1 WHERE `userid` = '".$userid."'");
}
// bessere Möglichkeit
// wenn beispielsweise alle 200 Punkte ein Levelup erfolgen soll:
$level = floor($row['points']/200);
if( $level > $row['level'] )
mysql_query("UPDATE `points` SET `level` = '".$level."' WHERE `userid` = '".$userid."'");
-
Recht hast Timestamp , etwas eleganter gelöst

Im allgemeinen wird immer mit IDs umgangen. Ich persönlich nutze Usernamen da ichs gerne übersichtlich habe und alles soffort erkennen kann. Die Usernamen sind dann halt meine IDs. Habe jetzt noch nicht erkennen können ob das Nachteile bietet, ich hoffs aber mal nicht.
-
09.12.10 10:32 #5
- Registriert seit
- Dec 2010
- Beiträge
- 54
Hallo******
Danke euch vielmals aber ich bin anscheint zu blöd das hinzubekommen er macht es nicht
wo muss ich das denn einbauen?
Ich habe folgendes script
<?
include "include/session.php";
include "include/z_db.php";
$abfrage = "select * from plus_signup where userid='$_SESSION[userid]'";
/* Abfrage senden - bei Bedarf anpassen */
$result = mysql_query("select Level,punkte, name from plus_signup where userid='$_SESSION[userid]'")
or die ("Abfrage fehlgeschlagen ...<br><br>");
/* solange entsprechende Datensätze geliefert werden, diese nun auswerten */
while($row = mysql_fetch_array($result))
{
/* Entweder einer Variablen zuweisen */
$punkte = $row[0];
$Level = $row[1];
$name = $row[2];
/* augeben */
echo 'mein_test3_wert='.$row[2].'&';//Name
echo 'mein_test1_wert='.$row[0].'&';//punkte
echo 'mein_test2_wert='.$row[1];//level
}
mysql_free_result($result);
?>
ich weis auch nicht mehr weiter bitte helft mir
-
Bitte benutze [php] [/php] um deinen Code leserlicher zu gestalten.
Die while-Schleife ist überflüssig, da userids nur einmal vorkommen und du dementsprechend nur einen Datensatz zurückbekommst.
Nach dem Ausführen von mysql_fetch_array kannst du überprüfen, wie groß die Punkte sind (mittels switch/if) und je nach dem dann die entsprechenden Aktionen ausführen. Es ist übrigens einfacher mit assoziativen arrays als mit numerischen zu arbeiten
-
09.12.10 13:38 #7
- Registriert seit
- Dec 2010
- Beiträge
- 54
häää ich verstehe im moment nur bahnhof.
wo müsste ich das denn einbauen? ok die while schleife kann ich raus nehmen. Aber es löst nicht mein problem
gesetz dem fall ich mache das mal
PHP-Code:$abfrage = "select * from plus_signup where userid='$_SESSION[userid]'";
/* Abfrage senden - bei Bedarf anpassen */
$result = mysql_query("select Level,punkte, name from plus_signup where userid='$_SESSION[userid]'")
or die ("Abfrage fehlgeschlagen ...<br><br>");
$result = mysql_query("SELECT * FROM `points` WHERE `userid` = '".$userid."'");
$row = mysql_fetch_assoc($result);
if( $row['points'] > 200 ){
mysql_query("UPDATE `points` SET `level` = `level`+1 WHERE `userid` = '".$userid."'");
}
mysql_free_result($result);
meinst du das in etwa so?
-
So ist das schonmal nicht schlecht. Das Problem ist jetzt nur, sobald die Punktzahl größer als 200 ist, wird bei jedem Aufruf des Scriptes das level erhöht. Außerdem musst du den unteren Query noch an deine Tabelle anpassen
-
09.12.10 15:50 #9
- Registriert seit
- Dec 2010
- Beiträge
- 54
ok und wie kann ich das verhindern? denn ich will ja nicht das jedes mal ab 200 nach aufrufen des script das level erhöht wird
-
Das könntest du in etwa so machen:
Habs jetzt nicht getestet sollte aber funktionieren.PHP-Code:$abfrage = "select * from plus_signup where userid='$_SESSION[userid]'";
/* Abfrage senden - bei Bedarf anpassen */
$result = mysql_query("select Level,punkte, name from plus_signup where userid='$_SESSION[userid]'")
or die ("Abfrage fehlgeschlagen ...<br><br>");
$result = mysql_query("SELECT * FROM `points` WHERE `userid` = '".$userid."'");
$row = mysql_fetch_assoc($result);
$points = $row['points'];
$level = $row['level'];
switch ($points) {
case $points >= 200 && !($level >= 1):
$levelNeu=1;
break;
case $points >= 600 && !($level >= 2):
$levelNeu=2;
break;
case $points >= 1500 && !($level >= 3):
$levelNeu=3;
break;
default:
$levelNeu= $level;
break;
}
if ($levelNeu != $level) {
mysql_query("UPDATE `points` SET `level` = `$levelNeu` WHERE `userid` = '".$userid."'");
}
Geändert von Joe (09.12.10 um 17:50 Uhr) Grund: default ergänzt
-
Du könntest auch ein zweites Tabellenfeld anlegen, was du immer wieder resettest, musst du halt an dich anpassen:
Code :1 2 3 4
userid punkte punkte_gesamt level
Das Feld punkte_gesamt zählt dann logischer Weise die gesamtpunktzahl, während points nach jedem Levelaufstieg resetted wird. Soll für höhere Level eine größere Punktzahl benötigt werden, musst du Joe's Variante nehmen.PHP-Code:if( $row['points'] > 200 ){
mysql_query("UPDATE `points` SET `level` = `level`+1, `points` = 0 WHERE `userid` = '".$userid."'");
-
09.12.10 20:05 #12
- Registriert seit
- Dec 2010
- Beiträge
- 54
Vielen lieben dank an euch allen es hat endlich geklappt. ihr seit echt 1 a Ihr beiden muss ich mal sagen. Wenn es besser als note eins geben würde würde ich euch eine 1 mit mindestens 4 mal plus geben . danke danke ich hofe ich kann mich mal wieder melden wenn ich vor dem nächsten problem stehe.
Na eines würde mir da auf anhieb noch einfallen.
ist es sehr schwer so etwas zu bauen ?
wenn mitglieder sich waren kaufen via paypal das wenn die mit paypla gezahlt haben gleich die entsprechenden dinge gutgeschrieben werden?
-
Danke für das Lob, aber um die Kirche im Dorf zu lassen.. Timestamp ist mir was das programmieren allgemein angeht weit weit voraus. Er und viele andre hier haben mir hier schon öfter geholfen und das versuche ich ab und wann auch mal an andre weiter zu geben.
Wegen den Paypal das würde ich erstmal nach hinten verschieben und die ganzen andren Funktionen ausarbeiten. Soweit ich weiss bietet Paypal komplette Skripte an die man dann ins Projekt einbinden kann. Das nimmt dir aber nicht die Arbeit ab, was dann für das Geld erworben werden kann, zu programieren und überall, inklusive Balancing, ordentlich einzubinden. Da wird wohl ne ganze Menge mehr dranhängen.
kleines PS noch: Kannst wenn das Thema beendet ist ja unten den Haken anklicken. Ich finds irgendwie schöner
Wenn ab und wann mal nen Beitrag/Post hilfreich war kannst du den Danke Button klicken.Geändert von Joe (09.12.10 um 20:43 Uhr)
-
10.12.10 07:50 #14
- Registriert seit
- Dec 2010
- Beiträge
- 54
vielen lieben dank nochmal es funktioniert bestens. Soweit. eine frage noch ich habe angeben in der switch abfrage das ab punkte 25 ein neues level sein soll. Ok aber es macht er bei 26 ein neues level ist das normal soweit?
darf ich den fertig code posten das andere dann auch mal was haben?
-
10.12.10 09:09 #15
- Registriert seit
- Dec 2010
- Beiträge
- 54
jetzt habe ich schon das nächste problem
wie bekomme ich es hin das ein spiel stand gespeichert wird? so das wenn das mitglied sich wieder einloggt automatisch dort weiter machen kann?
Ich habe vor einen wachsenden tamagtoschi mittels flash und php zu erstellen das soll heißen das man am anfang nur beispielsweise den kopf hat und je höher man im levle ist dann soll wieder etwas dazu kommen
Ähnliche Themen
-
Wert wird automatisch erhöht
Von Erks im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 04.11.07, 18:13 -
Wert der sich automatisch erhöht..
Von frankenstein007 im Forum PHPAntworten: 15Letzter Beitrag: 25.06.07, 17:09 -
Wert wird um 2 statt um 1 erhöht
Von quidnovi im Forum PHPAntworten: 18Letzter Beitrag: 18.06.07, 12:36 -
wert erreicht
Von Workstyler im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 22.03.06, 13:08 -
Felder aublenden wenn bestimmter wert in der Tabelle ....
Von AoHNewBee im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 04.04.05, 13:08



22Danke

Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren