Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

guirelvas

Perfil de utilizador em php

Mensagens Recomendadas

guirelvas

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>";
?>

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pbs

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

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
}

Editado por 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.