Avatar billede tobrukDk Novice
16. juli 2013 - 03:54 Der er 13 kommentarer og
1 løsning

lave minus i sql (mysqli)

hej


lige nu arbejder jeg på at lave et lille point system, men jeg kan ikke rigtig komme videre da jeg har google rundt og intet kunne finde da jeg ikke kan husk hvordan man laver - i sql... det er ligesom ikke noget jeg bruger hver dag :)

jeg har prøve at gøre sådan her:


if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`=? WHERE `id`=?')) {

                /* Bind parametre */
                $stmt->bind_param('si', $point, $id);

                /* Sæt værdier på parametrene */
                $point = implode($_POST["point"]);
                $id = $_SESSION["id"];

                /* Eksekver forespørgslen */
                $stmt->execute();

                /* Luk statement */
                $stmt->close();

            } else {
                /* Der er opstået en fejl */
                echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
            }


men jeg synes ikke rigtig at jeg kan komme videre
Avatar billede arne_v Ekspert
16. juli 2013 - 03:57 #1
- er - i SQL saa det er der ingen ben i.

Men hvad pokker forventer du fra:

$point = implode($_POST["point"]);

?

Du bruger et array hvor du skal bruge en streng.
Avatar billede arne_v Ekspert
16. juli 2013 - 03:58 #2
sludder - du bruger implode ikke explode - saa du har en streng.

Hvad er saa problemet?
Avatar billede tobrukDk Novice
16. juli 2013 - 13:02 #3
Jeg komme til at angive koden for hurtigt jeg skulle ikke bruge det der til noget her er lille updater


if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`=? WHERE `id`=?')) {

                /* Bind parametre */
                $stmt->bind_param('si', $point, $id);

                /* Sæt værdier på parametrene */
                $point = $_POST["point"];
                $id = $_SESSION["id"];

                /* Eksekver forespørgslen */
                $stmt->execute();

                /* Luk statement */
                $stmt->close();

            } else {
                /* Der er opstået en fejl */
                echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
            }


Jeg skal have gjort sådan at hvis person har 100 og hansiger at han vil bruge 50 så skal tag trække 50 fra 100 som bliver 50 point tilbage på konto :)

Det var mig som var for hurtig :)
Avatar billede arne_v Ekspert
16. juli 2013 - 14:33 #4
if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`=`point`-? WHERE `id`=?')) {

?
Avatar billede tobrukDk Novice
16. juli 2013 - 14:46 #5

if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`= `point` - ? WHERE `id`=?')) {

                /* Bind parametre */
                $stmt->bind_param('ii', $point, $id);

                /* Sæt værdier på parametrene */
                $point = $_POST["point"];
                $id = $_SESSION["id"];

                /* Eksekver forespørgslen */
                $stmt->execute();

                /* Luk statement */
                $stmt->close();

            } else {
                /* Der er opstået en fejl */
                echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
            }


den tag kun 1 point fra den. :(
Avatar billede arne_v Ekspert
16. juli 2013 - 14:59 #6
Hvis $point er mere end 1 saa skulle den gerne traekke mere end 1 fra.
Avatar billede tobrukDk Novice
16. juli 2013 - 15:28 #7
du kan se her hvad man har valg muligheder til af point ;


if($point > 9)
                            {
                                if($point >= 60)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"60\"> 60 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"40\"> 40 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"20\"> 20 point </div>";
                                }
                                elseif($point >= 40)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"40\"> 40 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"20\"> 20 point </div>";
                                }
                                elseif($point >= 20)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"20\"> 20 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"10\"> 10 point </div>";
                                }
                                elseif($point >= 10)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"10\"> 10 point </div>";
                                }
                                else
                                {
                                    echo "Fejl - kontakt webmaster med det samme.";
                                }
                            }
                            else
                            {
                                echo "Du kan ikke oprette spørgsmål.";
                            }
Avatar billede tobrukDk Novice
16. juli 2013 - 15:37 #8
lad også sige at jeg vil have den skal trække 60 point fra brugen
Avatar billede tobrukDk Novice
16. juli 2013 - 15:48 #9
glemt er klart nu!.

jeg skulle bruge :
$point = implode($_POST["point"]);
Avatar billede tobrukDk Novice
16. juli 2013 - 16:54 #10
Jeg skal bare have gjort sådan i dem her

if($point >= 10)
                            {
                                if($point >= 60)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"60\"> 60 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"40\"> 40 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"20\"> 20 point </div>";
                                }
                                elseif($point >= 40)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"40\"> 40 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"20\"> 20 point </div>";
                                }
                                elseif($point >= 20)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"20\"> 20 point </div>";
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"10\"> 10 point </div>";
                                }
                                elseif($point >= 10)
                                {
                                    echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"10\"> 10 point </div>";
                                }
                            }


at man ikke kan tilføj mere i value af point eller ligne, hvordan gør jeg det?
Avatar billede arne_v Ekspert
17. juli 2013 - 02:15 #11
svar for minus
Avatar billede arne_v Ekspert
17. juli 2013 - 02:16 #12
Det maa kunne goeres i en simpel for loekke med en simpel if indeni.
Avatar billede tobrukDk Novice
17. juli 2013 - 09:36 #13
vdr point har jeg gjort sådan her


if($point >= 10)
                    {
                        $arr = array(60, 40, 20);
                        foreach ($arr as $value)
                        {
                            if($point >= $value)
                            {
                                echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"".$value."\"> ".$value." point </div>";
                            }
                        }
                   
                        echo "<div class=\"point_box\"><input type=\"radio\" name=\"point[]\" value=\"10\"> 10 point </div>";
                   
                    }
                    else
                    {
                        echo "Du kan ikke oprette spørgsmål.";
                    }
Avatar billede arne_v Ekspert
22. juli 2013 - 04:07 #14
Jeps.

Overvej evt. at bruge '' til HTML attributter og udnyt PHP "" til at embedded $value.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Politiets Efterretningstjeneste

Bliv AD-specialist hos PET

Blue Water Shipping A/S

Senior Developer

HusCompagniet A/S

Application Manager

Arbejdernes Landsbank

Data Governance Specialist