guirelvas Posted April 15, 2013 at 07:10 PM Report #503291 Posted April 15, 2013 at 07:10 PM (edited) Boa tarde, Estou a desenvolver um jogo que se pede ao utilizador vários dados(Nome da Personagem, Raça). Esses dados são introduzidos numa Base de Dados que eu já criei através do registo e são confirmados quando feito o login para respetiva entrada no jogo. Cada utilizador tem um perfil com as suas características, convém notar que as características são as mesmas por cada utilizador. Eu já inseri os dados na base de dados mysqli: "jogador" O problema que eu estou a tentar resolver é que não escreve os dados na página do perfil, ou seja, esta fica em branco, no entanto, ainda não consegui identificar a razão de tal motivo. Eu tenho duas alternativas, mas nenhuma delas deu: uma é esta: O código do perfil é este: <?php include("conectar.php"); mysqli_query("Use jogador"); session_start(); $sql = "SELECT * FROM registo ORDER BY IdJogador ASC"; $rs = mysqli_query($sql); If($rs) { while($row = mysqli_fetch_array($rs)) { $IdJogador = $row["IdJogador"]; echo $IdJogador; } } else echo "<script>alert('O login não foi realizado com sucesso!');</script>"; ?> Outra é: <?php include ("conectar.php"); mysqli_query("Use jogador"); session_start(); if ($_SESSION["Login"][0] = "YES") { $a = $_SESSION['Login'][1]; $b = $_SESSION['Login'][2]; $sql = "SELECT IdJogador FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysql_query($sql); $row = mysql_fetch_array($rs); echo "Nome: " . $row["NomePersonagem"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Ano: " . $row["ano"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Mês: " . $row["mes"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Dia: " . $row["dia"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Dinheiro: " . $row["dinheiro"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Energia: " . $row["Energia"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Força: " . $row["Forca"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Defesa: " . $row["Defesa"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Agilidade: " . $row["Agilidade"] . "<br/>"; $sql = "SELECT ano FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); $row = mysqli_fetch_array($rs); echo "Velocidade: " . $row["Velocidade"] . "<br/>"; } else echo "<script>alert('O login não foi realizado com sucesso!');</script>"; ?> Edited April 15, 2013 at 07:16 PM by pmg GeSHi
pbs Posted April 15, 2013 at 07:35 PM Report #503293 Posted April 15, 2013 at 07:35 PM Na primeira alternativa, fazer um print_r( $row ); para ver o que a array contém, e para verificar se contém mesmo algo.. Verificar sempre todos os passos, a ligação é feita com sucesso à BD? Qual a estrutura da BD? Os nomes coincidem? Ainda outra questão, eu usava o mysql_fetch_assoc, que sei que retorna $array['NOME_DO_CAMPO'] Lendo sobre mysqli_fetch_array: /* numeric array */ $row = mysqli_fetch_array($result, MYSQLI_NUM); printf ("%s (%s)\n", $row[0], $row[1]); /* associative array */ $row = mysqli_fetch_array($result, MYSQLI_ASSOC); printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); /* associative and numeric array */ $row = mysqli_fetch_array($result, MYSQLI_BOTH); printf ("%s (%s)\n", $row[0], $row["CountryCode"]); que tem um segundo argumento que permite definir o tipo de array retornada: http://php.net/manual/en/mysqli-result.fetch-array.php Atualmente trabalho com PDO.
N3lson Posted April 15, 2013 at 07:39 PM Report #503295 Posted April 15, 2013 at 07:39 PM (edited) Eu tb sou iniciante mas não percebi o que isso faz mysqli_query("Use Jogador"); Mas coloca isto no inicio do script para forçar os erros a aparecer, pois se aparece em branco está a dar erro. <?php ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ?> Opinião pessoal Reparei que estás a fazer muitas querys desnecessárias, e que poderias recolher esses dados através de while loop $sql = "SELECT * FROM registo where NomePersonagem = '$a' and Password = '$b'"; $rs = mysqli_query($sql); while ($row = mysqli_fetch_array($rs)){ echo "Força: " . $row["Forca"] . "<br/>"; echo "Energia: " . $row["Energia"] . "<br/>"; //resto dos registos a retornar } Edited April 15, 2013 at 07:45 PM by N3lson You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.
HappyHippyHippo Posted April 15, 2013 at 08:30 PM Report #503300 Posted April 15, 2013 at 08:30 PM mysqli_query("Use Jogador"); é a forma DB side de dizer qual a base de dados a usar SELECT ano FROM ... todos os teus select's retornam um único campo, "ano". segue o conselho do @N3lson e usa o '*' para retornar todos os campos do query (caso te sintas lazy) ou faz a projecção de todos os campos que pretendes de uma vez, declarando-os na query, mas com os nomes correctos 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now