Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte aus Tabelle auslesen - Werte mit rand() multiplizieren - Werte eintragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Werte aus Tabelle auslesen - Werte mit rand() multiplizieren - Werte eintragen

    Hallo Forum
    ich habe ein kleines Problem bei einem "Ich rechne mit PHP und MySQL und peicher dann das ganze wieder" Code und hoffe das Ihr mich in die richtige Richtung stupsen könnt! Leider scheint diese Art von Abfrage nicht grade meine Stärke zu sein, oder ich denke einfach verkehrt. Aber nun zur Problembeschreibung:

    Ich habe eine Tabelle die wie folgt aufgebaut ist (habe nur die wesentlichen Teile die für die Berechnung benötigt werden gescreent):


    Mein Ziel ist es 'baseprice' auszulesen, diesen je mit einem rand() generierten Wert zu multiplizieren und anschließend als 'sellprice' bzw. 'buyprice' in der dazugehörigen Spalte der Tabelle wieder zu speichern. Das ganze soll dann später 1x Täglich als zeitgesteuerte Aufgabe ausgeführt werden.

    Nun habe ich, blauäugig wie ich bin, folgenden Code "niedergeschrieben":

    PHP-Code:
    $sql mysql_query("SELECT id, baseprice FROM rpg_market");
    while(
    $row mysql_fetch_array($sql)){
    $basep $row[baseprice];
    $id $row[id];

    $cmsell rand(80,100);
    $cmbuy rand(100,120);
    $sprice = ($bprice*$cmsell)/100;
    $bprice = ($price*$cmbuy)/100;

    $newprice mysql_query("UPDATE rpg_market SET sellprice=$sprice, buyprice=$bprice WHERE id=$id");

    echo 
    "$cmsell - $cmbuy - $basep - $sprice - $bprice <br>"
    Um zu Überprüfen ab wann die Berechnung scheitert habe ich das echo eingefügt. Das verrät mit das der baseprice korrekt ausgelesen wird, auch die 2 rand() werden korrekt für jeden gefundenen baseprice erstellt.

    90 - 107 - 14 - 0 - 0
    97 - 115 - 14 - 0 - 0
    87 - 101 - 53 - 0 - 0
    91 - 117 - 29 - 0 - 0
    84 - 115 - 58 - 0 - 0
    usw. usw.

    Hacken tut es bei mir jetzt aber das die Berechnungen sprice und bprice nicht ausgeführt werden. Davon das nichts in der Datenbank gespeichert wird will ich garnicht erst reden -.-.
    Ich hoffe jemand kann mich in die richtige Richtung stupsen wie ich das Problem gelöst bekomme?

    lieben Gruß

    p.s.: Ich gehe davon aus das der MySQL-PArt das Problem ist und denke mir mal das ich im richtigen Subforum gelandet bin


  • #2
    Zitat von nozdormu Beitrag anzeigen
    p.s.: Ich gehe davon aus das der MySQL-PArt das Problem ist und denke mir mal das ich im richtigen Subforum gelandet bin
    Das gesamte Konzept, die Werte in einer Schleife rauszupopeln und wieder reinzuschreiben, ist für die Tonne. Das kann die DB in einem Rutsch:

    Code:
    test=# select * from preise;
     id  | base | sell | buy
    -----+------+------+-----
     120 |   14 |      |
     121 |   16 |      |
     122 |   36 |      |
    (3 rows)
    
    test=*# update preise set sell = base * random(), buy = base * random();
    UPDATE 3
    test=*# select * from preise;
     id  | base | sell | buy
    -----+------+------+-----
     120 |   14 |   12 |   3
     121 |   16 |   14 |   6
     122 |   36 |   13 |  20
    (3 rows)
    Beachte, daß random() Werte zwischen 0 und 1 liefert.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Hey,

      SUPER klappt wunderbar Vielen lieben Dank für die Antwort!

      lieben Gruß

      p.S.: Ich mache es so, da ich ja "Prozentrechnen" will:
      PHP-Code:
      UPDATE rpg_market SET sellprice=FLOOR((70+(rand()*(95-70)))/100*baseprice), buyprice=FLOOR((100+(rand()*(130-100)))/100*baseprice); 

      Kommentar

      Lädt...
      X