Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Insurgent3

PHP Recebendo ação da página do $_POST no PHP/MySQL

Recommended Posts

Postado (editado)

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 é:

 

Citação

Notice: Undefined index: action in C:\xampp\htdocs\Sistema\principal.php on line 8

 

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.

Editado por Insurgent3
Inserir os código usando o botão CODE <>. A citação não deve ser usada para códigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






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

×