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

PHP RESOLVIDO Enviar formulário sem direcionamento.

Recommended Posts

Ola,

 

Estou usando um formulário com extensão .php e códigos html com o método POST, e recebendo eles numa pagina php que exibe um alert de sucesso!

Gostaria de saber se é possível enviar o formulário e exibir o alert sem o redirecionamento para a pagina php, e de preferência sem ajax ou javascript, é possivel?

 

Estava utilizando o header desta forma:

header("location: index.php");

Mas estou retornando erros.

 

Agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk 

4 horas atrás, Glouk disse:

e de preferência sem ajax ou javascript, é possivel?

Não.  Para fazer a requisição assíncrona,  em outras palavras, retirar o redirecionamento /refresh é obrigatório o uso do ajax.

E por consequência, o uso do javascript.

Há duas formas de usar o ajax.  Por javascript puro ou por jQuery.  O jQuery é infinitamente mais fácil e prático e falando nisso, releia o seu tópico anterior, que eu mostrei um exemplo de uso do ajax com jQuery.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Sim, você foi realmente incrível e deu informações valiosas para mim. Criei outro tópico para não misturar as dúvidas, e facilitar se alguém precisar um dia. 

Então, acho estou codificando alguma coisa errada.

Segue meus codigos:

Dentro do head:

