---
title: "Spara funktion(med exit;) i databasen?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/129855-spara-funktion-med-exit-i-databasen"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Pike"
published: "2005-06-12T11:31:57.000Z"
updated: "2005-06-12T15:39:57.000Z"
replies: 14
views: 377
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/129855-spara-funktion-med-exit-i-databasen"
---

# Spara funktion(med exit;) i databasen?

## #1 — Pike, 2005-06-12T11:31Z

Hejsan!
jag håller på med ett OnlineRPG som är byggt i PHP och MySQL. när man spelar en match mot ett monster, ennan spelare eller skogsslag så ska hela match rapporten som kommer upp sparas i databasen.

Det jag tror skulle fungera är att lägga hela matchen i en function, men när någon krigare vinner så har jag
exit;
för att den inte ska fortsätta matchen efteråt... men då kan jag inte ha så att den sparar ela rapporten i databasen....
någon som har något förslag/tips till detta?

Tack på förhand  ;)

Permalänk: https://www.webforum.nu/p/129855

## #2 — spango, 2005-06-12T11:55Z

Så använd inte exit. Det är omöjligt att svara på vad du ska ha istället utan att veta hur koden ser ut, men antagligen blir det ett villkor i en if-sats eller i en loop.

Permalänk: https://www.webforum.nu/p/1629676

## #3 — Pike, 2005-06-12T12:07Z

hmm... utan exit? då kommer mathen att bli jätte lång!

såhär har jag testat:

