tutorials.de Buch-Aktion 05/2012
Seite 1 von 5 1234 ... LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
64
ZUGRIFFE
1770
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bastiekleve bastiekleve ist offline Mitglied Silber
    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
     

  2. #2
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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.

    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";
        }

    Da es ja vermutlich mehrere Level werden wäre allerdings eine Switch-Case Abfrage besser.

    Ich hoffe das hilft dir weiter.
     

  3. #3
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    Um das level um eins zu erhöhen sollte der Query allerding so aussehen:
    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."'"); 
    Außerdem sollte man sich lieber IDs anlegen, statt nach usernamen zu gehen.
     

  4. #4
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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.
     

  5. #5
    bastiekleve bastiekleve ist offline Mitglied Silber
    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
     

  6. #6
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    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
     

  7. #7
    bastiekleve bastiekleve ist offline Mitglied Silber
    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?
     

  8. #8
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    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
     

  9. #9
    bastiekleve bastiekleve ist offline Mitglied Silber
    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
     

  10. #10
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Das könntest du in etwa so machen:

    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."'");

    Habs jetzt nicht getestet sollte aber funktionieren.
    Geändert von Joe (09.12.10 um 17:50 Uhr) Grund: default ergänzt
     

  11. #11
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    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

    PHP-Code:
    if( $row['points'] > 200 ){
      
    mysql_query("UPDATE `points` SET `level` = `level`+1, `points` = 0 WHERE `userid` = '".$userid."'"); 
    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.
    bastiekleve bedankt sich. 

  12. #12
    bastiekleve bastiekleve ist offline Mitglied Silber
    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?
     

  13. #13
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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)
    bastiekleve bedankt sich. 

  14. #14
    bastiekleve bastiekleve ist offline Mitglied Silber
    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?
     

  15. #15
    bastiekleve bastiekleve ist offline Mitglied Silber
    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

  1. Wert wird automatisch erhöht
    Von Erks im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 04.11.07, 18:13
  2. Wert der sich automatisch erhöht..
    Von frankenstein007 im Forum PHP
    Antworten: 15
    Letzter Beitrag: 25.06.07, 17:09
  3. Wert wird um 2 statt um 1 erhöht
    Von quidnovi im Forum PHP
    Antworten: 18
    Letzter Beitrag: 18.06.07, 12:36
  4. wert erreicht
    Von Workstyler im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 22.03.06, 13:08
  5. Felder aublenden wenn bestimmter wert in der Tabelle ....
    Von AoHNewBee im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 04.04.05, 13:08