<script>
$(".atualizar").on("click", function(){
    var formDados = $(".meu).serialize();
    
    $.ajax({
          url: "receber.php",
          data: formDados,
          dataType: "HTML",
          method: "POST"

    }).done(function(retorno){
          alert(retorno);

    }).fail(function(retorno){
          alert(retorno);
    });

});
</script>

 

Abertura do form no body:

<form class="contact100-form validate-form" method="post" id="meu" action="javascript:func()">
				    <p class="m1-txt1 p-b-36">
<span class="m1-txt2"><font color="#FFFFFF">Data:</font></span>
<select name="dia">
  .
  .
  .
  .
<button type="submit">
Atualizar
</button>

Pode me ajudar a arrumar a codificação?

Editado por Glouk

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Poderia por gentileza postar o formulário de forma completa? Não importa se ficar "grande".

Não entendi porque colocou aquele action com uma chamada javascript. Não precisa. Assim como o method, pode retirar porque isso é feito ali no jQuery.

 

Ademais, quanto ao código jQuery analisando, vi que falta uma aspas nesta linha:

var formDados = $(".meu).serialize();

E também, a chamada da requisição, ao clicar no botão,  você não colocou a classe no botão... alias, que nesse caso, não se usa button, mas sim como input type="submit"

Editado por DiF
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Certo, segue o código completo que editei um pouco agora.

 

<html>
<head lang="pt-br">
<meta charset="utf-8">
<title>Atualizar</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="images/icons/icon.png" />
<link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="vendor/animate/animate.css">
<link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<link rel="stylesheet" type="text/css" href="css/util.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
<script>
$(".atualizar").on("click", function(){
    var formDados = $(".meu).serialize();
    
    $.ajax({
          url: "receber.php",
          data: formDados,
          dataType: "HTML",
          method: "POST"

    }).done(function(retorno){
          alert(retorno);

    }).fail(function(retorno){
          alert(retorno);
    });

});
</script>
</head>
<body>
<body background="images/bg01.png">
    	<div class="size1 bg0 where1-parent">
		<div class="flex-c-m bg-img1 size2 where1 overlay1 where2 respon2" style="background-image: url('images/bg01.png');">
			<div class="wsize2 flex-w flex-c-m cd100 js-tilt">
			    <div align="center">
			        <!-- Formulario -->
    <div class="p-t-50 p-b-60">
				<form class="contact100-form validate-form" id="meu">
				    <p class="m1-txt1 p-b-36">
<span class="m1-txt2"><font color="#FFFFFF">Data:</font></span>
<select name="dia">
		<option value="01">01</option>
		<option value="02">02</option>
		<option value="03">03</option>
		<option value="04">04</option>
		<option value="05">05</option>
		<option value="06">06</option>
		<option value="07">07</option>
		<option value="08">08</option>
		<option value="09">09</option>
		<option value="10">10</option>
		<option value="11">11</option>
		<option value="12">12</option>
		<option value="13">13</option>
		<option value="14">14</option>
		<option value="15">15</option>
		<option value="16">16</option>
		<option value="17">17</option>
		<option value="18">18</option>
		<option value="19">19</option>
		<option value="20">20</option>
		<option value="21">21</option>
		<option value="22">22</option>
		<option value="23">23</option>
		<option value="24">24</option>
		<option value="25">25</option>
		<option value="26">26</option>
		<option value="27">27</option>
		<option value="28">28</option>
		<option value="29">29</option>
		<option value="30">30</option>
		<option value="31">31</option>
</select>
<select name="mes">
		<option value="01">Janeiro</option>
		<option value="02">Fevereiro</option>
		<option value="03">Marco</option>
		<option value="04">Abril</option>
		<option value="05">Maio</option>
		<option value="06">Junho</option>
		<option value="07">Julho</option>
		<option value="08">Agosto</option>
		<option value="09">Setembro</option>
		<option value="10">Outubro</option>
		<option value="11">Novembro</option>
		<option value="12">Dezembro</option>
</select>
<select name="ano">
		<option value="2018">2018</option>
		<option value="2019">2019</option>
</select>
<br />
<br />
<span class="m1-txt2"><font color="#FFFFFF">Hora:</font></span>
<select name="hora">
        <option value="00">00</option>
		<option value="01">01</option>
		<option value="02">02</option>
		<option value="03">03</option>
		<option value="04">04</option>
		<option value="05">05</option>
		<option value="06">06</option>
		<option value="07">07</option>
		<option value="08">08</option>
		<option value="09">09</option>
		<option value="10">10</option>
		<option value="11">11</option>
		<option value="12">12</option>
		<option value="13">13</option>
		<option value="14">14</option>
		<option value="15">15</option>
		<option value="16">16</option>
		<option value="17">17</option>
		<option value="18">18</option>
		<option value="19">19</option>
		<option value="20">20</option>
		<option value="21">21</option>
		<option value="22">22</option>
		<option value="23">23</option>
</select>
<select name="minuto">
		<option value="00">00</option>
		<option value="15">15</option>
		<option value="30">30</option>
		<option value="45">45</option>
</select>
<br />
<br />
<span class="m1-txt2"><font color="#FFFFFF">Episodio:</font></span>

		 <label for="inputEmail" class="sr-only">Episodio</label>
		<input type="text" name="ep" class="form-control" id='ep' placeholder="Digite o episodio em que estamos!" required autofocus><br />

					<div class="w-full">
						<button class="flex-c-m s2-txt2 size4 bg1 bor1 hov1 trans-04" type="submit">
							Atualizar
						</button>
					</div>
				</form>
    </div>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Então,

O primeiro erro é aquele que eu já apontei no post #04.  está faltando fechar a aspas duplas dentro do parentese na variável formDados.

 

O segundo erro, é o seu botão de atualizar, quando eu disse que era para usar o type="submit", eu fui claro em dizer do tipo INPUT e não button e novamente lembro você que está faltando a classe  atualizar no elemento que será o "botão"

 

Afinal você aciona a requisição assíncrona(ajax) no  $(".atualizar").

 

Então seu "botão"  deve ser assim:

<input type="submit" class="atualizar" value="Atualizar" />

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
<html>
<head lang="pt-br">
<meta charset="utf-8">
<title>Atualizar</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="images/icons/icon.png" />
<link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="vendor/animate/animate.css">
<link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<link rel="stylesheet" type="text/css" href="css/util.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
<script>
$(".atualizar").on("click", function(){
    var formDados = $(".meu").serialize();
    
    $.ajax({
          url: "receber.php",
          data: formDados,
          dataType: "HTML",
          method: "POST"

    }).done(function(retorno){
          alert(retorno);

    }).fail(function(retorno){
          alert(retorno);
    });

});
</script>
</head>
<body>
<body background="images/bg01.png">
    	<div class="size1 bg0 where1-parent">
		<div class="flex-c-m bg-img1 size2 where1 overlay1 where2 respon2" style="background-image: url('images/bg01.png');">
			<div class="wsize2 flex-w flex-c-m cd100 js-tilt">
			    <div align="center">
			        <!-- Formulario -->
    <div class="p-t-50 p-b-60">
				<form class="contact100-form validate-form" id="meu">
				    <p class="m1-txt1 p-b-36">
<span class="m1-txt2"><font color="#FFFFFF">Data:</font></span>
<select name="dia">
		<option value="01">01</option>
		<option value="02">02</option>
		<option value="03">03</option>
		<option value="04">04</option>
		<option value="05">05</option>
		<option value="06">06</option>
		<option value="07">07</option>
		<option value="08">08</option>
		<option value="09">09</option>
		<option value="10">10</option>
		<option value="11">11</option>
		<option value="12">12</option>
		<option value="13">13</option>
		<option value="14">14</option>
		<option value="15">15</option>
		<option value="16">16</option>
		<option value="17">17</option>
		<option value="18">18</option>
		<option value="19">19</option>
		<option value="20">20</option>
		<option value="21">21</option>
		<option value="22">22</option>
		<option value="23">23</option>
		<option value="24">24</option>
		<option value="25">25</option>
		<option value="26">26</option>
		<option value="27">27</option>
		<option value="28">28</option>
		<option value="29">29</option>
		<option value="30">30</option>
		<option value="31">31</option>
</select>
<select name="mes">
		<option value="01">Janeiro</option>
		<option value="02">Fevereiro</option>
		<option value="03">Marco</option>
		<option value="04">Abril</option>
		<option value="05">Maio</option>
		<option value="06">Junho</option>
		<option value="07">Julho</option>
		<option value="08">Agosto</option>
		<option value="09">Setembro</option>
		<option value="10">Outubro</option>
		<option value="11">Novembro</option>
		<option value="12">Dezembro</option>
</select>
<select name="ano">
		<option value="2018">2018</option>
		<option value="2019">2019</option>
</select>
<br />
<br />
<span class="m1-txt2"><font color="#FFFFFF">Hora:</font></span>
<select name="hora">
        <option value="00">00</option>
		<option value="01">01</option>
		<option value="02">02</option>
		<option value="03">03</option>
		<option value="04">04</option>
		<option value="05">05</option>
		<option value="06">06</option>
		<option value="07">07</option>
		<option value="08">08</option>
		<option value="09">09</option>
		<option value="10">10</option>
		<option value="11">11</option>
		<option value="12">12</option>
		<option value="13">13</option>
		<option value="14">14</option>
		<option value="15">15</option>
		<option value="16">16</option>
		<option value="17">17</option>
		<option value="18">18</option>
		<option value="19">19</option>
		<option value="20">20</option>
		<option value="21">21</option>
		<option value="22">22</option>
		<option value="23">23</option>
</select>
<select name="minuto">
		<option value="00">00</option>
		<option value="15">15</option>
		<option value="30">30</option>
		<option value="45">45</option>
</select>
<br />
<br />
<span class="m1-txt2"><font color="#FFFFFF">Episodio:</font></span>

		 <label for="inputEmail" class="sr-only">Episodio</label>
		<input type="text" name="ep" class="form-control" id='ep' placeholder="Digite o episodio em que estamos!" required autofocus><br />

					
                    <input type="submit" class="atualizar" value="Atualizar" />
					
				</form>
    </div>
</body>
</html>

@DiF Certo, tem algo  a mais errado? Pois ainda não esta retornando. 

Esta adicionando os dados na url:

atualizar.php?dia=10&mes=08&ano=2018&hora=05&minuto=00&ep=10

 

Mas ainda não esta de fato enviando para o receber.php

Editado por Glouk

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk

Na verdade o fato de aparecer a string: 

dia=10&mes=08&ano=2018&hora=05&minuto=00&ep=10

Indica que  de fato está serializando os dados do formulário.

 

Porém só agora eu percebi,  você não está colocando a parte fundamental do jQuery.

Eu omiti porque pensei que pelo fato de usar aquele countdown em jQuery você já estaria com a base pronta.

 

Enfim, teste colocando assim:

 

$(document).ready(function(){
  $(".atualizar").on("click", function(){
    var formDados = $(".meu").serialize();
    
    $.ajax({
          url: "receber.php",
          data: formDados,
          dataType: "HTML",
          method: "POST"

    }).done(function(retorno){
          alert(retorno);

    }).fail(function(retorno){
          alert(retorno);
    });

});

});

 

Devo ressaltar que não vi ali no seu código a chamada do jQuery.  Portanto, se não o fez, coloque isto:

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Acima de qualquer outro script javascript.

Pelos padrões atuais, recomenda-se que coloque no final do documento, antes de finalizar o <body>, porém se achar mais confortável no momento, podes incluir no <head> 

Mas é importante que ele seja o primeiro dos javascripts a ser carregado.

 

 

Outro erro que acabei vendo depois,  é que você colocou o "meu"  sendo como ID mas no código jquery como class.

Então troque isto:

 

 var formDados = $(".meu").serialize();

Por isto:

 var formDados = $("#meu").serialize();

 

Editado por DiF
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Estou ficando indignado com minha burrice :tw_confused:

 

Devo estar fazendo algo bem besta. 

 

<html>
<head lang="pt-br">
<meta charset="utf-8">
<title>Atualizar</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="images/icons/icon.png" />
<link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="vendor/animate/animate.css">
<link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<link rel="stylesheet" type="text/css" href="css/util.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
<body background="images/bg01.png">
    	<div class="size1 bg0 where1-parent">
		<div class="flex-c-m bg-img1 size2 where1 overlay1 where2 respon2" style="background-image: url('images/bg01.png');">
			<div class="wsize2 flex-w flex-c-m cd100 js-tilt">
			    <div align="center">
			        <!-- Formulario -->
    <div class="p-t-50 p-b-60">
				<form class="contact100-form validate-form" id="meu">
				    <p class="m1-txt1 p-b-36">
<span class="m1-txt2"><font color="#FFFFFF">Data:</font></span>
<select name="dia">
		<option value="01">01</option>
		<option value="02">02</option>
		<option value="03">03</option>
		<option value="04">04</option>
		<option value="05">05</option>
		<option value="06">06</option>
		<option value="07">07</option>
		<option value="08">08</option>
		<option value="09">09</option>
		<option value="10">10</option>
		<option value="11">11</option>
		<option value="12">12</option>
		<option value="13">13</option>
		<option value="14">14</option>
		<option value="15">15</option>
		<option value="16">16</option>
		<option value="17">17</option>
		<option value="18">18</option>
		<option value="19">19</option>
		<option value="20">20</option>
		<option value="21">21</option>
		<option value="22">22</option>
		<option value="23">23</option>
		<option value="24">24</option>
		<option value="25">25</option>
		<option value="26">26</option>
		<option value="27">27</option>
		<option value="28">28</option>
		<option value="29">29</option>
		<option value="30">30</option>
		<option value="31">31</option>
</select>
<select name="mes">
		<option value="01">Janeiro</option>
		<option value="02">Fevereiro</option>
		<option value="03">Marco</option>
		<option value="04">Abril</option>
		<option value="05">Maio</option>
		<option value="06">Junho</option>
		<option value="07">Julho</option>
		<option value="08">Agosto</option>
		<option value="09">Setembro</option>
		<option value="10">Outubro</option>
		<option value="11">Novembro</option>
		<option value="12">Dezembro</option>
</select>
<select name="ano">
		<option value="2018">2018</option>
		<option value="2019">2019</option>
</select>
<br />
<br />
<span class="m1-txt2"><font color="#FFFFFF">Hora:</font></span>
<select name="hora">
        <option value="00">00</option>
		<option value="01">01</option>
		<option value="02">02</option>
		<option value="03">03</option>
		<option value="04">04</option>
		<option value="05">05</option>
		<option value="06">06</option>
		<option value="07">07</option>
		<option value="08">08</option>
		<option value="09">09</option>
		<option value="10">10</option>
		<option value="11">11</option>
		<option value="12">12</option>
		<option value="13">13</option>
		<option value="14">14</option>
		<option value="15">15</option>
		<option value="16">16</option>
		<option value="17">17</option>
		<option value="18">18</option>
		<option value="19">19</option>
		<option value="20">20</option>
		<option value="21">21</option>
		<option value="22">22</option>
		<option value="23">23</option>
</select>
<select name="minuto">
		<option value="00">00</option>
		<option value="15">15</option>
		<option value="30">30</option>
		<option value="45">45</option>
</select>
<br />
<br />
<span class="m1-txt2"><font color="#FFFFFF">Episodio:</font></span>

		 <label for="inputEmail" class="sr-only">Episodio</label>
		<input type="text" name="ep" class="form-control" id='ep' placeholder="Digite o episodio em que estamos!" required autofocus><br />

                    <input type="submit" class="atualizar" value="Atualizar" />
				</form>
    </div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
$(document).ready(function(){
  $(".atualizar").on("click", function(){
    var formDados = $(".meu").serialize();
    
    $.ajax({
          url: "receber.php",
          data: formDados,
          dataType: "HTML",
          method: "POST"

    }).done(function(retorno){
          alert(retorno);

    }).fail(function(retorno){
          alert(retorno);
    });

});

});
</script>
</body>
</html>

 

Editado por Glouk

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Está quase....

 

Como mencionei no post anterior, ainda está com o mesmo erro na linha da variável formDados.

 

No seu formulário, você está colocando um ID para ele  id="meu" 

Mas no jQuery você informa que é uma classe.

 

 var formDados = $(".meu").serialize();

Quando se usa ID,  deve chamar  com tralha (#).  Quando se usa classe deve chamar com "ponto" ( . )

 

Por isso o erro está no parentese onde você usa " .meu "   ao invés de " #meu "

 

Eu coloquei  com  ponto no exemplo, porque eu costumo usar mais classes do que ID.

O ideal é usar ID quando quer exclusividade em algo e  class quando pode repetir para mais de um elemento.

Editado por DiF
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Infelizmente continuo retornando o mesmo erro. Está serializando os dados, mas não esta enviando para a outra pagina php.

Fiz apenas a alteração do #, os demais dados do código permanece igual ao enviado anteriormente. 

 

Screenshot_1.png.9c15759cddfcd35a8d260c330b47fb8f.png

Editado por Glouk

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Hum, por gentileza posta aqui o receber.php  do jeito que ele está no momento.

 

Pois agora o jQuery está certo.

Também se possível, uma imagem do erro que acontece...  Normalmente deveria funcionar.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Não esta mostrando nenhum erro aparente, ele apenas não realiza a alteração no banco e não retorna o alert de sucesso.

<?php
$dia  = $_POST["dia"];
$mes  = $_POST["mes"];
$ano  = $_POST["ano"];
$hora = $_POST["hora"];
$min  = $_POST["min"];
$ep   = $_POST["ep"];

include "conexao.php";
$dataBanco = date($ano."-".$mes."-".$dia." ".$hora.":".$min.":"."00");
$atualizar = mysqli_query($conexao, "UPDATE datas SET data='$dataBanco', episodio='$ep' WHERE id=1");


if($atualizar):
    echo  "<script>alert('Data do podcast atualizada com sucesso!');</script>";
else:
    echo  "<script>alert('Tivemos um problema, contate o administrador!');</script>";
endif;

mysqli_close($conexao);
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Não sei se este pode ser a razão de  não apresentar mensagem de sucesso ou erro...

 

if($atualizar):
    echo  "<script>alert('Data do podcast atualizada com sucesso!');</script>";
else:
    echo  "<script>alert('Tivemos um problema, contate o administrador!');</script>";
endif;

mysqli_close($conexao);

Note que ali no echo do IF,  você está inserindo um javascript.  Mas lembre que lá no jQuery também usamos o javascript.

Quando usamos o ajax, o retorno dos dados são feitos em formato de texto.

 

Então é imprescindível que use apenas texto desta forma:

if($atualizar):
    echo  "Data do podcast atualizada com sucesso!";
else:
    echo  "Tivemos um problema, contate o administrador!";
endif;

mysqli_close($conexao);

No caso, a frase Data do podcast atualizada com sucesso seria mostrada lá no alert do jQuery na linha:

.done(function(retorno){
      alert(retorno);
})

E a frase Tivemos um problema, contate o administrador na linha:

.fail(function(retorno){
      alert(retorno);
});

 

No mais, é sempre bom conferir diretamente na sua tabela se de fato fez alguma mudança.  Se sim, o problema pode ser outro.  Se não alterar lá, tem possibilidade do erro estar ou no HTML(formulario, chamada de algum plugin e etc), no javascript ou no php... 

Editado por DiF
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 minutos atrás, DiF disse:

No mais, é sempre bom conferir diretamente na sua tabela se de fato fez alguma mudança.

@DiF Sim, exatamente. Não estava nem dando tanto atenção ao retorno da mensagem porque realmente poderia ser pelo alert duplicado. Mas o problema é que de fato nem no banco esta sendo atualizado.

adicionado 6 minutos depois

No meu leigo conhecimento aparentemente esto tudo correto. Não entendo porque ele serializa o formulario e não conclui a solicitação.

 

    $.ajax({
          url: "receber.php",
          data: formDados,
          dataType: "HTML",
          method: "POST"

    }

Poderia ser algum erro aqui? tentei fazer algumas alterações mas sem resultados. É como se ele não estivesse achando o arquivo receber.php para ler.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Ok, fiz um teste aqui.  Inicialmente pelos códigos presentes aqui não funcionou de primeira. Então debuguei eles e notei os erros simples.

 

No php, está sendo recebido com  

$min  = $_POST["min"];

Mas na verdade deveria ser:

$min  = $_POST["minuto"];

Outra coisa, que percebi, é que o method,  na verdade é "type",  me deu um branco hj e postei isso, por isso eu corrijo que é type.

 

$(document).ready(function(){
	 
  $(".atualizar").on("click", function(event){
     event.preventDefault();                  
	 var dados = $("#meu").serialize();
	    
	    $.ajax({
	          url: "receber.php",
	          data: dados,
	          dataType: "html",
	          type: "post"
	    }).done(function(retorno){
	          alert(retorno);
	    }).fail(function(retorno){
	          alert(retorno);     
	    });
    });
});

Basicamente o que eu alterei ali foi é que foi acrescentado o parametro event   e a função preventDefault()  além do "type"  da forma correta.

 

Depois que fiz as mudanças testei e funcionou corretamente.

Então confirmo que o código agora funciona perfeitamente para alterar os dados. 

 

Sugiro revisar tudo do inicio ao fim.

Por exemplo, no formulário HTML, veja se todos os "names" dos campos select estão certos na parte PHP onde recebe os dados.

Veja se o nome dos campos no banco de dados coincidem com os do formulário...

 

No else do código php, coloque o

 echo mysqli_error($conexao);

para ver se mostra alguma mensagem de erro. No meu teste, descobri que eu tinha colocado o nome do campo episodio como "ep" e ai ele dizia que a coluna era inexistente.

Depois que mudei.. bingo.  Funcionou muito bem.

 

Tente de tudo,  só assim a gente aprende!

Em último caso, se não funcionar  de jeito nenhum,  faça um backup do seu banco de dados em formato .SQL. e pegue seus arquivos todos,  compacte  faça um upload em um site de armazenamento e poste aqui.  Aí eu posso testar o seu banco de dados, os seus códigos... e etc..

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Tentei fazer as alterações mas continuei com o mesmo problema.

Estou encaminhando os arquivos para analise.

public_html

banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk OK, dei uma visualizada superficial nos seus arquivos..  vi duas coisas que estão erradas.

 

A primeira é aquela que eu disse que method era type...   estava me referindo ao código jQuery e não no HTML.  pois  o atributo method no form só aceita dois valores: post ou get.  Então method="type" não existe.

 O type é o mesmo method NA FUNÇÃO AJAX do jquery.

 

Outro erro que vi é que na sua conexão.php  você usa de forma orientada a objetos, mas no resto  dos códigos usa a forma procedural.

 

Ou seja, no caso é mais fácil você trocar o:

$conexao = new mysqli('localhost:3306', 'jovememc_data', 'medicina123', 'jovememc_atualizar');

Por:

$conexao = mysqli_connect("localhost", "jovememc_data", "medicina123", "jovememc_atualizar");

Lembrando que os parâmetros são:  mysqli_connect(servidor, usuario, senha, nome do banco de dados)

 

Aqui funcionou  como deveria funcionar.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF

22 minutos atrás, DiF disse:

estava me referindo ao código jQuery

Meu deus, sou um jumento. Mas enfim, não estou conseguindo compreender o que devo alterar. Realizei a alteração no conexao.php e retirei o method do form kkk.

Mas continua sem alterar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Já experimentou testar se os dados estão chegando ao PHP?

 

Dê um echo nos dados que são recebidos no receber.php.

Seus códigos aqui no meu localhost funcionam!

 

Vai por partes.

Primeiro teste de o formulário está realmente submetendo os dados.  Colocando um echo nas variáveis php.

Por exemplo eu costumo usar o console.log()  para mostrar alguma coisa no console do navegador.

 

Desta forma:

.done(function(retorno){
	console.log(retorno);
})

esse console.log() é uma função que serve para imprimir algo no console.

 

Usando o echo lá no receber.php só nas variáveis que recebe os dados, você pode ver o que está sendo recebido.

Se tiver mostrando o valor dos dados, você descarta problemas no ajax com jquery.. aí pode ser no php.

 

É bem difícil ensinar assim à distância, porque vai muito da capacidade de interpretar os textos... então mesmo sendo bem claro as vezes é uma tarefa bem complicada.

 

Aqui funciona tudo, aí não...  você precisa ser perseverante e analisar linha a linha de todos seus arquivos html e php, além do banco de dados. Uma virgula ou ponto e virgula errada ou faltando, um caractere errado... pode afetar todo o resto.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Pode marcar como resolvido. Consegui. Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Poderia nos informar o que fez para resolver?

Provavelmente meio que descobri onde era o erro mais cedo quando vi os códigos.

Mas seria bacana  você explicar como resolveu! 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Claro!

 

Bom, como eu disse sou iniciante e não entendo praticamente nada sobre o ajax e nem javascript. Então como não estava conseguindo resolver desta forma. Resolvi tentar seguir outros caminhos para resolver.

 

Eu estava com uma pagina com o formulário, e outra pagina que recebia os dados e atualizava o banco de dados. Mas como eu não queria ser direcionado tentei usar ajax. Mas era muito simples.

 

Apenas juntei a pagina receber.php dentro da pagina do formulario. Assim quando eu enviar o formulario, não precisava ir a outra pagina para realizar a ação, e a resposta de sucesso retornava na própria pagina. 

 

Resultado:

Screenshot_1.png.39b78e687755f427316b8bb3666584a2.png

 

Acho que não foi a forma que você pensou que eu iria resolver kk, afinal ficamos um bom tempo tentando apenas com o ajax. Mas enfim, desculpe-me. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Glouk Sem problemas.

 

O que eu ia dizer sobre o erro, era que no seu atualizar.php que era responsável pelo formulário, o código jQuery não estava sendo interpretado porque esqueceu de colocar a tag do javascript. kkkkkkkkkkk

 

Era só ter adicionado:

<script type="text/javascript">
  
  
  
</script>  

e colocar o código jquery dentro!  

E suma, o código javascript estava como "texto"

 

Se quiser, teste. Mas já que conseguiu resolver desta forma, beleza.

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Puts kkkkkkkk

Mas enfim, obrigado de coração :) 

 

 

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

×