```php
function foo($userid,$m){

$resultu1=mysql_query("SELECT * FROM multopia_users WHERE id='$userid'");
$user1=mysql_fetch_array($resultu1);
$user1_hp = $user1['hp'];
$user1_hpmax = $user1['hp_max'];
$user1_vapenid = $user1['vapenid'];
$user1_smidighet = $user1['smidighet'];
$user1_rustningid = $user1['rustningid'];
$user1n = $user1['username'];
if(empty($user1['vapenid'])){
    $user1_vapenn = "knytnäve";
    $user1_vapens = rand(0, 2);
}

$resultu2=mysql_query("SELECT * FROM multopia_monster WHERE id='$m'");
$user2=mysql_fetch_array($resultu2);
$user2_hp = $user2['hp'];
$user2_smidighet = $user2['smidighet'];
$user2n = $user2['namn'];
$user2_vapens = $user2['vapen_skada'];
$user2_vapenn = $user2['vapen'];
$user2_xp = $user2['xp'];
$user2p = $user2['pengar'];

if($user1['level'] <= $user2['level']){

$user1_minhp = ($user1_hp/$user1_hpmax*100);
if($user1_minhp < "30"){
    echo "Din krigare är för skadad för att kunna slås.";
    exit;
}
$siffra1 = "9";
$siffra2 = "0";
$siffra3 = "0";
while ($loop_skadebonus++ < 100){
    if($user1['styrka'] <= "$siffra1" AND $user1['styrka'] >= "$siffra2"){
        $skadebonus = "$siffra3";
    }
    $siffra1 = ($siffra1+10);
    $siffra2 = ($siffra2+10);
    $siffra3 = ($siffra3+1);

}

echo "<u>".$user1['username']." mot ".$user2['namn']."</u>";
echo "<br>";

echo "<table width='100' border='0' cellpadding='0' cellspacing='10'>";
echo "<tr>";
echo "<td><table width='200' border='0' cellspacing='0' cellpadding='0'>";
echo "<tr>";
echo "<td colspan='2'><b>".$user1['level']." | ".$user1['username']."</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src='".$user1['bild']."' width='100'></td>";
echo "<td valign='top'><table width='100' border='0' cellspacing='0' cellpadding='0'>";
echo "<tr>";
echo "<td><u>Skadebonus:</u> $skadebonus</td>";
echo "</tr>";
echo "<tr>";
echo "<td><u>Vapen:</u> <br>";
echo "$user1_vapenn</td>";
echo "</tr>";
echo "<tr>";
echo "<td><u>RustningID:</u> <br>";
echo "".$user1['rustningid']."</td>";
echo "</tr>";
echo "</table>";
echo "</td>";
echo "</tr>";
echo "</table></td>";
echo "<td><table width='200' border='0' cellspacing='0' cellpadding='0'>";
echo "<tr>";
echo "<td colspan=2'><b>".$user2['level']." | ".$user2['namn']."</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src='".$user2['bild']."' width='100'></td>";
echo "<td valign='top'><table width='100' border='0' cellspacing='0' cellpadding='0'>";
echo "<tr>";
echo "<td><u>Skadebonus:</u>".$user2['skadebonus']."</td>";
echo "</tr>";
echo "<tr>";
echo "<td><u>Vapen:</u> <br>";
echo "".$user2['vapen']."</td>";
echo "</tr>";
echo "<tr>";
echo "<td><u>Rustning:</u> <br>";
echo "".$user2['rustning']."</td>";
echo "</tr>";
echo "</table>";
echo "</td>";
echo "</tr>";
echo "</table></td>";
echo "</tr>";
echo "</table>";

echo "<br>";

while ($i++ < 100){                                                              //loopar 100 rundor

    if($user2_hp <= "0"){                                                       // $user1 vann striden
        echo "<br>";
        echo "<br>";
        echo "$user1n vann striden (+$user2_xp xp).";
        echo "<br>";
        echo "$user2n lämmnade $user2p$ efter sig.";
        $xp = ($user1['xp']+$user2_xp);
        $pengar = ($user1['pengar']+$user2p);
        mysql_query("UPDATE multopia_users SET xp='$xp', pengar='$pengar' WHERE id='$userid'");
        mysql_query("INSERT INTO multopia_historia (user1, user2) VALUES ('$user1n', '$user2n')");
        exit;
    } elseif($user1_hp <= "0"){                                                 // $user2 vann striden
        echo "<br>";
        echo "<br>";
        echo "$user2n vann striden.";
        echo "<br>";
        echo "$user1n får 1$ som tack för att ha ställt upp.";
        $pengar = ($user1['pengar']+1);
        mysql_query("UPDATE multopia_users SET pengar='$pengar' WHERE id='$userid'");
        mysql_query("INSERT INTO multopia_historia (user1, user2) VALUES ('$user2n', '$user1n')");
        exit;
    }
    
    echo "<br>";
    echo "Runda $i:";
    echo "<br>";                                                           // runda 1, 2, 3, ... 99, eller 100
    

    $h = "0";
    while ($h++ < 2){             // hur många attacker pär runda

        if($user2_hp <= "0"){                                                       // $user1 vann striden
            echo "<br>";
            echo "<br>";
            echo "$user1n vann striden (+$user2_xp xp).";
            echo "<br>";
            echo "$user2n lämmnade $user2p$ efter sig.";
            $xp = ($user1['xp']+$user2_xp);
            $pengar = ($user1['pengar']+$user2p);
            mysql_query("UPDATE multopia_users SET xp='$xp', pengar='$pengar' WHERE id='$userid'");
            mysql_query("INSERT INTO multopia_historia (user1, user2) VALUES ('$user1n', '$user2n')");
            exit;
        } elseif($user1_hp <= "0"){                                                 // $user2 vann striden
            echo "<br>";
            echo "<br>";
            echo "$user2n vann striden.";
            echo "<br>";
            echo "$user1n får 1$ som tack för att ha ställt upp.";
            $pengar = ($user1['pengar']+1);
            mysql_query("UPDATE multopia_users SET pengar='$pengar' WHERE id='$userid'");
            mysql_query("INSERT INTO multopia_historia (user1, user2) VALUES ('$user2n', '$user1n')");
            exit;
        }

        $result5=mysql_query("SELECT * FROM multopia_vapen WHERE id='$user1_vapenid'");
        $user1v=mysql_fetch_array($result5);

        $user1_vapenn = $user1v['namn'];
        $user1_vapen1 = $user1v['skada1'];
        $user1_vapen2 = $user1v['skada2'];
        $user1_vapens = rand($user1_vapen1, $user1_vapen2);

        if(empty($user1['vapenid'])){
                $user1_vapenn = "knytnäve";
                $user1_vapens = rand(0, 2);
        }

        $user1_rustningid = $user1['rustningid'];
        $result6=mysql_query("SELECT * FROM multopia_rustningar WHERE id='$user1_rustningid'");
        $user1r=mysql_fetch_array($result6);
        $user1_rustnings = rand($user1r['skada1'], $user1r['skada2']);
        $user1_rustningn = $user1r['namn'];

        $f = ($user1_smidighet+$user2_smidighet);
        $a = ($user1_smidighet/$f);
        $e = ($user2_smidighet/$f);

        $c = ($a*15);
        $d = ($a*35);
        $b = ($a*100);

        $x = ($e*15);
        $z = ($b+$x);

        $w = ($e*35);
        $y = ($b+$w);

        $p = rand(0, 100);

        $m = ($e*100+$b);

        $user_skadatotal = ($user1_vapens+$skadebonus);

        if($p <= "$c"){
            echo "$user1n försöker attackera $user2n med $user1_vapenn, men $user2n hinner undvika anfallet.";
        } elseif($p <= "$d"){
            echo "$user1n försöker attackera $user2n med $user1_vapenn, men $user2n hinner blockera attacken.";
        } elseif($p <= "$b"){
            echo "$user1n attackerar $user2n med $user1_vapenn, som skadas $user_skadatotal.";
            $user2_hp = ($user2_hp-$user_skadatotal-$skadebonus1);

         } elseif($p <= "$z"){
            echo "$user2n försöker attackera $user1n med $user2_vapenn, men $user1n hinner undvika anfallet.";
        } elseif($p <= "$y"){
            echo "$user2n försöker attackera $user1n med $user2_vapenn, men $user1n hinner blockera attacken.";
        } elseif($p <= "$m"){
            if(!empty($user1_rustnings)){
                $rustning_visa = "(-$user1_rustnings, rustning)";
            } else {
                $rustning_visa = "";
            }
            echo "$user2n attackerar $user1n med $user2_vapenn, som skadas $user2_vapens. $rustning_visa";
            if($user1_rustnings > "$user2_vapens"){
                $user1_hp = ($user1_hp-$user2_vapens);
            } else {
                $user1_hp = ($user1_hp-$user2_vapens+$user1_rustnings);
            }
            mysql_query("UPDATE multopia_users SET hp='$user1_hp' WHERE id='$userid'");
        }
        
        echo "<br>";
    }

    echo "<br>";
}

} else {
    echo "Monstret du försöker möta vill inte möta dig för att du är på högre level.";
    echo "<br>";
    echo "Testa med något annat monster.";
}

}  // function

$matchen = foo($userid,$m);
mysql_query("INSERT INTO multopia_historia (rapport) VALUES ('$matchen')");
```

Om det är till någon hjälp ;)

Permalänk: https://www.webforum.nu/p/1629681

## #4 — spango, 2005-06-12T12:26Z

Jag orkar inte grotta runt i din kod, men som du ser ligger alla dina exit-anrop i if-satser. Det enklaste är att slänga på else-satser på dem. Om vi exempelvis kollar på din första exit:

```
if($user1_minhp < "30"){
    echo "Din krigare är för skadad för att kunna slås.";
    exit;
}
```

... så behöver du bara lägga resten av funktionen i en else-sats istället för att anropa exit. Det kommer bli rätt grötigt när du gör så med alla dina if-satser, eftersom det är en hyfsat ostrukturerad lösning du har nu. Den skulle må bra av lite objektorientering ;)

Permalänk: https://www.webforum.nu/p/1629687

## #5 — Pike, 2005-06-12T12:40Z

nu hänger jag inte med...
ska jag göra en STOR if-sats eller bara lägga dit
} else {
istället för
exit;
}

isåfall, vart ska sluttaggen för "else" vara då? :OO

Permalänk: https://www.webforum.nu/p/1629693

## #6 — spango, 2005-06-12T12:48Z

**\\r** Aha, nu hajar jag! :i Tänkte i fel banor förut. Jag tror att saker och ting skulle bli bättre för dig om du bara nöjde dig med att säga return (som avbryter funktionen) i stället för exit (som avbryter scriptet). Dessutom ska du veta att du försöker ett returvärde från funktionen (genom att säga *$matchen = foo($userid,$m);*), men inget returneras någonsin, så inget kommer sparas i databasen. Det du skriver ut med echo hamnar direkt i webbläsaren.

Permalänk: https://www.webforum.nu/p/1629699

## #7 — Pike, 2005-06-12T13:05Z

jo... jag förstår hur du menar, men jg får fel på denna rad:

return $userid,$m;

ska det stå så eller har jag gjort fel :?

Permalänk: https://www.webforum.nu/p/1629707

## #8 — spango, 2005-06-12T13:12Z

Du har väl inte bytt ut *foo($userid,$m)* mot *return $userid,$m*? För det är helt fel. Dessutom kan du bara returnera en enda variabel.

Permalänk: https://www.webforum.nu/p/1629709

## #9 — Pike, 2005-06-12T13:17Z

> **spango skrev:**
>
> **\\r** Aha, nu hajar jag! :i Tänkte i fel banor förut. Jag tror att saker och ting skulle bli bättre för dig om du bara nöjde dig med att säga return (som avbryter funktionen) i stället för exit (som avbryter scriptet). Dessutom ska du veta att du försöker ett returvärde från funktionen (genom att säga *$matchen = foo($userid,$m);*), men inget returneras någonsin, så inget kommer sparas i databasen. Det du skriver ut med echo hamnar direkt i webbläsaren.

Förklara lite hur du menar med "returneras". Vad ska ajag skriva istället för exit; om funktionen heter foo($userid,$m)?

Permalänk: https://www.webforum.nu/p/1629712

## #10 — aasah, 2005-06-12T14:55Z

> **Pike skrev:**
>
> ... Förklara lite hur du menar med "returneras". Vad ska ajag skriva istället för exit; om funktionen heter foo($userid,$m)?

