Wert per php aus tabelle abfragen wenn wert erreicht soll spalte 2 um eines erhöht

Oh doch es ist gemein wie ein Mensch es schafft Dinge die für andere "unlösbar kompliziert" sind mal so nebenbei in ein paar Minuten zu lösen.

Wenn er nicht so gut wäre, müsste man ihn hassen ;)
 
Manno mann hatte ja keine Ahnung wieviel es an Befehlen allein für MySQL gibt.
Intuitiv scheint mir HeidiSQL nicht aber es scheint enormes Potential grad was das testen betrifft zu haben. Bis ich das nur ansatzweisse durchblicke wird wohl noch einige Zeit ins Land ziehen.
 
ich habe mal wieder eine frage. Wie bekomme ich es jetzt hin. das er beim erreichen einen werte hinzukommt. Beispiel. Habe das script so geschrieben das nach eine gwissen punkte zahl eben ein neues level kommt. Jetzt will ich das zusätzlich in einem anderen feld ein wert hinzukommt. eine währung habe das gleich scrip genommen alles kein problem beim erreichen des ersten level wird die neue wärung gut geschrieben. aber nach dem erreichen einen weitern level soll ja zu dem alten konto stand ein gewisser betrag hinzukommen und das macht er nicht er berechnet das nicht.
PHP:
/*Level*/
$abfrage = "select * from plus_signup where userid='$_SESSION[userid]'";

/* Abfrage senden - bei Bedarf anpassen */
$result = mysql_query("select * FROM plus_signup where userid='$_SESSION[userid]'")
  or die ("Abfrage fehlgeschlagen ...<br><br>");
$result = mysql_query("SELECT Level, punkte FROM plus_signup where userid='$_SESSION[userid]'"); 

$row = mysql_fetch_assoc($result); 
$punkte = $row[punkte];
$Level = $row[Level];

switch ($punkte) {
    case $punkte >= 15 && !($Level >= 1):
        $levelNeu=1;
        break;
    case $punkte >= 25 && !($Level >= 2):
        $levelNeu=2;
        break;
    case $punkte >= 67 && !($Level >= 3):
        $levelNeu=3;
        break;
    case $punkte >= 127 && !($Level >= 4):
        $levelNeu=4;
        break;
    case $punkte >= 240 && !($Level >= 5):
        $levelNeu=5;
        break;
    case $punkte >= 785 && !($Level >= 6):
        $levelNeu=6;
        break;
    case $punkte >= 962 && !($Level >= 7):
        $levelNeu=7;
        break;
    case $punkte >= 1919 && !($Level >= 8):
        $levelNeu=8;
        break;
    case $punkte >= 3689 && !($Level >= 9):
        $levelNeu=9;
        break;
 default:
        $levelNeu= $level;
        break;

}
if ($levelNeu != $Level) {
$aendern="UPDATE plus_signup SET Level = $levelNeu where userid='$_SESSION[userid]'";
}  
$update = mysql_query($aendern);
/*Puller*/
$abfrage = "select * from plus_signup where userid='$_SESSION[userid]'";

/* Abfrage senden - bei Bedarf anpassen */
$result = mysql_query("select * FROM plus_signup where userid='$_SESSION[userid]'")
  or die ("Abfrage fehlgeschlagen ...<br><br>");
$result = mysql_query("SELECT Level, Puller FROM plus_signup where userid='$_SESSION[userid]'"); 

$row = mysql_fetch_assoc($result); 
$Level = $row[Level];
$Puller = $row[Puller];

switch ($Level) {
    case $Level >= 1 && !($Puller >= 2500):
        $PullerNeu=2500;
        break;
    case $Level >= 4 && !($Puller >= 5000):
        $PullerlNeu=5000;
        break;

 default:
        $PullerlNeu= $Puller;
        break;

}
if ($PullerNeu != $Puller) {
$aendern = "UPDATE plus_signup SET Puller = $PullerNeu where userid='$_SESSION[userid]'";
} 
$update = mysql_query($aendern);

wie ihr seht bekommt man nach dem erreichen des ersten levels 2500 Puller nach ereichen des Level 4 soll zu dem alten puller stand eben 5000 hinzukommen dann hat man ja 7500 aber er rechnet mir das nicht wieso nicht?
 
