nabilfx Postado Setembro 26, 2015 Denunciar Share Postado Setembro 26, 2015 (editado) tenho um valor float de resultado de score 2431.166 como faço para insert o ponto e o restando da pontuação no mysql. Estou usando Editado Setembro 26, 2015 por nabilfx Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Setembro 26, 2015 Denunciar Share Postado Setembro 26, 2015 (editado) Entendi que é isso:insert into tabela(score) values(2431.166);Mas para que isto aconteça você deve mudar a estrutura de sua tabela para que aceite 3 casas decimais e 10 na parte inteira.alter table tabela modify column score decimal(10,3); Editado Setembro 26, 2015 por Denis Courcy esqueci de colocar o decimal Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nabilfx Postado Setembro 26, 2015 Autor Denunciar Share Postado Setembro 26, 2015 alterei, para 10,3 so que fica assim. Exemplo 280.322 entra 280.000não esta entrando os numero apos o zero so entra 000aqui esta o script que manda o score SendHighScores.php<?php include('ServerConnect.php'); $connection = Connect(); //Attempt to Connect to MYSQL Server & DataBase //Get variables from Unity $table = $_POST['table']; $name = $_POST['name']; $score = $_POST['score']; $updating = $_POST['updating']; $date = strtotime(date("Y-m-d")); //Get Time //Security Check $hash = $_POST['hash']; if(CheckKey($hash,$name) == 'fail'){ //Check if hash is valid echo 'Security Failure'; exit; } //Make sure all input is sql injection safe $name = CleanInput($name); $table = CleanInput($table); $score = CleanInput($score); $updating = CleanInput($updating); //Run Query (inser or update) if($updating == 0){ //Free entry So make new row $sql = "INSERT INTO $table (name,score,date) VALUES('$name','$score','$date')"; }else{ //We are updating a previously registered user $sql = "UPDATE $table SET score = '$score', date = '$date' WHERE name = '$name'"; } $result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); //Now update our table, by ordering it by descending score $sql = "ALTER TABLE $table ORDER BY score DESC,id DESC"; $result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); echo 'Accepted'; ?>aqui o DatabaseTools.php<?php include('ServerConnect.php'); $connection = Connect();//Attempt to Connect to MYSQL Server & DataBase //Get variables from Unity $mode = $_POST['mode']; $table = $_POST['table']; if($mode == 0){ //Create current table $sql = "CREATE TABLE $table(id INT(10) AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(25), score float(10,3), date VARCHAR(25))"; //we keep date a varchar in the database $result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); echo $table.' Created'; exit; }else if ($mode == 1){ //Delete scores below input score $score = $_POST['score']; $sql = "DELETE FROM $table WHERE score < '$score'"; $result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); echo 'Deleted'; exit; }else if ($mode == 2){ //Delete scores below posted date $date = strtotime($_POST['date']); $sql = "DELETE FROM $table WHERE date < '$date'"; $result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); echo 'Deleted'; exit; } ?>e aqui HighScores_js o java que fica no unity #pragma strict import System.Security.Cryptography; import System.Text; @script ExecuteInEditMode() enum TrackingType{FreeEntry,TrackProgress} var trackType : TrackingType = TrackingType.FreeEntry; enum DeveloperType{debug,live} var developmentMode : DeveloperType = DeveloperType.live; private var secretKey : String = "test"; var sendScoreURL : String = "http://nfx.comuv.com/.../SendHighScores.php?"; var getScoresURL : String = "http://nfx.comuv.com/.../GetHighScores.php?"; var resetScoresURL : String = "http://nfx.comuv.com/.../ResetHighScores.php?"; var registerUserURL : String = "http://nfx.comuv.com/.../RegisterUser.php?"; var getUserScoreURL : String = "http://nfx.comuv.com/.../GetUserScore.php?"; var DatabaseToolsURL : String = "http://nfx.comuv.com/.../DatabaseTools.php?"; //Modules Done class Module{ var showStatus : boolean = true; var showScores : boolean = true; var showUserScore : boolean = true; var showSendScore : boolean = true; var showDifficultySwitch : boolean = true; var showScopeSwitch : boolean = true; } var displayOptions : Module; //Class That contains class Mode{ var displayName : String = "Easy"; var playerPrefsName : String = "Easy"; var databaseName : String = "Easy"; } var difficultyModes : Mode[]; var startDifficultyMode : int = 0; private var modeIndex : int = 0; //Score Scope private var scoreScopeText : String = "Global";//AllTime,Daily private var currentScope : String = "AllTime"; class ScoreScopeSettings{ var dailyName : String = "Daily"; var allTimeName : String = "Global"; } var scoreScope : ScoreScopeSettings; //Get HighScores Fields(keep the same lenght) private var serverHighScores : String[] = new String[0]; private var scrollView : Vector2; var scoreType : String = "Points"; var maxHighScores : int = 1000; //Send HighScores Fields private var serverHighScoreName : String = ""; var maxNameCharacters : int = 20; //Reset HighScores Fields var resetNames : int = 100; var minResetScore : int = 100; var maxResetScore : int = 1000; //Bad Names var blockBadNames : boolean = true; //Block names from bas names list var badNamesList : TextAsset; //List Of bad names //PlayerPrefsName var existingNamePlayerPrefs : String = "playerName"; //Rects var sendScoresOffsetRect : Rect = new Rect(450,150,250,30); var getScoresOffsetRect : Rect = new Rect(450,100,100,25); var scoreScopeOffsetRect : Rect = new Rect(300,100,100,25); var messageOffsetBox : Rect = new Rect(450,-150,250,25); var localScoreOffsetRect : Rect = new Rect(450,-105,250,25); var serverScoreOffsetRect : Rect = new Rect(450,-60,250,40); var scoresListOffsetRect : Rect = new Rect(150,150,380,350); private var baseRect : Rect = new Rect(Screen.width * .5F,Screen.height * .5F,100F,100F); //status private var year : int = 2012; private var month : int = 9; private var day : int = 1; private var debugScore : int = 0; private var deleteScore : int = 0; public var localScore : float = 0; private var serverScore : float = 0; private var serverRank : float = 0; private var status : String = ""; //Status of Server Operations private var runningHsServer : float = 0; //Are we doing server side operations private var runningTrack : float = 0; //Are we seeking player status //skin var skin : GUISkin; function DatabaseTools(mode : int ,tables : Mode[]){ if(runningHsServer == 1){status = "Still Running"; return;} runningHsServer = 1; status = "Running"; //0 = create tables var hsFm : WWWForm = new WWWForm(); hsFm.AddField("mode",mode); for(var md : Mode in tables){ hsFm.AddField("table",md.databaseName); var hs : WWW = new WWW(DatabaseToolsURL,hsFm); yield hs; if(hs.text.Equals("Created")){status = "Database Created";} else{status = "Error Occured";} Debug.Log(hs.text); } //Stop Running runningHsServer = 0; SynchTable(); } function DatabaseTools(mode : int,table : String){ if(runningHsServer == 1){status = "Still Running"; return;} runningHsServer = 1; status = "Running"; //Modes // 1 = delete by score // 2 = delete by date var hsFm : WWWForm = new WWWForm(); hsFm.AddField("mode",mode); if(mode == 1){ hsFm.AddField("table",table); hsFm.AddField("score",deleteScore); }else if(mode == 2){ hsFm.AddField("table",table); hsFm.AddField("date",year+"/"+month+"/"+day); } var hs : WWW = new WWW(DatabaseToolsURL,hsFm); yield hs; if(hs.text.Equals("Created")){status = "Database Created";} if(hs.text.Equals("Deleted")){status = table +" Entries Cleaned";} else{status = "Error Occured";} Debug.Log(hs.text); //Stop Running runningHsServer = 0; SynchTable(); } function ResetHighScores(table : String,mode : String){ if(runningHsServer == 1){status = "Still Running"; return;} runningHsServer = 1; status = "Running"; // var hsFm : WWWForm = new WWWForm(); hsFm.AddField("table",table); hsFm.AddField("mode",mode); hsFm.AddField("count",resetNames); hsFm.AddField("min",minResetScore); hsFm.AddField("max",maxResetScore); var hs : WWW = new WWW(resetScoresURL,hsFm); yield hs; //Update status = hs.text; //Running runningHsServer = 0; SynchTable(); } function GetUserScore(table : String,name : String){ runningTrack = 1;//We are seeking user stats // serverRank = 0; serverScore = 0; //Get User Score var hsFm : WWWForm = new WWWForm(); hsFm.AddField("name",name); hsFm.AddField("table",table); hsFm.AddField("hash",GetHash(name)); var hs : WWW = new WWW(getUserScoreURL,hsFm); yield hs; Debug.Log(hs.text); if(hs.text != "Not Found" && !hs.text.Contains("Query failed")){ var userData : String[] = hs.text.Split(':'[0]); //Process Results if(userData[1] != null)serverRank = float.Parse(userData[1]); if(userData[2] != null)serverScore = float.Parse(userData[2]); } else if(hs.text == "Not Found"){ PlayerPrefs.SetFloat("nameRegistered",0); } runningTrack = 0; } function GetHighScores(table : String,scope : String,limit : int){ if(runningHsServer == 1){status = "Still Running"; return;} runningHsServer = 1; status = "Running"; //Get HighScores serverHighScores = new String[maxHighScores]; for(var st : int = 0;st<serverHighScores.Length;st++){ serverHighScores[st] = "Loading...."; } var hsFm : WWWForm = new WWWForm(); hsFm.AddField("table",table); hsFm.AddField("scope",scope); hsFm.AddField("limit",limit); hsFm.AddField("hash",GetHash(table)); var hs : WWW = new WWW(getScoresURL,hsFm); yield hs; if(hs.text.Length > 0){ serverHighScores = hs.text.Split('%'[0]); status = "Found "+table+" HighScores"; Debug.Log("Found HighScores: " + scope+" :" +table); }else{ status = "No "+scope+" Scores"; Debug.Log("No "+scope+" Scores"); } //Stop Running runningHsServer = 0; //Get User Stats If Tracking is On & We are Registered if(trackType == TrackingType.TrackProgress && PlayerPrefs.GetFloat("nameRegistered") == 1){ StartCoroutine(GetUserScore(difficultyModes[modeIndex].databaseName,serverHighScoreName)); } } function SendHighScores(table : Mode,name : String,score : int,difficultyModesSet : Mode[]){ if(runningHsServer == 1){status = "Still Running"; return;} runningHsServer = 1; status = "Running"; //Check If We Have Beat Our Own Score First if(developmentMode == DeveloperType.live){ if(PlayerPrefs.GetFloat(table.playerPrefsName) <= PlayerPrefs.GetFloat("sent"+table.playerPrefsName)){ status = table.displayName + " Score Previously Submitted"; runningHsServer = 0; return; } } //Trim if(name.Length > maxNameCharacters){ runningHsServer = 0; status = "Name Too Long"; return; } //Scan & Check Name if(blockBadNames && CheckName(name).CompareTo("offensive") == 0){ runningHsServer = 0; status = "Chosen Name Is Offensive"; return; } var updating : int = 0; //0 = no we are making a free entry/1 = updating entry var newRegistration : int = 0; //We are doing a new registration if(trackType == TrackingType.TrackProgress){ if(PlayerPrefs.GetFloat("nameRegistered") == 0){ // We are not yet registred newRegistration = 1; status = "Registering User"; var finalResult : String = ""; var tables : String = ""; for(var m : int = 0; m < difficultyModesSet.Length; m++){//Create a list of tables to send if(m < difficultyModesSet.Length -1){ tables += difficultyModesSet[m].databaseName + " "; }else{ tables += difficultyModesSet[m].databaseName; } } var rsFm : WWWForm = new WWWForm(); rsFm.AddField("name",name); rsFm.AddField("tables",tables); rsFm.AddField("hash",GetHash(name)); var rs : WWW = new WWW(registerUserURL,rsFm); yield rs; Debug.Log(rs.text+" : "+table.displayName); finalResult = rs.text; if(finalResult.Equals("Already Used")){ runningHsServer = 0; status = "Name Already Used"; return; }else if(finalResult.Equals("Registration Complete")){//We Registered Now Update Score PlayerPrefs.SetFloat("nameRegistered",1); PlayerPrefs.SetString("registeredName",name); }else{ runningHsServer = 0; status = finalResult; return; } } updating = 1; //We need to update entry now } //SEND OR UPDATE SCORE status = "Running"; //Run Again var hsFm : WWWForm = new WWWForm(); hsFm.AddField("table",table.databaseName); hsFm.AddField("name",name); hsFm.AddField("score",score); hsFm.AddField("updating",updating); hsFm.AddField("hash",GetHash(name)); var hs : WWW = new WWW(sendScoreURL,hsFm); yield hs; Debug.Log(hs.text+" : "+table.displayName); //Process Results if(hs.text.Contains("Accepted")){ //Update Score For Anti Spamming PlayerPrefs.SetFloat("sent"+table.playerPrefsName,PlayerPrefs.GetFloat(table.playerPrefsName)); if(newRegistration == 1){ status = "Registered & " + table.displayName +" Score Submitted"; }else{ status = "New "+ table.displayName +" Score Submitted"; } } //Stop Running runningHsServer = 0; yield new WaitForSeconds(1); //Wait A Second Before Synch SynchTable(); } function SynchTable(){//Update StartCoroutine(GetHighScores(difficultyModes[modeIndex].databaseName,currentScope,maxHighScores)); } function CheckName(usedName : String) : String{ //Make sure imput name is clean var names : String[] = badNamesList.text.Split('\n'[0]); for(var n : String in names){ if(usedName.Trim().ToLower().IndexOf(n.Trim().ToLower()) > -1){ return "offensive"; } } return "clean"; } function GetHash(usedString : String): String{ //Create a Hash to send to server var md5 : MD5 = MD5.Create(); var bytes : byte[] = Encoding.ASCII.GetBytes(usedString+secretKey); var hash : byte[] = md5.ComputeHash(bytes); var sb : String = ""; for(var i : int = 0; i < hash.Length; i++){ sb += hash[i].ToString("x2"); } return sb; } function Start(){ status = ""; runningHsServer = 0; runningTrack = 0; StopAllCoroutines(); //Name Operations if(existingNamePlayerPrefs != ""){ serverHighScoreName = PlayerPrefs.GetString(existingNamePlayerPrefs); } //Get Base startDifficultyMode = Mathf.Clamp(startDifficultyMode,0,difficultyModes.Length-1); //To avoid runtime errors modeIndex = startDifficultyMode; //Set Initial Settings scoreScopeText = scoreScope.allTimeName; currentScope = "AllTime"; //Get Scores SynchTable(); } function OnGUI(){ if(skin)GUI.skin = skin; //Set Base Rect baseRect = new Rect(Screen.width * .5F,Screen.height * .5F,100F,100F); //Update User Score // localScore = PlayerPrefs.GetFloat(difficultyModes[modeIndex].playerPrefsName); //Status Box if(displayOptions.showStatus){ GUI.Box(new Rect(baseRect.x - messageOffsetBox.x,baseRect.y - messageOffsetBox.y, messageOffsetBox.width,messageOffsetBox.height),status); } if(displayOptions.showUserScore){ //Local Score Box GUI.Box(new Rect(baseRect.x - localScoreOffsetRect.x,baseRect.y - localScoreOffsetRect.y,localScoreOffsetRect.width,localScoreOffsetRect.height) ,"Local "+difficultyModes[modeIndex].displayName+" Score : "+localScore+" "+scoreType); if(trackType == TrackingType.TrackProgress){ if(PlayerPrefs.GetFloat("nameRegistered") == 1){ if(runningTrack == 0){ GUI.Box(new Rect(baseRect.x - serverScoreOffsetRect.x,baseRect.y - serverScoreOffsetRect.y,serverScoreOffsetRect.width,serverScoreOffsetRect.height) ,"Global "+difficultyModes[modeIndex].displayName+" Score : "+serverScore+" "+scoreType +"\n" + "Global Rank: "+serverRank); }else{ GUI.Box(new Rect(baseRect.x - serverScoreOffsetRect.x,baseRect.y - serverScoreOffsetRect.y, serverScoreOffsetRect.width,serverScoreOffsetRect.height),"Seeking Stats"); } }else{ GUI.Box(new Rect(baseRect.x - serverScoreOffsetRect.x,baseRect.y - serverScoreOffsetRect.y, serverScoreOffsetRect.width,serverScoreOffsetRect.height),"Send Score To Register"); } } } if(displayOptions.showDifficultySwitch){ //Get & Show High Scores if(GUI.Button(new Rect(baseRect.x - getScoresOffsetRect.x,baseRect.y - getScoresOffsetRect.y, getScoresOffsetRect.width,getScoresOffsetRect.height),""+difficultyModes[modeIndex].displayName)){ if(modeIndex < difficultyModes.Length - 1){ modeIndex++; }else{modeIndex = 0;} //Update StartCoroutine(GetHighScores(difficultyModes[modeIndex].databaseName,currentScope,maxHighScores)); localScore = PlayerPrefs.GetFloat(difficultyModes[modeIndex].playerPrefsName); } } if(displayOptions.showScopeSwitch){ //Set Scope if(GUI.Button(new Rect(baseRect.x - scoreScopeOffsetRect.x,baseRect.y - scoreScopeOffsetRect.y, scoreScopeOffsetRect.width,scoreScopeOffsetRect.height),""+scoreScopeText)){ if(scoreScopeText.Equals(scoreScope.allTimeName)){ scoreScopeText = scoreScope.dailyName; currentScope = "Daily"; }else{ scoreScopeText = scoreScope.allTimeName; currentScope = "AllTime"; } StartCoroutine(GetHighScores(difficultyModes[modeIndex].databaseName,currentScope,maxHighScores)); } } if(displayOptions.showSendScore){ //Send Scores GUILayout.BeginArea(new Rect(baseRect.x - sendScoresOffsetRect.x,baseRect.y - sendScoresOffsetRect.y, sendScoresOffsetRect.width,sendScoresOffsetRect.height)); GUILayout.BeginHorizontal(); if(trackType == TrackingType.TrackProgress && PlayerPrefs.GetFloat("nameRegistered") == 1){ serverHighScoreName = PlayerPrefs.GetString("registeredName"); GUILayout.Box(serverHighScoreName,GUILayout.Width(150),GUILayout.Height(30)); }else{ serverHighScoreName = GUILayout.TextField(serverHighScoreName,GUILayout.Width(150)); } if(GUILayout.Button("Send")){ StartCoroutine(SendHighScores(difficultyModes[modeIndex],serverHighScoreName,localScore,difficultyModes)); } GUILayout.EndHorizontal(); GUILayout.EndArea(); } //Display Scores if(displayOptions.showScores){ GUILayout.BeginArea(new Rect(baseRect.x - scoresListOffsetRect.x,baseRect.y - scoresListOffsetRect.y, scoresListOffsetRect.width,scoresListOffsetRect.height)); scrollView = GUILayout.BeginScrollView(scrollView); for(var x : int = 1;x<serverHighScores.Length;x++){ if(x > maxHighScores){break;} if(serverHighScores[x] != null){ var score : String[] = serverHighScores[x].Split(':'[0]); //Split the Score From PHP set Up if(score.Length > 1){ GUILayout.BeginHorizontal(); GUILayout.Label(x.ToString()+": "); GUILayout.Space(10); GUILayout.Label(score[0],GUILayout.Width(200),GUILayout.Height(30)); GUILayout.FlexibleSpace(); GUILayout.Label(score[1]+" "+scoreType,GUILayout.Width(150),GUILayout.Height(20)); GUILayout.EndHorizontal(); } }else{ GUILayout.Label(serverHighScores[x] +" "+scoreType,GUILayout.Width(100)); } } GUILayout.EndScrollView(); GUILayout.EndArea(); } //Editor Tools if(developmentMode == DeveloperType.debug){ EditorTools(); } } function EditorTools(){ GUILayout.BeginHorizontal(); GUILayout.Label("",GUILayout.Width(Screen.width - 230)); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(); GUILayout.Space(100); GUILayout.Box("CREATE",GUILayout.Width(200)); if(GUILayout.Button("Create Tables",GUILayout.Width(200))){ StartCoroutine(DatabaseTools(0,difficultyModes)); } GUILayout.Box("MANAGE",GUILayout.Width(200)); if(GUILayout.Button("Reset All "+difficultyModes[modeIndex].displayName,GUILayout.Width(200))){ StartCoroutine(ResetHighScores(difficultyModes[modeIndex].databaseName,"Reset")); } if(GUILayout.Button("Delete All "+difficultyModes[modeIndex].displayName,GUILayout.Width(200))){ StartCoroutine(ResetHighScores(difficultyModes[modeIndex].databaseName,"Delete")); } if(GUILayout.Button("Delete Below Score: " +difficultyModes[modeIndex].displayName ,GUILayout.Width(200))){ StartCoroutine(DatabaseTools(1,difficultyModes[modeIndex].databaseName)); } GUILayout.BeginHorizontal(); GUILayout.Box(""+deleteScore,GUILayout.Width(50)); // deleteScore = Mathf.CeilToInt(GUILayout.HorizontalSlider(deleteScore,1,maxResetScore,GUILayout.Width(150))); GUILayout.EndHorizontal(); // if(GUILayout.Button("Delete Below Date: "+difficultyModes[modeIndex].displayName,GUILayout.Width(200))){ StartCoroutine(DatabaseTools(2,difficultyModes[modeIndex].databaseName)); } GUILayout.BeginHorizontal(); GUILayout.Label(""+year,GUILayout.Width(30)); // year = Mathf.CeilToInt(GUILayout.HorizontalSlider(year,2012,2013,GUILayout.Width(30))); GUILayout.Label(""+month,GUILayout.Width(20)); // month = Mathf.CeilToInt(GUILayout.HorizontalSlider(month,1,12,GUILayout.Width(40))); GUILayout.Label(""+day,GUILayout.Width(20)); // day = Mathf.CeilToInt(GUILayout.HorizontalSlider(day,1,31,GUILayout.Width(40))); GUILayout.EndHorizontal(); GUILayout.Box("TEST DATA",GUILayout.Width(200)); if(GUILayout.Button("Null Registration",GUILayout.Width(200))){ PlayerPrefs.SetFloat("nameRegistered",0); PlayerPrefs.SetString("registeredName",""); } // GUILayout.BeginHorizontal(); GUILayout.Box("Score: "+PlayerPrefs.GetFloat(difficultyModes[modeIndex].playerPrefsName),GUILayout.Width(100)); PlayerPrefs.SetFloat(difficultyModes[modeIndex].playerPrefsName,Mathf.CeilToInt(GUILayout.HorizontalSlider(PlayerPrefs.GetFloat(difficultyModes[modeIndex].playerPrefsName),1,maxResetScore,GUILayout.Width(100)))); GUILayout.EndHorizontal(); // GUILayout.EndVertical(); GUILayout.EndHorizontal(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Flechaus Postado Outubro 8, 2015 Denunciar Share Postado Outubro 8, 2015 Entendi que é isso:insert into tabela(score) values(2431.166);Mas para que isto aconteça você deve mudar a estrutura de sua tabela para que aceite 3 casas decimais e 10 na parte inteira.alter table tabela modify column score decimal(10,3); Denis, creio que ouve um equívoco no seu post.No MySQL 5.1, para que se tenha um campo decimal que permita 10 números na parte inteira e 3 na parte decimal, deve ser dimensionado da seguinte forma: decimal(13,3)Conforme consta no link abaixo:http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-characteristics.htmlUm abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nabilfx
tenho um valor float de resultado de score 2431.166 como faço para insert o ponto e o restando da pontuação no mysql.
Estou usando
Editado por nabilfx
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.