Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

guirelvas

Perfil de utilizador em php

Recommended Posts

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

Edited by pmg
GeSHi

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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
}

Edited 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.

Share this post


Link to post
Share on other 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

  • Vote 1

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.