Rohstoff Skript

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Rohstoff Skript

    Hallo.

    Ich versuche gerade, ein Rohstoffskript zu erstellen. Hab mir den Quelltext größtenteils vom Internet abgeschaut, nur da funktioniert was nicht.

    Quellcode

    1. <?php
    2. mysql_connect("localhost", "rezensionen", "**");
    3. mysql_select_db("rezensionen");
    4. $sql = "SELECT ID
    5. holz_wert, holz_rate,
    6. stein_wert, stein_rate,
    7. eisen_wert, eisen_rate
    8. FROM user";
    9. {
    10. $stahl_neu = $row['stahl_wert'] + $row['stahl_rate'];
    11. $kristall_neu = $row['kristall_wert'] + $row['kristall_rate'];
    12. $quecksilber_neu = $row['quecksilber_wert'] + $row['quecksilber_rate'];
    13. $sql = "UPDATE user
    14. SET stahl_wert = ".$stahl_neu."
    15. kristall_wert = ".$kristall_neu."
    16. quecksilber_wert = ".$quecksilber_neu."
    17. WHERE ID=$_SESSION['ID'];
    18. }
    19. ?>
    Alles anzeigen


    Irgendwo/-wie müsste da
    $row=mysql_fetch_array($sql);
    rein, hab ich mir sagen lassen.

    Könnte mir da jemand mit dem Wo und Wie behilflich sein? Und mir eventuell sagen, ob der restliche Code stimmt?

    Danke im Vorraus

    Waldi
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Ist das jetzt alles oder ist das wirklich nur zusammenkopiert?
    Da ist ja kein einziger datenbankbefehl drinne

    btw: Gewöhn dir doch das Syntax-Highlighting an.

    Quellcode

    1. <?php
    2. mysql_connect("localhost", "rezensionen", "**");
    3. mysql_select_db("rezensionen");
    4. $sql = "SELECT `ID`,
    5. `holz_wert`, `holz_rate`,
    6. `stein_wert`, `stein_rate`,
    7. `eisen_wert`, `eisen_rate`
    8. FROM `user`; ";
    9. //Führe den SQL Befehl aus
    10. $res = mysql_query($sql)or die('Fehler bei: '.$sql);
    11. //Iteriere durch die Tabelle
    12. while($row=mysql_fetch_array($res))
    13. {
    14. $stahl_neu = $row['stahl_wert'] + $row['stahl_rate'];
    15. $kristall_neu = $row['kristall_wert'] + $row['kristall_rate'];
    16. $quecksilber_neu = $row['quecksilber_wert'] + $row['quecksilber_rate'];
    17. $query = "UPDATE `user`
    18. SET `stahl_wert` = ".$stahl_neu.",
    19. `kristall_wert` = ".$kristall_neu.",
    20. `quecksilber_wert` = ".$quecksilber_neu."
    21. WHERE `ID`=".$_SESSION['ID'];
    22. //Führe den SQL Befehl aus
    23. mysql_query($query)or die('Fehler bei: '.$query);
    24. }
    25. ?>
    Alles anzeigen
  • OK, mach ich. Danke, gell ;)
    Du bist mir wirklich eine große Hilfe.

    Den Code werd ich mir jetzt mal ansehen, danke...

    Edit:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/***.php on line 23

    Das ist folgende Zeile:
    while($row=mysql_fetch_array($res));

    Habe übrigens das ";" ergänzt... ;)
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • das semikolon ist leider falsch :P
    das ist nur die schleifenbedingung

    Line23: Ist das der erste oder 2te SQL Aufruf?

    Wenn das dein komplettes Script ist, dann musst hast du keine SESSION gestartet - dann kann der 2te Request nicht funktionierren.
    Ich nehme an, dass muss statt SESSION['ID'] auch $row['ID'] heißen.

    Beim ersten hast du ein Komma vergessen
    SELECT ID, holz_wert, ...

    hab mein code aktualisiert
  • Mein gesamtes Skript:

    Quellcode

    1. <?php
    2. session_start();
    3. ?>
    4. <center><font size="5" color="red">Willkommen im geheimen Bereich</font></size>
    5. <br />
    6. <br /><br />
    7. <br />
    8. <?php
    9. mysql_connect("localhost", "rezensionen", "**");
    10. mysql_select_db("rezensionen");
    11. $sql = "SELECT ID,
    12. holz_wert, holz_rate,
    13. stein_wert, stein_rate,
    14. eisen_wert, eisen_rate
    15. FROM user";
    16. //Führe den SQL Befehl aus
    17. $res = mysql_query($sql);
    18. //Iteriere durch die Tabelle
    19. while($row=mysql_fetch_array($res))
    20. {
    21. $stahl_neu = $row['stahl_wert'] + $row['stahl_rate'];
    22. $kristall_neu = $row['kristall_wert'] + $row['kristall_rate'];
    23. $quecksilber_neu = $row['quecksilber_wert'] + $row['quecksilber_rate'];
    24. $sql = "UPDATE user
    25. SET stahl_wert = ".$stahl_neu."
    26. kristall_wert = ".$kristall_neu."
    27. quecksilber_wert = ".$quecksilber_neu."
    28. WHERE ID=".$_SESSION['ID'];
    29. //Führe den SQL Befehl aus
    30. mysql_query($sql);
    31. }
    32. ?>
    33. <center><u><font size="6">Ihre Rohstoffe</font></u></center>
    34. <br /><br /><br />
    35. <b>Stahl: </b>
    36. <?php
    37. echo "$stahl_neu";
    38. ?>
    39. <br /><br />
    40. <b>Kristall: </b>
    41. <?php
    42. echo "$kristall_neu";
    43. ?>
    44. <br /><br />
    45. <b>Quecksilber: </b>
    46. <?php
    47. echo "$quecksilber_neu";
    48. ?>
    49. <br /><br /><br /><br />
    50. Wenn sie sich wieder ausloggen wollen, dann klicken sie auf "Ausloggen"!
    51. <br />
    52. <br />
    53. <a href="logout.php">Ausloggen</a>
    Alles anzeigen


    Wenn ich das ";" in Reihe 23 wieder weg nehme, zeigt er mir überhaupt kein keine Zahlen an, mit dem zeigt er wenigstens Nullen an. Jetzt hab ich auch das "," SELECT ID ergänzt...
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Bei SELECT ID heißt das "ID" die ID-Nummer, unter der der User registriert ist, oder?

    DEr eizige Fehler, den ich gefunden habe, ist, dass ich statt "User" "Username" schreiben muss, da meine Personen unter "Username" gespeicht sind. Das war eh richtig, oder?
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • Tja, da haben wir den Fehler. Die Tabelle heißt "testbg"...

    FROM gibt den Tabellenname an?

    Edit: Habe "user" in "testbg" geändert. Jetzt kommt:


    Fehler bei: UPDATE testbg SET stahl_wert = 0 kristall_wert = 0 quecksilber_wert = 0 WHERE ID=


    :S:S:S :lol:
    Nach langer Zeit wieder ein bisschen als Programmierer tätig
  • http://dev.mysql.com/doc/refman/5.1/de/select.html

    SQL-Abfrage

    1. SELECT
    2. [ALL | DISTINCT | DISTINCTROW ]
    3. [HIGH_PRIORITY]
    4. [STRAIGHT_JOIN]
    5. [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    6. [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    7. select_expr, ...
    8. [FROM table_references
    9. [WHERE where_condition]
    10. [GROUP BY {col_name | expr | position}
    11. [ASC | DESC], ... [WITH ROLLUP]]
    12. [HAVING where_condition]
    13. [ORDER BY {col_name | expr | position}
    14. [ASC | DESC], ...]
    15. [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    16. [PROCEDURE procedure_name(argument_list)]
    17. [INTO OUTFILE 'file_name' export_options
    18. | INTO DUMPFILE 'file_name']
    19. [FOR UPDATE | LOCK IN SHARE MODE]]
    Alles anzeigen
  • "Waldi" schrieb:

    Tja, da haben wir den Fehler. Die Tabelle heißt "testbg"...

    FROM gibt den Tabellenname an?

    Edit: Habe "user" in "testbg" geändert. Jetzt kommt:


    Fehler bei: UPDATE testbg SET stahl_wert = 0 kristall_wert = 0 quecksilber_wert = 0 WHERE ID=


    :S:S:S :lol:



    Wenn du den update Befehl da wirklich so stehen hast wie hier kanns auch nicht klappen.

    UPDATE testbg SET stahl_wert=0, kristall_wert=0, quecksilber_wert=0 WHERE ID = 1 (oder irgendeine variable)
  • hallo erstmal,

    ich weiss zwar nicht ganz wie du dir das mit den Rohstoffen gedacht hattest aber ich programmiere selber ein Browser Game und versteh dein script nicht so ganz.
    wenn du eine echtzeitproduktion herstellen willst und kein javascript verwenden möchtest funktioniert das bei mir zumindestens so:
    ich speichere den zeitpunkt des letzten updates in der db ab sowie die aktuelle anzahl des betroffenen rohstoffes und eben die stufe des gebäudes was den entsprechenden rohstoff produkziert. danach berechne ich die differenz der zeit des letzten zugriffs und des aktuellen und daraus schließlich die neu hinzugekommene rohstoffanzahl.


    $produktion=$rohstofflevel*$lastupdate/(60*60);


    dann addiere ich die produktion mit dem alten rohstoffwert und speichere ihn wieder in der datenbank.
    so viel zur echtzeitaktualisierung.
    evtl. meintest du mit deinem thema auch etwas ganz anderes.

    LG
  • Wie kann man das Datum des letzten Updates speichern?

    Edit: Jetzt mal so gefragt:
    Ich will, dass man Rohstoffe in Echtzeit kriegt (ohne JAVA). Wie speichere ich die letzte Updatezeit und kann ich die ganz normal in die Formel einbauen (z.B.: $stahl-aktuell = $row['stahl_vorhanden'] + $row['stahl_plus'] + "Updatezeit-Code";)?

    Grüße
    Nach langer Zeit wieder ein bisschen als Programmierer tätig