Ir ao conteúdo
  • Cadastre-se

Insurgent3

Membros Plenos
  • Total de itens

    30
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

7

1 Seguidor

Informações gerais

  • Cidade e Estado
    Cidade
  • Sexo
    Masculino

Outros

  • Ocupação
    Estudante
  1. Olá, Estou apanhando do Javascript mas sigo em frente. Porém estou precisando de ajuda. Estou seguindo este tutorial pra criar um mapa renderizado na tela que carrega as imagens baseado em uma matriz: https://www.creativebloq.com/html5/build-tile-based-html5-game-31410992 A demo em funcionamento pode ser vista aqui: http://dan.nea.me/tile-based-games-demo/ E neste link pode ser baixado o source completo: http://dan.nea.me/tile-based-games/ O problema é que mesmo seguindo o tutorial, eu não estou conseguindo entender como usar as classes e funções do Javascript. Por enquanto pra mim ta meio obscuro a sintaxe complexa do Javascript. Eu consegui renderizar o mapa. Até aí tudo bem. Eu então adicionei um código simples que gerencia os cliques e posições do mouse. Até aqui tudo bem. Agora a questão fica em como chamar as funções do framework "Agent.js", "Joystix.js" e "KeyboardController.js" no Javascript pra passar as coordenadas do mouse pro sprite. É isso que quero fazer até o momento. Alguém pode me ajudar? Vou passar aqui o que tenho. Código que renderiza o mapa: <html> <head> <title>Site</title> <link rel="stylesheet" media="screen" href="css/normalise.css"></link> <link rel="stylesheet" media="screen" href="css/canvases.css"></link> <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="js/lib/underscore-min-1.4.3.js"></script> <script type="text/javascript" src="js/lib/toolbox.js"></script> <script data-main="js/main" src="js/lib/require.js"></script> <script type="text/javascript" src="js/track.js"></script> <script type="text/javascript" src="js/KeyboardController.js"></script> <script type="text/javascript" src="js/Joystix.js"></script> <script src="js/jquery-3.3.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $('html').mousemove(function(event){ console.log("mouse move X:"+event.pageX+" Y:"+event.pageY); }); // AQUI NO EVENTO DE CLICK DO MOUSE NA TELA ESTOU TENTANDO MOVIMENTAR O PERSONAGEM $('html').click(function(event){ require(['js/Joystix'], function(Joystix){ joystix.onMove(function(movement){ player.doMove(movement.x1 * 0.01, movement.y1 * 0.01); }); console.log("mouse click X:"+event.pageX+" Y:"+event.pageY); }); }); $('html').keyup(function(event){ console.log("keyboard event: key pressed "+event.keyCode); }); }); </script> </head> <body> </body> </html> E as demais classes que não estou sabendo como instanciar as classes e usar os métodos das classes. Ainda não me acostumei com a sintaxe do Javascript. main.js /* main.js file */ require(['lib/DependencyLoader', 'BackgroundRenderer', 'CharacterRenderer', 'CollisionMap', 'Agent', 'Mob', 'Tileset', 'Joystix'], function(DependencyLoader, BackgroundRenderer, CharacterRenderer, CollisionMap, Agent, Mob, Tileset, Joystix){ 'use strict'; var map = [ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], [3,0,0,0,0,2,1,3,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], [3,0,0,0,2,1,3,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], [3,0,0,0,2,3,0,0,2,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,2,3,0,0,0,0,0,2], [3,0,0,0,2,3,0,0,2,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], [3,0,0,0,2,3,0,0,0,0,2,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,2], [3,0,0,0,0,0,0,0,0,0,0,2,1,3,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,2], [3,0,0,0,0,0,0,0,0,0,2,1,3,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], [3,0,0,0,0,0,0,0,0,0,2,3,0,0,0,2,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1], [3,0,0,0,2,3,0,0,0,0,2,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1], [3,0,0,0,0,0,0,0,0,0,2,3,0,0,2,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1], [3,0,0,0,0,0,0,0,0,2,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,2,1,1,1,1,1], [3,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,2,1,1,1,3,0,0,0,0,0,2,1,1,1,1,1,1,1], [3,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1], [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] ], tileSize = 24, $body = $('body'), $window = $(window), $canvas, canvases = [], bgRenderer, characterRenderer, joystick = new Joystix({ //assumeTouch: true, $window: $(window), keyboardSpeed: 10 }), spritesToLoad = 2, bgTileset = new Tileset({ spritePath: 'img/sf2-map.png', specPath: 'spec/sf2-map.json', onReady: loadCb }), player = new Agent({ position: {x:1,y:1}, collision: new CollisionMap({ map: map }), tileset: new Tileset({ spritePath: 'img/sf2-characters.png', specPath: 'spec/sf2-characters.json', onReady: loadCb }) }), monster = new Mob({ position: {x:20,y:10}, collision: new CollisionMap({ map: map }), tileset: new Tileset({ spritePath: 'img/sf2-characters.png', specPath: 'spec/sf2-goblin.json', onReady: loadCb }), targetAgent: player }), monster2 = new Mob({ position: {x:24,y:7}, collision: new CollisionMap({ map: map }), tileset: new Tileset({ spritePath: 'img/sf2-characters.png', specPath: 'spec/sf2-goblin.json', onReady: loadCb }), targetAgent: player }), monster3 = new Mob({ position: {x:20,y:4}, collision: new CollisionMap({ map: map }), tileset: new Tileset({ spritePath: 'img/sf2-characters.png', specPath: 'spec/sf2-goblin.json', onReady: loadCb }), targetAgent: player }); function loadCb(){ spritesToLoad--; if(!spritesToLoad){ run(); } } function run(){ // build layers _(4).times(function(i){ $canvas = $('<canvas width="'+(map[0].length * tileSize)+'" height="'+(map.length * tileSize)+'" data-index="'+i+'" class="gamecanvas canvas'+i+'"/>'); $body.append($canvas); canvases.push($canvas); }); // start renderers bgRenderer = new BackgroundRenderer({ $el: canvases[1], map: map, tileSet: bgTileset, tileSize: tileSize }); characterRenderer = new CharacterRenderer({ $el: canvases[2], tileSize: tileSize, agents: [ player, monster, monster2, monster3 ] }); // input joystick.onMove(function(movement){ player.doMove(movement.x1 * 0.01, movement.y1 * 0.01); }); // run game function gameLoop(){ characterRenderer.draw(); monster.chooseAction(); monster2.chooseAction(); monster3.chooseAction(); window.requestAnimationFrame(gameLoop); } gameLoop(); centerCanvases(); } // resize function centerCanvases(){ _(canvases).each(function($canvas){ $canvas.css({ top: ($window.height() - $canvas.height())/2 }); }); } $window.resize(_.throttle(centerCanvases,250)); }); Joystix.js define(['lib/Modernizr.2.6.2-touch', 'gamepadSupport', 'MultiTouchJoystick', 'KeyboardController', 'lib/requestAnimationFrame'], function(Modernizr, gamepadSupport, MultiTouchJoystick, KeyboardController){ 'use strict'; function Joystix(opts){ this.$window = opts.$window; this.moveCb = function(){}; this.buttonCb = function(){}; this.numButtons = 15; this.keyboardSpeed = opts.keyboardSpeed || 5; this.assumeTouch = !!opts.assumeTouch; gamepadSupport.init(); gamepadSupport.startPolling(); MultiTouchJoystick.init(this.$window.width(), this.$window.height()); KeyboardController.init(this.$window); this.poll(); } Joystix.prototype.onMove = function(cb){ this.moveCb = cb; }; Joystix.prototype.onButtonPress = function(cb){ this.buttonCb = cb; }; Joystix.prototype.getMovementForGamepad = function(axesStatus){ return { x1: axesStatus[0], y1: axesStatus[1], x2: axesStatus[2], y2: axesStatus[3] }; }; Joystix.prototype.getMovementForMultiTouch = function(xy){ return { x1: xy.x, y1: xy.y, x2: 0, y2: 0 }; }; Joystix.prototype.getMovementForKeyboard = function(movementStatus){ var x = movementStatus.RIGHT ? this.keyboardSpeed : (movementStatus.LEFT ? -this.keyboardSpeed : 0), y = movementStatus.DOWN ? this.keyboardSpeed : (movementStatus.UP ? -this.keyboardSpeed : 0); return { x1: x, y1: y, x2: 0, y2: 0 }; }; Joystix.prototype.getButtonPressForMultiTouch = function(isPressed){ var buttonArray = []; _(this.numButtons).times(function(){ buttonArray.push(false); }); buttonArray[0] = isPressed; return buttonArray; }; Joystix.prototype.getButtonsForKeyboard = function(isPressed){ var buttonArray = []; _(this.numButtons).times(function(){ buttonArray.push(false); }); buttonArray[0] = isPressed; return buttonArray; }; Joystix.prototype.poll = function(){ var self = this; function loop(){ var status; if(gamepadSupport.gamepads.length){ status = gamepadSupport.getStatus(); self.moveCb(self.getMovementForGamepad(status.movedAxes)); self.buttonCb(status.buttonPresses); }else if((Modernizr && Modernizr.touch) || self.assumeTouch){ self.moveCb(self.getMovementForMultiTouch(MultiTouchJoystick.getMovementIntent())); self.buttonCb(self.getButtonPressForMultiTouch(MultiTouchJoystick.getButtonPress())); }else{ self.moveCb(self.getMovementForKeyboard(KeyboardController.getMovement())); self.buttonCb(self.getButtonsForKeyboard(KeyboardController.getButtonPress())); } window.requestAnimationFrame(loop); } loop(); }; return Joystix; }); Agent.js define(function(){ return Toolbox.Base.extend({ constructor: function(options){ this.position = options.position || {x:0,y:0}; this.collision = options.collision; this.tileset = options.tileset; }, doMove: function(moveX,moveY){ this.position.x = this.collision.getPosition(0, this.position.x, this.position.y, moveX); this.position.y = this.collision.getPosition(1, this.position.x, this.position.y, moveY); }, setPosition: function(pos){ pos = pos || {}; this.position.x = pos.x || 0; this.position.y = pos.y || 0; }, getSprite: function(){ return this.tileset.sprite; }, getTileId: function(){ return (Math.floor(new Date().getTime()/500)%2) ? 'standing' : 'standing_alt'; }, getTileSpec: function(){ return this.tileset.tileSpec; } }); }); A classe main.js renrediza o mapa e inicializa variáveis. A classe Joystix.js gerencia os eventos de teclas. A classe Agent.js gerencia a criação e posição do personagem. Estou pegando a posição x e y do mouse e quero a princípio que o personagem principal mova-se para a posição do clique do mouse ao invés de usar as setas do teclado que é o padrão do framework. Estou pedindo ajuda em foruns de desenvolvimento de jogos mas no Brasil a maioria está jogada as traças infelizmente, muito abandonados. Então resolvi pedir ajuda aqui pois esse framework muito me interessa a aprender e programá-lo. Muito obrigado por qualquer ajuda.
  2. Meu notebook penso que veio com defeito ou sem placa de rede wifi. Acredite, nem Linux que configura tudo certinho funciona o Wifi aqui. Já testei muita coisa e SO's diferentes. O computador é um "Win". Comprei pela internet. Se precisar de mais detalhes pego mais informações... SO que estou usando nele agora é Windows 7 Ultimate. Sempre tem os prós e contras de hardwares. Olhe... Placas USB Alguma recomendação pra não ter dor de cabeça? Obrigado.
  3. Olá, Venho aqui pedir sugestão de placas de rede wifi. Meu notebook, desde que comprei(pela internet), não funciona o Wifi dele. Creio eu que não tenha placa de rede wifi. Já comprei uma placa de rede azul pequena parecendo um pendrive, mas não funcionou, mesmo instalando o driver. Alguém saberia recomendar uma boa placa de rede, USB, para notebook? (Pode ser com antela do lado, não importa, mas desde que funcione). No notebook a internet só funciona com cabo conectado. A rede wifi está funcionando normalmente pra outros dispositivos. Obrigado.
  4. Olá, Eu tenho um código que insere dados no banco de dados usando um WHILE. A listagem dos dados a inserir está certinha, pois conferi com o "echo". Porém o laço somente insere os dados da primeira contagem do laço. Não sei o porque. E ele está gerando um ID auto incremetado (e chave primária) com os valores 101,201,301,401 a cada teste que faço, sendo que era para gerar 1,2,3,4... Alguém tem ideia do que pode estar acontecendo? Segue o códido: // Grava a nova cidade no banco de dados $exe_queryFundarPrimeiraCidade = mysqli_query($conexao,$sql_queryFundarPrimeiraCidade) or die("Falha inserindo gravando nova cidade. Erro: ".mysqli_error($conexao)); // Seleciona o ID recem gravado da nova cidade $sql_retornoIdFundarPrimeiraCidade = "SELECT LAST_INSERT_ID()"; $exe_retornoIdFundarPrimeiraCidade = mysqli_query($conexao,$sql_retornoIdFundarPrimeiraCidade); // Retorna o ID da query acima(Primeira cidade fundada e inserida no banco de dados) $idPrimeiraCidade = mysqli_fetch_array($exe_retornoIdFundarPrimeiraCidade); $idPrimeiraCidadeVar = $idPrimeiraCidade[0]; //echo "Id da cidade gerada: " . @ID; for($x=1;$x<=10;$x++) { for($y=1;$y<=10;$y++) { echo "<br><br><br>"; echo "ID da Cidade: ".$idPrimeiraCidadeVar; echo "<br>Pos X: " .$x; echo "<br>Pos Y: " .$y; $terrenoGerado = rand(1,11); echo "<br>Tipo do terreno: ". $terrenoGerado; $sql_geraMapaNovaCidade = "INSERT INTO mapacidade(idCidade,posX,posY,tipoTerreno) VALUES('$idPrimeiraCidadeVar','$x','$y','$terrenoGerado')"; $exe_geraMapaNovaCidade = mysqli_query($conexao,$sql_geraMapaNovaCidade); } } Nesta parte do código ele insere os dados e está inserindo somente o conteúdo do primeiro laço: $sql_geraMapaNovaCidade = "INSERT INTO mapacidade(idCidade,posX,posY,tipoTerreno) VALUES('$idPrimeiraCidadeVar','$x','$y','$terrenoGerado')"; $exe_geraMapaNovaCidade = mysqli_query($conexao,$sql_geraMapaNovaCidade); Pensei em ter algum campo errado, como a chave primária não estar bem definida ou sem o "auto increment" implementado, mas está tudo definido e implementado, creio eu, corretamente. Obrigado. === EDIT === Consegui resolver. Estava tendo problemas com a chave estrangeira da tabela "cidades". Deletei a chave estrangeira e adicionei uma nova com o comando: ALTER TABLE 'mapacidade' ADD CONSTRAINT `fk_cidadePertencente` FOREIGN KEY ( `idCidade` ) REFERENCES `cidades` ( `cidadeId` ); Resolveu. Obrigado.
  5. Amigo, Estou te enviando um código que talvez lhe seja útil. É um contador em Javascript que consegui elaborar pesquisando na internet muita coisa a respeito de contadores. Ele adiciona 3 pontos de "turnos" a cada 60 segundos. É um contador também. Basta ver as funções que te agrada e implementar no seu código ou pesquisar na internet como a função " window.setInterval('atualizar()',1000)" que está no código. Segue o código: <html> <head> <title>Título</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <style type="text/css"> .texto {color:#B000FF;} .static { position:static; } .contador { position: relative; top: 0px; left: 30px; background-color: black; color: white; width: 130px; height: 30px; } .PalavraTempo { position: relative; position: center; top: 70px; left: 30px; background-color: black; color: white; width: 130px; height: 30px; } .TurnosDisponiveis { position: relative; position: center; top: 100px; left: 30px; background-color: black; color: white; width: 130px; height: 30px; } .Turnos { position: relative; position: center; top: 100px; left: 30px; background-color: black; color: white; width: 130px; height: 30px; } .Turno { position: relative; position: center; top: 130px; left: 30px; background-color: black; color: white; width: 130px; height: 30px; } .php { position: relative; position: center; top: 100px; left: 30px; background-color: black; color: white; width: 130px; height: 30px; } </style> <script>var intervalo = window.setInterval('funcao()',1000); var contador = 0; var Turno = 0; function funcao() { while (contador <= 60) { if (contador == 60) { contador = 0; Turno = Turno + 3; break; } elementosHTML = document.getElementsByClassName('contador'); elementosHTML[0].innerHTML = ' ' + ' ' +contador; turnosHTML = document.getElementsByClassName('Turnos'); turnosHTML[0].innerHTML = ' ' +Turno + ''; contador++; break; } } </script> <script>var atualizacao = window.setInterval('atualizar()',1000); function atualizar() { <?php $Turnos = '<script> document.write(Turno);</script>'; ?> window.location.refresh(); } </script> </head> <?php //$Turnos = 0; ?> <body> <div class="PalavraTempo"> Tempo </div> <div class="TurnosDisponiveis"> Turnos Disponíveis: </div> <div class="Turnos"> </div> <div class="Turno"> <?php //echo "<script>atualizar();</script>"; echo $Turnos; ?> </div> <div class="contador"> </body> </html> Muita gente que li, diz que não é possível implementar um "contador" em PHP e Javascript. Eu consegui chegar a este código acima(basta copiar e colar e executar no navegador). E tem outras funções como "sleep()" do PHP pra congelar o tempo, que junto com um laço "while" do PHP poderia ser utilizada pra fazer um contador. Abraços.
  6. Olá, Eu gostaria de pegar o ID da query que foi recém-inserida no banco de dados. Pra isso, eu descobri que a função LAST_INSERT_ID() do MySQL retorna o ID (chave primária auto_increment) de uma query recém inserida ou feito update no banco de dados. O problema é que vi alguns exemplos e não estou sabendo ainda como usar esta função no PHP. Segue meu código tentando utilizá-la para retornar o ID de uma cidade recém-cadastrada no banco de dados: $sql_queryFundarPrimeiraCidade = "INSERT INTO cidades(nomeCidade,idDono) VALUES('".$nomeCidade."','".$idUsuarioAtualSession."')"; // Grava a nova cidade no banco de dados $exe_queryFundarPrimeiraCidade = mysqli_query($conexao,$sql_queryFundarPrimeiraCidade) or die("Falha inserindo gravando nova cidade. Erro: ".mysqli_error($conexao)); // Seleciona o ID recem gravado da nova cidade $sql_retornoIdFundarPrimeiraCidade = "SELECT LAST_INSERT_ID();"; $exe_retornoIdFundarPrimeiraCidade = mysqli_query($conexao,$sql_retornoIdFundarPrimeiraCidade); // Retorna o ID da query acima(Primeira cidade fundada e inserida no banco de dados) $idPrimeiraCidade = mysqli_fetch_array($exe_retornoIdFundarPrimeiraCidade); //echo "Id da cidade gerada: " . @ID; for($x=1;$x<=10;$x++) { for($y=1;$y<=10;$y++) { echo "<br><br><br>"; echo "ID da Cidade: ".$idPrimeiraCidade['cidadeId']; echo "<br>Pos X: " .$x; echo "<br>Pos Y: " .$y; echo "<br>Tipo do terreno: ". rand(1,11); } } Os echo's imprimem tudo corrtamente menos a "ID da Cidade" que é o que estou tentando pegar do banco de dados da query insert recém-inserida. Não sei como utilizar essa função. Alguém pode ajudar? Obrigado. === EDIT === Consegui. Segue o código que permitiu recuperar e mostrar o ID recém inserido: echo "ID da Cidade: ".$idPrimeiraCidade[0]; Um array com a posição "0"(zero). O código funcionou e mostrou o ID gerado e recém-inserido no banco de dados. Obrigado.
  7. Olá, Estou um pouco confuso tentando fazer um sistema para um jogo web browser pessoal. Estou tendo problemas para chamar a MESMA página mas com ações diferentes. Eu chamo aqui a página (no MENU): <nav id="menu"> <center> <ul> <li><a href="principal.php?action=processa">Inicial<a></li> // <- AQUI <li><a href="cidades.php">Cidades<a></li> <li><a href="construcoes.php">Construções<a></li> <li><a href="unidades.php">Unidades<a></li> <li><a href="recursos.php">Recursos<a></li> </ul> </center> E tem um FORMULÁRIO la embaixo pra criar uma nova cidade caso o usuário não tenha fundado nenhuma cidade ainda. Este formulário chama também a página principal mas pelo MÉTODO POST: "<form id='formCriarPrimeiraCidade' name='formCriarPrimeiraCidade' method='post' action='principal.php?action=fundarPrimeiraCidade'> O código completo está aqui: <?php $acao = $_GET['action']; if ($acao == 'processa') { include("restrito.php"); include("config.php"); $login_username = $_SESSION['login']; $sql_busca = "SELECT * FROM user WHERE login = '$login_username'"; $exe_busca = mysqli_query($conexao, $sql_busca) or die (mysql_error()); $fet_busca = mysqli_fetch_array($exe_busca); ?> <!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=iso-8859-1" /> <title>Sistema</title> <style type="text/css"> #menu ul { padding:3px; margin:10px; background-color:#EDEDED; list-style:none; float: left; width: 800px; } #menu ul li{ display: inline; margin: 40px; } #menu ul li a{ padding: 2px; display: inline-block; } </style> </head> <body> Ola <?php echo $fet_busca['login'];?>. <br> <a href="logout.php">Logout</a> <nav id="menu"> <center> <ul> <li><a href="principal.php?action=processa">Inicial<a></li> <li><a href="cidades.php">Cidades<a></li> <li><a href="construcoes.php">Construções<a></li> <li><a href="unidades.php">Unidades<a></li> <li><a href="recursos.php">Recursos<a></li> </ul> </center> </nav <div id="painelPrincipal"> <?php // Selecionar ID do usuario atual if (isset($_SESSION['login'])) { echo $_SESSION['id']; echo $_SESSION['login']; } $idUsuarioAtualSession = $_SESSION['id']; // Verificar se tem alguma cidade com o ID atual $queryIdUsuarioAtual = "SELECT * FROM cidades WHERE id = 'idUsuarioAtualSession';"; $exe_queryIdUsuarioAtual = mysqli_query($conexao,$queryIdUsuarioAtual); $count_queryIdUsuarioAtual = mysqli_num_rows($exe_queryIdUsuarioAtual); // Se tiver cidade, chama a principal listando a cidade if ($count_queryIdUsuarioAtual >= 1) { while($fetch_queryIdUsuarioAtual = mysqli_fetch_array($exe_queryIdUsuarioAtual)) { echo "<br>"; echo "Cidade ID: " . $fetch_queryIdUsuarioAtual['cidadeId']; echo "Nome ID: " . $fetch_queryIdUsuarioAtual['nomeCidade']; echo "Id dono da cidade: " . $fetch_queryIdUsuarioAtual['id']; } } else { // Se nao tiver cidade, chama a principal com um formulario para criar a primeira cidade echo "<form id='formCriarPrimeiraCidade' name='formCriarPrimeiraCidade' method='post' action='principal.php?action=fundarPrimeiraCidade'> <td colspan='2'><div align='center'><strong>Criar primeira cidade</strong></div></td> Nome da cidade: <input name='nomePrimeiraCidade' type='text' id='nomePrimeiraCidade'> <input type='submit' name='Submit' value='Fundar primeira cidade' /> </form>"; $acao = $_POST['action']; // Recebe a ação do formulário 'Fundar primeira cidade' if ($acao == "fundarPrimeiraCidade") { $sql_queryFundaPrimeiraCidade = "INSERT INTO cidades(nomeCIdade,id) VALUES('" . $_POST['nomePrimeiraCidade'] ."','" . $fetch_queryIdUsuarioAtual['cidadeId']; echo "');"; } } ?> </div> </body/> </html> <?php } ?> Mas estou tendo problemas, creio eu na minha lógica, para processar essas ações diferentes na mesma página. O erro que estou tendo é: Que se refere a esta linha logo no começo: $acao = $_GET['action']; Minha lógica esta um pouco bagunçada. Se alguém puder ajudar. O que quero fazer é listar na página principal as cidades do usuário caso ele tenha alguma MAS caso ele não tenha nenhuma, na mesma página aparecerá um formulário para ele criar a primeira cidade. Obrigado. === EDIT === Resolvido. O código funcionando está aqui: <?php include("restrito.php"); include("config.php"); $login_username = $_SESSION['login']; $sql_busca = "SELECT * FROM user WHERE login = '$login_username'"; $exe_busca = mysqli_query($conexao, $sql_busca) or die (mysql_error()); $fet_busca = mysqli_fetch_array($exe_busca); ?> <!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=iso-8859-1" /> <title>Sistema</title> <style type="text/css"> #menu ul { padding:3px; margin:10px; background-color:#EDEDED; list-style:none; float: left; width: 800px; } #menu ul li{ display: inline; margin: 40px; } #menu ul li a{ padding: 2px; display: inline-block; } </style> </head> <body> Ola <?php echo $fet_busca['login'];?>. <br> <a href="logout.php">Logout</a> <nav id="menu"> <center> <ul> <li><a href="principal.php?action=processa">Inicial<a></li> <li><a href="cidades.php">Cidades<a></li> <li><a href="construcoes.php">Construções<a></li> <li><a href="unidades.php">Unidades<a></li> <li><a href="recursos.php">Recursos<a></li> </ul> </center> </nav <div id="painelPrincipal"> <?php // Selecionar ID do usuario atual if (isset($_SESSION['login'])) { echo $_SESSION['id']; echo $_SESSION['login']; } $idUsuarioAtualSession = $_SESSION['id']; // Verificar se tem alguma cidade com o ID atual $queryIdUsuarioAtual = "SELECT * FROM cidades WHERE id = 'idUsuarioAtualSession';"; $exe_queryIdUsuarioAtual = mysqli_query($conexao,$queryIdUsuarioAtual); $count_queryIdUsuarioAtual = mysqli_num_rows($exe_queryIdUsuarioAtual); $fetch_queryIdUsuarioAtual = NULL; $acao = $_GET['action']; if ($acao == 'processa') { // Se tiver cidade, chama a principal listando a cidade if ($count_queryIdUsuarioAtual >= 1) { while($fetch_queryIdUsuarioAtual = mysqli_fetch_array($exe_queryIdUsuarioAtual)) { echo "<br>"; echo "Cidade ID: " . $fetch_queryIdUsuarioAtual['cidadeId']; echo "Nome ID: " . $fetch_queryIdUsuarioAtual['nomeCidade']; echo "Id dono da cidade: " . $_SESSION['id']; } } else { // Se nao tiver cidade, chama a principal com um formulario para criar a primeira cidade echo "<br><br><br>"; echo "<center><form id='formCriarPrimeiraCidade' name='formCriarPrimeiraCidade' method='POST' action='principal.php?action=fundarPrimeiraCidade'> <td colspan='2'><div align='center'><strong>Criar primeira cidade</strong></div></td> Nome da cidade: <input name='nomePrimeiraCidade' type='text' id='nomePrimeiraCidade'> <input type='submit' name='Submit' value='Fundar primeira cidade' /> </form></center>"; } } else if ($acao == "fundarPrimeiraCidade") { echo "<br><br>Chegou aqui"; $sql_queryFundarPrimeiraCidade = "INSERT INTO cidades(nomeCIdade,id) VALUES('" . $_POST['nomePrimeiraCidade'] ."','" . $_SESSION['id'] . "');"; echo $_POST['nomePrimeiraCidade']; echo $_SESSION['id']; } ?> </div> </body/> </html> Obrigado.
  8. Olá, Eu tenho a tabela user e a tabela cidades e gostaria de criar uma Chave Estrangeira para que as cidades possuam um id de usuário(isso mesmo, e não o contrário). Cada cidade terá um "dono", pois é para um jogo. Estou fazendo da seguinte maneira: ALTER TABLE cidades ADD CONSTRAINT fk_usuarioDono FOREIGN KEY ( id ) REFERENCES user ( id ) ; Mas estou tendo o seguinte erro no PHPMyAdmin: Estou tentando resolver este problema mas não estou conseguindo. Os campos estão iguaisinhos nas características e nome. Não sei qual o problema. Obrigado. === EDIT === Consegui resolver de uma forma que não sei se é a melhor maneira. Creio que não, mas resolveu. Na guia "SQL" do PHPMyAdmin tem um checkbox com o nome "Enable foreign key checks". Eu desabilitei este checkbox e a query funcinou. Resolvido. Obrigado.
  9. Olá, Esta dando erro ainda e o erro é que as variáveis do formulário estão vazias. Imagem: http://image.ibb.co/ceAKNn/logar_img.png Código: logar.php <?php session_start(); include("config.php"); $login = $_POST["login"]; $senha = $_POST["senha"]; //$login = "Paulo"; //$senha = "senhacorreta"; if (empty($login)) { echo "Variável Login Vazia: $login"; echo "<br>"; } if (empty($senha)) { echo "Variável Senha Vazia: $senha"; echo "<br>"; } echo $login; echo $senha; echo "teste"; /* Verifica se existe usuario, o segredo ta aqui quando ele procupa uma linha q contenha o login e a senha digitada */ $sql_logar = "SELECT * FROM user WHERE login = '$login' AND senha = '$senha'"; $exe_logar = mysqli_query($conexao, $sql_logar) or die (mysql_error()); $fet_logar = mysqli_fetch_array($exe_logar); $num_logar = mysqli_num_rows($exe_logar); //Verifica se n existe uma linha com o login e a senha digitado if ($num_logar == 0){ echo "Login ou senha invalido."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>"; } elseif($fet_logar['activo'] == "N"){ echo "Usuario não ativado, verifique seu e-mail para ativa a conta."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>"; } else{ //Cria a sessão e manda pra pagina principal.php echo "Teste1"; $_SESSION['login'] = $login; $_SESSION['senha'] = $senha; header("Location:principal.php"); } echo "Teste"; // $login = "Paulo"; //$senha = "senhacorreta"; // $_SESSION["login"] = $login; //$_SESSION["senha"] = $senha; //header("Location:principal.php"); ?> Sinceramente não sei o que fazer e como resolver. Não sei se é algum arquivo de configuração ou não. Se alguém souber o motivo eu agradeço. Obrigado.
  10. Olá, Obrigado mais uma vez. Ainda não consegui resolver. Mas uma coisa que acabei de perceber e descobrir é que está funcionando a passagem das variáveis pelo formulário se eu digitar o login e/ou senha errados. Mas se eu digitar o valor que esta no banco de dados ele nao pega os valores do formulário. Estranho. E esse código eu peguei da internet, fiz pouquíssimas modificações. Se alguém souber o que é eu agradeço. Obrigado.
  11. Obrigado DiF, Mas esta variável esta vazia mesmo. Por algum motivo não esta gravando as informações do formulário com "Post". Também fiz sua recomendação de trocar 'aspas simples' por "aspas duplas", mas não alterou nada. Continuo tentando... Obrigado.
  12. Olá, Estou com um "bug" estranho. O erro é este: "Notice: Undefined index:". Pelo que pesquisei, meu formulário em HTML e a página que o formulário HTML chama no "action" do form teriam que estar tudo certinho pra esse erro desaparecer. Mas aqui, está, teoricamente tudo "certinho" os campos e a página do "action". Segue os códigos: - Formulário: <!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=iso-8859-1" /> <title>Document sans titre</title> <style type="text/css"> <!-- .Style6 {font-size: 13px} --> </style> </head> <body> <form id="form1" name="form1" method="POST" action="logar.php"> <table width="41%" border="0"> <tr> <td colspan="2"><div align="center"><strong>Usuario</strong></div></td> </tr> <tr> <td><span class="Style6">Login:</span></td> <td><span class="Style6"> <label> <input name="login" type="text" id="login" /> </label> </span></td> </tr> <tr> <td><span class="Style6">Senha:</span></td> <td><span class="Style6"> <label> <input name="senha" type="password" id="senha" /> </label> </span></td> </tr> <tr> <td>&nbsp;</td> <td><span class="Style6"> <label> <input type="submit" name="Submit" value="OK" /> </label> </span></td> </tr> <tr> <td>&nbsp;</td> <td><span class="Style6"><a href="esquece_senha.php">Esquece senha </a></span></td> </tr> <tr> <td>&nbsp;</td> <td><span class="Style6"><a href="cadastro.php">Cadastro</a></span></td> </tr> </table> </form> </body> </html> - logar.php: <?php include("config.php"); $login = $_POST['login']; $senha = $_POST['senha']; //$login = "usuario"; //$senha = "teste"; echo $login; /* Verifica se existe usuario, o segredo ta aqui quando ele procupa uma linha q contenha o login e a senha digitada */ $sql_logar = "SELECT * FROM user WHERE login = '$login' && senha = '$senha'"; $exe_logar = mysqli_query($conexao, $sql_logar) or die (mysql_error()); $fet_logar = mysqli_fetch_array($exe_logar); $num_logar = mysqli_num_rows($exe_logar); //Verifica se n existe uma linha com o login e a senha digitado if ($num_logar == 0){ echo "Login ou senha invalido."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>"; } elseif($fet_logar['activo'] == "N"){ echo "Usuario não ativado, verifique seu e-mail para ativa a conta."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>"; } else{ //Cria a sessão e manda pra pagina principal.php session_start(); echo "Teste"; $_SESSION['login'] = $login; $_SESSION['senha'] = $senha; header("Location:principal.php"); } ?> - Principal.php <?php include("config.php"); include("restrito.php"); $_SESSION['login'] = "tentandoColocarValorNaVariavelDiretamentePraTeste"; $login_username = $_SESSION['login']; $sql_busca = "SELECT * FROM user WHERE login = '$login_username'"; $exe_busca = mysqli_query($conexao, $sql_busca) or die (mysql_error()); $fet_busca = mysqli_fetch_array($exe_busca); ?> <!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=iso-8859-1" /> <title>Document sans titre</title> </head> <body> Ola <? echo $fet_busca['login'];?>. Ola <? echo $login_username; ?> <br> <a href="logout.php">Logout</a> </body> </html> Qual a principal caracteristica que se nota deste erro? Resposta: "Não está sendo carregado o $login e $senha que vem do formulário com o $_POST['campo']." Se alguem souber olhando os códigos acima onde está o erro eu agradeço. Estou tentando aqui encontrar o "erro". Obrigado.
  13. Eu diria que ele faz a parte "pesada" da coisa: Sites, Fóruns (PHPBB, SMF(Simple Machines Forum)), Sites de Aprendizado (Moodle), Gerenciador de Conteúdo dos sites (Joomla), Loja Virtual, Sistemas... Se você quiser aprender a fazer um fórum, sites, loja virtual, sistemas, acesso a banco de dados, gerenciamento de conteúdo, etc...pode usar o PHP. PHP é código-aberto, é FREE. É desenvolvido pela comunidade de programadores. Outra coisa, HTML não é "linguagem de programação", é linguagem de marcação. PHP é linguagem de programação. Se quiser ser um programador Web, um Desenvolvedor Web, recomenda-se fortemente o conhecimento em PHP, pois muita coisa na internet é feita em PHP. Site: php.net Espero ter ajudado. Obrigado.
  14. Consegui resolver. Instalei novamente o VirtualBox e importei novamente as VM's que eu tinha e estavam no diretório: "C:\Users\Usuario\VirtualBox VMs". Só reparar não adiantou. Tive que instalar novamente mesmo. Mas como as VM's foram preservadas, não tive nenhum problema e resolvi rapidinho. Muito obrigado pela ajuda.
  15. Olá, Não sei como está seu código, mas é bem isso mesmo. Você vai pegar o email digitado pelo usuário no formulário e adiciona-lo à variável $destino. $destino = $_POST['email']; // Pegando o email do usuário digitado pelo formulário E em seguida chama o comando mail() com os argumentos que esta função pede, sendo que o primeiro argumento é a variável $destino que contém o email do usuário digitado no formulário. $enviaremail = mail($destino, $assunto, $arquivo, $headers); // Função que envia o email Espero ter ajudado. Qualquer coisa posta novamente que tentamos ajudar. Obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×