MySQL / Datenbank Problem beim Speichern

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
  • Auch ich melde mich in der Scripting Base wieder :D

    Knapp 1 Jahr nichts mit MySQL gemacht, war dabei alles mögliche mit MySQL zu verbinden und stoße schon recht am Anfang auf ein Problem:



    Ich rufe den Stock auf und gebe den Wert 5 mit als bizid.

    Folgendes Problem: bizid hat auch den Wert 5, allerdings speichert er mir das in die Zeile darunter. (bizid6) Versucht bizid -1 zu speichern allerdings bringt das die Werte durcheinander.

    C
    stock BizSpeichern(bizid)
    {
        new query[512];
        printf("ID:%d, bizid: %d",bInfo[bizid][db_bid], bizid);
        mysql_format(handle,query,sizeof(query),"UPDATE `biz` Set `bizkasse`='%d' WHERE `ID`='%i'",
        bInfo[bizid][bbizkasse],bInfo[bizid][db_bid]);
        mysql_pquery(handle,query);
        return 1;
    }

    Er printet: "ID:6, bizid: 5"

    In der Datenbank sieht es so aus: https://prnt.sc/qqvp5l Primary Key und Auto Increment ist in der Spalte aktiviert.


    Code
    forward BizLaden();
    public BizLaden()
    {
    new rows;
    cache_get_row_count(rows);
    for(new bizid = 0; bizid < sizeof(bInfo); bizid++)
    {
    cache_get_value_name_int(bizid,"ID",bInfo[bizid][db_bid]);
    if(bInfo[bizid][db_bid]==0)continue;
    cache_get_value_name_int(bizid,//.......

    Das passiert beim Laden und er lädt auch das richtige. Also bei der wirklichen ID5, wie sie in der Datenbank steht die wirklichen und richtigen Werte.

    Warum kriege ich es nicht in die richtige Zeile, besser gesagt warum ist die Spaltenid jetzt anders beim Speichern... hoffe jemand hat eine Idee

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Beitrag von N0SKILL ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Lol, was laber ich ().
  • N0SKILL richtig, ich mein ich kann ja die id -1 rechnen aber dann speichert er alle Werte aus der Zeile 6 in Zeile 5, bringt es ja auch nicht.

    Meine Vermutung ist, weil die ID in meiner Datenbank mit 1 anfängt und nicht 0, aber ich will das so lassen

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Naja, Arrays starten bei 0, das lässt sich nicht so einfach umgehen. Wenn du also die Datenbank nicht ändern willst und sagst, dass die Daten von Zeile 5 der db_bid 6 zugewiesen sind, wäre das hier das einfachste:


    Code
    bInfo[bizid][db_bid]-1

    Das sollte so dann funktionieren.


    Ich würde den Fehler allerdings schon beim Laden ausmerzen, also die ID schon beim Laden -1 setzen... Denn wenn du beim Laden mal printest, wird dir auffallen, dass der Versatz schon da auftritt

  • So wie du es geschrieben hast, kann man das leider in PAWN nicht machen, ich habe es mal so gemacht.

    Jetzt speichert er mir den Wert schön und gut. Allerdings kopiert er bevor er das erste mal speichert die bizkasse aus der bizid6. in die bizid5. über.


    Heißt: Problem ist nicht richtig gelöst, irgendwas stimmt nicht richtig.

    Beim Laden ist ja alles richtig wie erwähnt. Dort habe ich auch if(bInfo[bizid][db_bid]==0)continue; aufgerufen.

    C
    stock BizSpeichern(bizid)
    {
        new query[512];
        new db = bInfo[bizid][db_bid] - 1;
        printf("ID:%d, bizid: %d",bInfo[bizid][db_bid], bizid);
        mysql_format(handle,query,sizeof(query),"UPDATE `biz` Set `bizkasse`='%d' WHERE `ID`='%i'",
        bInfo[bizid][bbizkasse],db);
        mysql_pquery(handle,query);
        return 1;
    }

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Beitrag von N0SKILL ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Fuck pawn, ich komme offensichtlich nicht mejr mit der Sprache klar xD ().
  • Ich glaube du verdrehst da was, habe es trotzdem ausprobiert klappt nicht. Er nimmt sich halt die geladen Bizkasse aus der 6. Zeile und überschreibt sie auf der 5. Zeile.

    Das verwirrt so, aber nur das speichern ist so komisch wie gesagt, MySQL blick ich nichts mehr durch haha

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Scheiß drauf, hat sich erledigt wir haben einfach ein neues System geschrieben und gut ist.

    War halt das erste was ich überhaupt gescriptet hatte damals und deswegen blick ich bei der Sache auch selber nicht so durch.


    Danke dir trotzdem :)

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.