Du musst schon irgendwo eine Rechenopperation machen damit auch gerechnet wird.
PHP:
$aendern = "UPDATE plus_signup SET Puller = Puller+$PullerNeu where userid='$_SESSION[userid]'";

Aber du kannst dir das 2.e Select und das 2.e Update sparen. Und wie ich Yaslaw kenne sogar fast den ganzen PHP-Code :)

Was ich sagen will ist wenn du beim ersten Select einfach das Feld "Puller" hinzunimmst kannst du in den enstprechenden Switch Case die "Puller"(kein andren Namen gefunden?) setzen und dann den Update Befehl entsprechend auch ergänzen.
 
Zuletzt bearbeitet:
Das ist ja alles nur erstmal eine grund idee das entsprechend so zu machen das es alles passt kann ich ja noch machen. daher nur Puller und Poller die werde noch geändert. Ich weiß das der code mit sicherheit etwas überlaufen ist und man vieles einfacher machen kann aber ich bin ja froh das er das endlich macht. bis auf das mit den Puller das macht er nicht wieso und warum weiß ich im moment noch nicht aber das bekomme ich schon raus
 
[durchgestrichen]Ich nehme an das dein Startgeld bei 0 ist aber die Switchabfrage fragt ab ob das Geld >= 2500 ist. Da das nicht der Fall ist wird auch kein Update gemacht.[/durchgestrichen]
Nee kann den Grund grad nicht erkennen die SwitchCase Abfrage war schon richtig so.

Immernoch etwas überladen aber spart immerhin ein paar Abfragen:
PHP:
/*Level*/
//$abfrage = "select * from plus_signup where userid='$_SESSION[userid]'";
/// Das kannst du eigentlich rausnehmen und einfügen wenn du es brauchst.

$result = mysql_query("select * FROM plus_signup where userid='$_SESSION[userid]'")
  or die ("Abfrage fehlgeschlagen ...<br><br>");
$result = mysql_query("SELECT Level, punkte FROM plus_signup where userid='$_SESSION[userid]'"); 

$row = mysql_fetch_assoc($result); 
$punkte = $row[punkte];
$Level = $row[Level];

$PullerNeu=0;
switch ($punkte) {
    case $punkte >= 15 && !($Level >= 1):
        $levelNeu=1;
		$PullerNeu=2500;
        break;
    case $punkte >= 25 && !($Level >= 2):
        $levelNeu=2;
        break;
    case $punkte >= 67 && !($Level >= 3):
        $levelNeu=3;
        break;
    case $punkte >= 127 && !($Level >= 4):
        $levelNeu=4;
		$PullerlNeu=5000;
        break;
    case $punkte >= 240 && !($Level >= 5):
        $levelNeu=5;
        break;
    case $punkte >= 785 && !($Level >= 6):
        $levelNeu=6;
        break;
    case $punkte >= 962 && !($Level >= 7):
        $levelNeu=7;
        break;
    case $punkte >= 1919 && !($Level >= 8):
        $levelNeu=8;
        break;
    case $punkte >= 3689 && !($Level >= 9):
        $levelNeu=9;
        break;
 default:
        $levelNeu= $level;
		$PullerNeu=0;
        break;

}
if ($levelNeu != $Level) {
$aendern="UPDATE plus_signup SET Level = $levelNeu, Puller=Puller+$PullerNeu  where userid='$_SESSION[userid]'";
$update = mysql_query($aendern);
}
 
Zuletzt bearbeitet:
Hey vielen lieben dank auch echt ihr seit der hammer hut ab an euch . zumal das ihr das sooo schnelll gelöst habt. Ich bastel mir einen kragen und stunden brauche ich dafür und ihr macht das mal sooo eben nebenbei. echt cool. Aber solangsam versthe ich auch und blicke auch dahinter. Und das ist es ja was man erreichen will lernen lernen lernen.
 
Hallo ich bins nochmal ich denke das ist mein letztes problem dann auch erstmal:lach

wie kann ich verhindern das ein wert unter null geht

bespielsweise die pullern ich habe 5 pullern und willl 6 ausgeben
im moment schreibt er mir dann in der datenabnk ein -1 und genau das will ich ja nicht.

ich will das er mir dann ausgibt " sie könn sich das nicht leisten" oder so

die berechnung findet in einer extra datei statt. alles andere klappt ja.

ich frage die pullern normal ab kein problem ich hoffe ihr versteht was ich meine
 
Zurück