Vad funktionen heter har inte med saken att göra. Det är vad som händer I den som är intressant. Några exempel: 

```php
function plus($k) {
   $res = $k + 19;
   echo "$res";
}

function plus2($k) {
   $res = $k + 19;
   return $res;
}

//main
$knas = plus(7);
$vett = plus2(7);
```

 Vad händer? Jo:
plus(7) ==\> $res får värdet 26 och detta skickas till webbläsaren.
Funktionen returnerar ingenting så echo $knas ger "" (tom sträng).

plus2(7) ==\> $res får värdet 26 och detta returneras från funktionen och hamnar i $vett.
echo $vett ger 26 medan funktionen själv inte skriver ut värdet.

Om du returnerar eller ej beror på vad du vill att din funktion ska göra. Är du med så långt?  :q 

I princip är det riktigt att man bara kan returnera ett värde från en funktion, men vill man returnera flera går detta utmärkt i PHP om man lagrar dessa värden i en array och returnerar **den**.

```php
//Helt värdelös funktion för det finns ingen logik i att slänga in
// värden bara för att ta ut dem igen, men som exempel...
funktion moreToReturn($a, $b) {
  $arr = array($a, $b);
  return $arr;
}
```

Permalänk: https://www.webforum.nu/p/1629764

## #11 — Pike, 2005-06-12T15:23Z

jo, jag hänger med... litegrann...
men jag har ju inte det som sk skrivas ut i någon $sträng för jag använder echo... 

en match kan se ut såhär:

Runda 1:
Skorpion försöker attackera Pike med Klor, men Pike hinner undvika anfallet.
Skorpion attackerar Pike med Klor, som skadas 2.

Runda 2:
Skorpion attackerar Pike med Klor, som skadas 2.
Skorpion attackerar Pike med Klor, som skadas 2.

Runda 3:
Skorpion försöker attackera Pike med Klor, men Pike hinner undvika anfallet.
Pike försöker attackera Skorpion med stav, men Skorpion hinner undvika anfallet.

Runda 4:
Skorpion attackerar Pike med Klor, som skadas 2.
Skorpion attackerar Pike med Klor, som skadas 2.

Runda 5:
Skorpion försöker attackera Pike med Klor, men Pike hinner undvika anfallet.
Skorpion försöker attackera Pike med Klor, men Pike hinner blockera attacken.

Runda 6:
Skorpion försöker attackera Pike med Klor, men Pike hinner undvika anfallet.
Pike attackerar Skorpion med stav, som skadas 1.

Runda 7:
Skorpion attackerar Pike med Klor, som skadas 2.
Pike försöker attackera Skorpion med stav, men Skorpion hinner undvika anfallet.

Runda 8:
Skorpion försöker attackera Pike med Klor, men Pike hinner blockera attacken.
Pike attackerar Skorpion med stav, som skadas 3.

Runda 9:
Skorpion attackerar Pike med Klor, som skadas 2.

Skorpion vann striden.
Pike får 1$ som tack för att ha ställt upp.

Så kan mna inte lägga in allt somt functionen skriver ut i databasen eller ska jag byta ut echo till någon $sträng. Fasst det loopas ju?

Permalänk: https://www.webforum.nu/p/1629780

## #12 — aasah, 2005-06-12T15:29Z

Hmm... hur mycket av ovan beskrivna match avgörs av indata från folk, och hur mycket avgörs av slumptal eller variabelvärden? :q

Permalänk: https://www.webforum.nu/p/1629786

## #13 — Pike, 2005-06-12T15:36Z

Den slumpar ju inte 100%... om du har mer smidighet än den andra så har du ju större chans att undvika och parera. Spelaren har en viss smidighet (som man får lite poäng att placera ut för varje level) och monstret har man gett visst mycket i databasen... men det den behöver hämta utanfär funktionen är ju vilket ID monster det är ($m) och vilket ID spelaren har....

Permalänk: https://www.webforum.nu/p/1629790

## #14 — spango, 2005-06-12T15:36Z

Pike: Ta inte illa upp, men jag skulle rekommendera att du sätter dig och försöker lära dig programmera, för det kan du helt uppenbart inte. Sätt dig ner med en schysst tutorial och läs in dig på hur funktioner fungerar.

Permalänk: https://www.webforum.nu/p/1629791

## #15 — Pike, 2005-06-12T15:39Z

Det är lungt spango, jag förstår om du tycker att jag inte är helt hajj på funktioner för att jag nästan aldrig använder det... Men är man 13 år och har programerat i bara 1.5/2 år så är man inte den bästa ju ;)

Permalänk: https://www.webforum.nu/p/1629793

---

Tråden på webben: https://www.webforum.nu/amne/php/129855-spara-funktion-med-exit-i-databasen
