Rückgabewert aus DB

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

  • Rückgabewert aus DB

    Hi

    habe ein kleines Problem


    ein User kann etwas in die DB eintragen lassen (dort ist es gespeichert und er hat es nichtmehr) aber wenn er den eintrag zurückruft, kann er auch einen höheren wert als in der DB steht zurück bekommen..

    wie verhindere ich das?


    falls jemand den source benötigt:





    PHP-Code:
    $filename="back.php";

    require(
    "./global.php");

    if(!isset(
    $_SESSION['userid'])) error_page("Bitte logge dich ein!");

    if (!
    $aktion){
    echo 
    "Sie müssen den Befehl zum Rückzug bestätigen!<br>";
    }
    elseif (!
    $aid || !$menge || $menge <= 0){
    echo 
    "Sie haben notwendige Angaben vergessen!<br>";
    }else{

    $abfrage "SELECT * FROM cc".$n."_mercs WHERE angebotsid = '$aid'";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);
    $maxman $row->anzahl;
    $seller $row->username;
    $einpreis $row->preis;
    $typus $row->typ;
    $typusid $row->typid;
    $lid $row->islandid;
    $uid $row->userid;
    $angid $row->angebotsid;

        if (!
    $angid){
        echo 
    "Die ID ist nicht vorhanden!<br>";
        }elseif (
    $uid != $userdata['userid']){
        echo 
    "Die Söldner gehören nicht Ihnen!<br>";
        }else{

            if (
    $typusid == 1){       //Einheiten 1
            
    $db->query("UPDATE cc".$n."_countries SET  sf = sf + $menge WHERE islandid = $lid");
            }elseif (
    $typusid == 2){ //Einheiten 2
            
    $db->query("UPDATE cc".$n."_countries SET  lsf = lsf + $menge WHERE islandid = $lid");
            }elseif (
    $typusid == 3){ //Einheiten 3
            
    $db->query("UPDATE cc".$n."_countries SET  ms = ms + $menge WHERE islandid = $lid");
            }elseif (
    $typusid == 4){ //Einheiten 4
            
    $db->query("UPDATE cc".$n."_countries SET  bk = bk + $menge WHERE islandid = $lid");
            }
            
    $db->query("UPDATE cc".$n."_mercs SET  anzahl = anzahl - $menge WHERE islandid = $lid");
            
    //Es wird gepfrüft, ob das Angebot gelöscht wird
            
    $lager "SELECT anzahl FROM cc".$n."_mercs WHERE angebotsid = '$angid'";
            
    $lager1 mysql_query($lager);
            
    $row mysql_fetch_object($lager1);
            
    $sol_anz $row->anzahl;
            if (
    $sol_anz == 0){
            
    $loeschen"DELETE FROM cc".$n."_mercs WHERE angebotsid = $angid";
            
    $loesch mysql_query($loeschen);
            
    $gsmt $einpreis $anzahl;
            
    $message "Sie haben $anzahl Eiheiten $typus vom Söldnermarkt ...";
            
    $subject "Söldnermarkt";
            
    $db->query("INSERT INTO cc1_messages
    (username,fromuserid,touserid,text,time,isnew,inbox,subject,pri) 
    VALUES ('Söldnermarkt','0','"
    .$uid."','".$message."','".time
    ()."','1','1','".$subject."','3')"); 
            
    $db->unbuffered_query("UPDATE cc1_users SET newpm='1' WHERE userid = '$uid'"); 
    Zuletzt geändert von woppa; 17.10.2006, 19:56.

  • #2
    1. Code umbrechen (Schreibe ich mal, die anderen sind es wohl schon müde ...)
    aber wenn er den eintrag zurückruft
    was meinst du damit:
    [ ] abrufen, auslesen aus DB (SELECT)
    [ ] widerrufen (DELETE)
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

    Kommentar


    • #3
      bei SELECT muss der Fehler liegen

      er löscht sobald sie 0 sind, aber man kann eine größere zahl zurückrufen, als in der DB steht..

      also müsste ich irgendwo noch ne abfrage einbauen das die anzahl der eingegebenen einheiten nicht größer sein darf, als die, die inder DB steht..

      oder besser wäre: man kann nicht mehr zurück rufen. also er ruft automatisch so viele wie in der DB stehen zurück, wenn die zahl größer ist, als die die in der DB steht..
      versteht ihr was ich meine?

      mfg

      Kommentar


      • #4
        Brich mal den Code um!

        Kommentar


        • #5
          besser so?

          mfg

          Kommentar


          • #6
            Dann definiere mal "zurückrufen". Das tu ich sonst nur, wenn ich nen Anruf verpasst habe.

            Kommentar


            • #7
              kk

              also: man trägt gewisse einheiten in die DB ein, auf die hat man selber keinen zugriff mehr. Dann kann man sie zurückholen. Dh, sie werden aus dieser DB ausgetragen und man hat wider Zugriff auf die Einheiten, und sie stehen nichtmehr in dieser DB.

              Dann das Problem nochmal: wenn cih 1 Einheit eintrage, sollte ich nur 1 Einheit zurückholen können. Wenn ich aber 1000 im "zurückholen-Feld" eingebe, kommen 1000 Einheiten zurück.

              Meine Frage:

              Wie verhindere ich das?


              Scher zu beschreiben, aber ich hoffe ihr versteht es

              mfg

              Kommentar


              • #8
                In dem du auf der seite (die die daten zurückholt) ne abfrage machst, wie viele einheiten vorhanden sind.

                if $vorhandene einheiten < 1000
                "geht nicht! du kannst maximal $vorhandene einheiten zurückholen."

                Kommentar


                • #9
                  Original geschrieben von TobiaZ
                  In dem du auf der seite (die die daten zurückholt) ne abfrage machst, wie viele einheiten vorhanden sind.

                  if $vorhandene einheiten < 1000
                  "geht nicht! du kannst maximal $vorhandene einheiten zurückholen."
                  oder so (repost)

                  PHP-Code:
                  }elseif ($uid != $userdata['userid']){
                      echo 
                  "Die Söldner gehören nicht Ihnen!<br>";
                    } elseif (
                  $menge>$maxman) {
                     echo 
                  "Sie haben nicht soviel Söldner ausgeliehen!<br>"
                  und dann noch:
                  PHP-Code:
                  $db->query("UPDATE cc".$n."_mercs SET  anzahl = anzahl - $menge WHERE angebotsid = '$aid'"); 

                  That's all folks and non-folks!

                  Kommentar

                  Lädt...
                  X