WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Plus o Minus i Mysql (https://www.wn.se/forum/showthread.php?t=33312)

youheardit 2008-11-16 11:37

jag håller på och bygger ett litet räknings system, men kan inte hitta hur man får plus och minus i mysql <_<

jag kör annars UPDATE i mysql, fast då får man ju räkna ut själv hur mycket det blir i slutet.


någon som har ett förslag på cod eller tillägg?? snälla hjälp! :)

kör detta förslag för tillfället:
Kod:

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("my_db", $con);

mysql_query("UPDATE Persons SET Age = '36'
WHERE FirstName = 'Peter' AND LastName = 'Griffin'");
mysql_close($con);
?>


WizKid 2008-11-16 12:07

plus och minus av vad? Om kolmnen är en int så kan du köra field = field + 17

youheardit 2008-11-16 12:10

meningen med systemet är att medlemmar på sidan får poäng för saker som ddem gör på sidan, och då vill jag har typ så när de gör en sak så ska typ 10poäng gå in i databasen till den användaren.

alltså: plus elelr minus ur ett tal i databasen!

allstars 2008-11-16 12:15

Citat:

jag kör annars UPDATE i mysql, fast då får man ju räkna ut själv hur mycket det blir i slutet.
I slutet vaddå?

Som sagt kan du köra additionen i sql-satsen
Kod:

<?php
$num_points = 10; //hur många poäng användaren får för just den åtgärden han gjort.
var sql_string="UPDATE TABLE SET (points=points+$num_points) WHERE userid=$user_id;"

//Kanske får du köra en switch här i en mer global funktion, eller gör en separat funktion
add_points_to_user($user_id,100);


?>

Vill du subtrahera ändrar du bara variabeln till ett negativt tal:
$num_points = -10;

youheardit 2008-11-16 12:40

hur ska jag lägga upp det: såhär testade jag men inget hände:

Kod:

<?php
$con = mysql_connect("localhost","username","password");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("databasen", $con);
$num_points = 10;//hur många poäng användaren får för just den åtgärden han gjort.
mysql_query ("UPDATE TABLE SET (credits=credits+$num_points) WHERE user=$userID;")
 

?>

detta är ju inte orginalkoden jag använder. jag använder ju med rätt databas uppgifter

WizKid 2008-11-16 12:53

Hur ser sql-queryn ut som du kör då?

allstars 2008-11-16 13:02

du måste självklart ändra sqlen så den passar ditt fall. Ändra TABLE till det tabellnamn du skall ändra på och fältet points till det namn "poängfältet" har (måste vara en form av int) samt userid-fältnamn

hnn 2008-11-16 13:05

Byt ut
mysql_query ("UPDATE TABLE SET (credits=credits+$num_points) WHERE user=$userID;")

mot

mysql_query ("UPDATE ##TABELLENS NAMN## SET (credits=credits+$num_points) WHERE user=$userID;")

youheardit 2008-11-16 13:51

e det fortfarande något fel?? för det funker inte :huh:


Kod:

<?php
$con = mysql_connect("localhost","användarnamn","lösen");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("databasnamn", $con);
$num_points = 10;//hur många poäng användaren får för just den åtgärden han gjort.
mysql_query ("UPDATE credits SET (credits=credits+10) WHERE user=$userid;")
 

?>


allstars 2008-11-16 14:16

heter både tabellen och fältet "credits"?

Jimpsson 2008-11-16 14:17

Citat:

Originally posted by youheardit@Nov 16 2008, 13:51
e det fortfarande något fel?? för det funker inte :huh:


Kod:

<?php
$con = mysql_connect("localhost","användarnamn","lösen");
if (!$con)
 *{
 *die('Could not connect: ' . mysql_error());
 *}
mysql_select_db("databasnamn", $con);
$num_points = 10;//hur många poäng användaren får för just den åtgärden han gjort.
mysql_query ("UPDATE credits SET (credits=credits+10) WHERE user=$userid;")
 *

?>


Har $userid något värde?!

youheardit 2008-11-16 14:20

Citat:

Har $userid något värde?!
nej, det är bara exemplet, jag byter ut $userid till admin (som användaren, administratören heter)

youheardit 2008-11-16 14:21

Citat:

heter både tabellen och fältet "credits"?
Japp

allstars 2008-11-16 14:23

Nu är det dags för dig att visa fälten och fälttyp i din databastabell.
Svårt att gissa när vi inte har rätt förutsättningar. Har du testat att göra en query direkt mot phpmyadmin eller skrivit ut sqlqueryn du vill köra?

youheardit 2008-11-16 14:27

hela koden jag använder: (utom lösen, användarnamn och databasnamn)

Kod:

<?php
$con = mysql_connect("localhost","användarnamn","lösen");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("databasen", $con);
$num_points = 10;
mysql_query ("UPDATE credits SET (credits=credits+10) WHERE user=admin;")
 

?>


WizKid 2008-11-16 14:52

Och du vill uppdatera alla rader i databasen där kolumen user har samma värde som kolumnen admin?

Använd mysql_error så kommer du antagligen få ett felmeddelande när mysql_query körs.

youheardit 2008-11-16 15:35

men admin ligger i kolumnen user sen ligger då värdet: 10 i kolumnen credits. som ligger i tabellen credits (alltså tabellen heter credits)

WizKid 2008-11-16 15:39

Men din fråga är ju user = admin. Alltså om user-kolumnen har samma värde som admin-kolumnen. Det du vill är user = 'admin'. Alltså de rader där user-kolumnen har värdet 'admin'. Det är alltså två helt olika saker.

Men du hade som sagt antagligen fått ett felmeddelande om du använt mysql_error.

youheardit 2008-11-16 15:41

http://djmusic.se/phpmyadmin.jpg det ser ut så här.

WizKid 2008-11-16 15:42

ja. Du har alltså ingen admin kolumn utan du vill veta när user = 'admin' och inte user = admin.

youheardit 2008-11-16 15:45

så jag ska bara byta:
Kod:


mysql_query ("UPDATE credits SET (credits=credits+10) WHERE user=admin;")

till


Kod:

mysql_query ("UPDATE credits SET (credits=credits+10000) WHERE user='admin';")

?? (jag e nybörjare på mysql o php, har bara kört html, css innan)[CODE]

allstars 2008-11-16 15:45

återigen:
Kod:

SQL_query ("UPDATE credits ... WHERE user = 'admin'" );

youheardit 2008-11-16 15:49

med andra ord
Kod:

<?php
$con = mysql_connect("localhost","__","__");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("djmusic_se", $con);
$num_points = 10;
SQL_query ("UPDATE credits SET (credits=credits+10) WHERE user='admin'")
 

?>


WizKid 2008-11-16 16:02

Testa. Du kommer ju aldrig lära dig om du inte testar själv.

Jimpsson 2008-11-16 16:10

Citat:

Originally posted by youheardit@Nov 16 2008, 15:49
med andra ord
Kod:

?php
con = mysql_connectlocalhost,__,__;
if con
 {.....


Inte lönt att du kommenterar bort användarnamn och lösenord för du har redan råkat skriva det en gång? Hur som sätt ' ' runt admin, dvs 'admin' och gör inte en ny post för att fråga om du gjort rätt, testa lite och fråga sen.

youheardit 2008-11-16 16:14

Citat:

Ursprungligen postat av Rokkan1
Citat:

Ursprungligen postat av youheardit
med andra ord
Kod:

?php
con = mysql_connectlocalhost,__,__;
if con
 {.....


Inte lönt att du kommenterar bort användarnamn och lösenord för du har redan råkat skriva det en gång? Hur som sätt runt admin, dvs admin och gör inte en ny post för att fråga om du gjort rätt, testa lite och fråga sen.

det var ett exempel med, "peter" "adc123"

youheardit 2008-11-16 16:18

Citat:

Originally posted by WizKid@Nov 16 2008, 17:02
Testa. Du kommer ju aldrig lära dig om du inte testar själv.

funkade inte med:
Kod:

<?php
$con = mysql_connect("localhost","__","__");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("djmusic_se", $con);
$num_points = 10;
SQL_query ("UPDATE credits SET (credits=credits+10) WHERE user='admin'")
 

?>

säker på att det ska vara SQL_query och inte mysql_query, eller e det sak samma??

allstars 2008-11-16 16:18

Nej det är jag inte. som du skrev är korrekt.


Lär dig metoden "Trial and error"Trial_and_error

youheardit 2008-11-16 16:28

den fulländiga koden på sidan (där jag kodar så att den direkt skickas vidare till en ny sida, men med den koden som ni visa skickades jag inte vidare utan stannade på sidan?? men här e koden:

Kod:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?php
$con = mysql_connect("localhost","__","__");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("djmusic_se", $con);
$num_points = 10;
SQL_query ("UPDATE credits SET (credits=credits+10) WHERE user='admin'")
 

?>
//använder som sagt detta!!
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://djmusic.se/1/">
<body>
</body>
</html>


Jimpsson 2008-11-16 16:31

Citat:

Originally posted by youheardit@Nov 16 2008, 16:28
den fulländiga koden på sidan (där jag kodar så att den direkt skickas vidare till en ny sida, men med den koden som ni visa skickades jag inte vidare utan stannade på sidan?? men här e koden
  • Blir sidan helt vit?
  • Får du något felmeddelande?
  • Finns det en index-fil i mappen dit du skickar?
  • Finns mappen ditt du skickar en vidare?
  • Uppdateras värdet på admin?
  • Har du testat utan () runt själva "credits"?

youheardit 2008-11-16 16:34

Citat:

Ursprungligen postat av Rokkan1
Citat:

Ursprungligen postat av youheardit
den fulländiga koden på sidan (där jag kodar så att den direkt skickas vidare till en ny sida, men med den koden som ni visa skickades jag inte vidare utan stannade på sidan?? men här e koden

  • Blir sidan helt vit?
  • Får du något felmeddelande?
  • Finns det en index-fil i mappen dit du skickar?
  • Finns mappen ditt du skickar en vidare?

- sidan e vit, helt, inga error meddelande kommer, ja i mappen 1 finns index.php och 1 finns, det har funkat innan med vidare skickningen (eller vad man kan kalla det) men nu med den nya koden funkar det inte.

Jimpsson 2008-11-16 16:40

Kod:

<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Min sida</title>
</head>
<body>
<?php
mysql_connect("localhost", "username", "password");
mysql_select_db("databasename") or die(mysql_error());

$krediter = 10;
$UserID = 'admin';

mysql_query("UPDATE credits SET credits = credits + $krediter WHERE user = '$UserID'");       

header('Location: /1/index.php');
?>
</body>


youheardit 2008-11-16 16:44

lite konstigt, för det läggs inte till i databasen??? men ska man ha någon primär key, eller unique
Citat:

Originally posted by Rokkan1@Nov 16 2008, 17:40
Kod:

?php ob_start; ?
DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
html xmlns=http//www.w3.org/1999/xhtml
head
meta http-equiv=Content-Type content=text/html; charset=utf-8 /
titleMin sida/title
/head
body
?php
mysql_connectlocalhost, username, password;
mysql_select_dbdatabasename or diemysql_error;
krediter = 10;
UserID = admin;
mysql_queryUPDATE credits SET credits = credits + krediter WHERE ID = UserID;       
headerLocation /1/index.php;
?
/body



Jimpsson 2008-11-16 16:45

Men kan du seriöst inte felsöka lite själv? Ändra ID till user, jag ändrade det efter en stund i mitt inlägg som du kanske ser.

youheardit 2008-11-16 16:47

Citat:

Originally posted by Rokkan1@Nov 16 2008, 17:45
Men kan du seriöst inte felsöka lite själv? Ändra ID till user, jag ändrade det efter en stund i mitt inlägg som du kanske ser.

oj förlåt såg inte det, men ska kolla det.

youheardit 2008-11-16 16:52

DET FUNKAR!! Tack så mycket alla som har hjälpt mig. nu funkar det äntligen. Ni e faan bäst!!!

youheardit 2008-11-16 17:05

en sissta fråga bara, i koden:
Kod:

$krediter = 10;
använder jag ju -10 om det ska bli negativt, men hur gör jag för att multiplicera eller dividera, är det då

Kod:

$krediter = *10;
sen
Kod:

$krediter = /10;
som jag använder??


FEL: testade precis dessa, men det funkade inte, någon som har ett förslag på vilket "tecken" jag ska använda??

Jimpsson 2008-11-16 17:25

Citat:

Originally posted by youheardit@Nov 16 2008, 17:05
en sissta fråga bara, i koden:
Kod:

$krediter = 10;
använder jag ju -10 om det ska bli negativt, men hur gör jag för att multiplicera eller dividera, är det då

Kod:

$krediter = *10;
sen
Kod:

$krediter = /10;
som jag använder??


FEL: testade precis dessa, men det funkade inte, någon som har ett förslag på vilket "tecken" jag ska använda??

Du måste ju dividera med något. Så här gör du..

$krediter = 10;
$krediter = $krediter * 10;
// Gångrar 10 * 10 = 100.

$krediter = 10;
$krediter = $krediter / 2;
// Delar krediter på 2 vilket blir 5.

youheardit 2008-11-16 17:45

okej, tack så mycket för allt!!!

Jonas 2008-11-16 18:11

De va inge


Alla tider är GMT +2. Klockan är nu 22:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson