Bevor ich so weiter mache... ist das richtig? (mysql)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • mysql_query("UPDATE Accounts SET Geld = 'Spieler[playerid][pGeld]' WHERE Name = 'Spieler[playerid][pName]'");


    ist das richtig und verstehe ich das auch richtig?


    also das der Wert "Geld" in der Tabelle "Accounts" in den Wert von "Spieler[playerid][pGeld]" umgeändert wird.

    Mit freundlichen Grüßen

    #define



  • Du musst format verwenden..
    sonst wird dir unter Geld der Text "Spieler[playerid][pGeld]" reingeschrieben.
    PAWN lest die Variablen nicht von alleine aus ;)


    Befasse dich mal mit den Grundlegenden Dingen von PAWN..


    @Sh12
    man kann auch UPDATE verwenden um einer bestehenden Zeile einen neuen Wert zu geben...
    Sonst würde er wie bei dir eine neue Zeile anfangen...

  • ob ich jetzt die Spielerabfrage in nen string oder so mach ist doch egal, oder?
    Oder täusche ich mich da.


    Nein ist es nicht^^
    PAWN sieht Spieler[playerid][pGeld] innerhalb von zwei Anführungszeichen als normale Zeichenfolge an..
    Du musst mit format arbeiten wie es Sh12 bereits gemacht hat...


    @Sh12
    Nur musst du noch ne WHERE abfrage reinmachen sonst weis er nicht in welche Zeile er den Wert speichern soll..

  • new query[128];
    format(query, sizeof(query), "UPDATE Accounts SET Geld = '%i' WHERE Name = '%i'",GetPlayerMoney(playerid),Spieler[playerid][pName]);
    mysql_query(query);


    So habe ich es jetzt.


    Und ich kann doch jetzt auch so machen, oder?:


    new query[128];
    format(query, sizeof(query), "UPDATE Accounts SET Geld = '%i' WHERE Name = '%i'",GetPlayerMoney(playerid),Spieler[playerid][pName]);
    format(query, sizeof(query), "UPDATE Accounts SET Score = '%i' WHERE Name = '%i'",GetPlayerScore(playerid),Spieler[playerid][pName]);
    mysql_query(query);


    oder muss ich unter jedem format new query2[128]; mysql_query(query2); machen.
    Ich denke ihr wisst was ich meine.-

    Mit freundlichen Grüßen

    #define



  • new query[128];
    format(query, sizeof(query), "UPDATE Accounts SET `Geld` = '%i' WHERE `Name` = '%i'",GetPlayerMoney(playerid),Spieler[playerid][pName]);
    format(query, sizeof(query), "UPDATE Accounts SET `Score` = '%i' WHERE `Name` = '%i'",GetPlayerScore(playerid),Spieler[playerid][pName]);
    mysql_query(query);


    //Edit


    Danke Opa_Schlumpf
    wieder mal was neues gelernt :>

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dadurch du jede Variable einzeln speichern willst wäre hier ein stock das bequemste...


    Kleine Logik auffrischung:
    Jedes mal wenn du den Befehl "format" auf einen String ausführst wird dieser überschrieben..
    Das heißt bei dir wird dann nur "format(query, sizeof(query), "UPDATE Accounts SET Score = '%i' WHERE Name = '%i'",GetPlayerScore(playerid),Spieler[playerid][pName]);"
    ausgeführt..
    Mach einen Stock (Funktion) wo du die wichtigsten Informationen reingibst..


    Ich kann sie dir auch schicken aber dann lernst nix^^

  • Aller Anfang ist schwer überhaupt MySQL...


    ja....



    Ähm, meinst du das so?


    stock SpielerSpeichern(playerid)
    {
    new query[128];
    format(query, sizeof(query), "UPDATE Accounts SET `Geld` = '%i' WHERE `Name` = '%i'",GetPlayerMoney(playerid),Spieler[playerid][pName]);
    format(query, sizeof(query), "UPDATE Accounts SET `Score` = '%i' WHERE `Name` = '%i'",GetPlayerScore(playerid),Spieler[playerid][pName]);
    mysql_query(query);
    }

    Mit freundlichen Grüßen

    #define



  • Also..


    Wenn du gelesen oder bemerkt hast überschreibt den Inhalt des Stringes wenn was drinnen ist..
    Dieses Problem hast noch immer.


    Daher musst immer die Daten auslesen per mysql_query und verwerten.
    Wennst jetzt aber immer
    format
    mysql_query
    auslesungs_funktionen
    untereinander machst wird der Code unnötig lang..
    Deswegen mach einen stock den du mit den Informationen fütterst die du brauchst wie:
    Datenbankname,Was du wo speichern willst,unter welchen Bedingungen..


    Dann machst einfach einen stock wie SaveData(parameter)
    und übergibst ihn die Daten die du in den Query einsetzten willst.
    erst in diesen stock machst du das format und mysql_query..
    so kann ganz schnell weitere sachen speichern lassen..


  • Geht das echt?


    Ich würde eher sagen...
    new query[128];
    format(query, sizeof(query), "UPDATE Accounts SET `Geld` = '%i' WHERE `Name` = '%i'",GetPlayerMoney(playerid),Spieler[playerid][pName]);
    mysql_query(query);
    format(query,sizeof(query), "UPDATE Accounts SET `Score` = '%i' WHERE `Name` = '%i'",GetPlayerScore(playerid),Spieler[playerid][pName]);
    mysql_query(query);

    Miete mich (nicht) :love:

  • NEIN! WENN schon so, dann SO:


    stock SpielerSpeichern(playerid)
    {
    new query[256];
    format(query, sizeof(query), "UPDATE Accounts SET `Geld` = '%i' WHERE `Name` = '%i'",GetPlayerMoney(playerid),Spieler[playerid][pName]);
    mysql_query(query);
    format(query,
    sizeof(query), "UPDATE Accounts SET `Score` = '%i' WHERE `Name` = '%i'",GetPlayerScore(playerid),Spieler[playerid][pName]);
    mysql_query(query);
    }


    (256 mache ich immer zur Sicherheit, sonst wird nichts reingeschrieben und beim Spieler steht immer -1 ^^)



  • Ich verstehe nicht wie du das meinst.....

    Mit freundlichen Grüßen

    #define



  • *Vorkau*


    Ok für Anfänger wirklich nicht leicht..


    Hier die Auflösung:
    stock MySQLSaveData(database[],objekt[],objektdata[],bedingung[],bedingung2[])
    {
    new query[128];
    format(query,sizeof(query),"UPDATE %s SET `%s`='%s' WHERE `%s`='%s'",database,objekt,objektdata,bedingung,bedingung2);
    mysql_query(query);
    mysql_free_result();
    return 1;
    }
    Die Funktionen an dein Plugin anpassen!


    Ich hoffe du weist jetzt was ich meine..
    jetzt einfach die Funktion mit den Parametern aufrufen und es funkt..