Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago Bruno

Problemas com serviside sem refresh

Recommended Posts

Estou tentando fazer uma validação de um formulário sem o refresh da pagina tentei utilizar ajax mas não esta nem chamando a função para a validação queria uma ajuda.

 

Arquivo form.php

 

<?php
  include_once("../DAO/banco.php");
 include_once("../DAO/ProdutoDAO.php");




    @$getId = $_GET['id'];  //pega id para ediçao caso exista
    if(@$getId){ //se existir recupera os dados e tras os campos preenchidos
    $sql = "SELECT * FROM produtos WHERE id_prod = + $getId";
     $stm = $con->prepare($sql);   
 $stm->execute();   
 $campo = $stm->fetch(PDO::FETCH_ASSOC);   


    }




?>


<!DOCTYPE html>
<html>
<head>


    
<title>Cadastro Produto</title>
<meta charset="UTF-8">


  
     <link rel="stylesheet" type="text/css" href="../css/bootstrap.css" />
      <link rel="stylesheet" type="text/css" href="../css/bootstrap-responsive.css" />


      <link rel="stylesheet" type="text/css" href="../js/bootstrap.js" />
      <link rel="stylesheet" type="text/css" href="../js/bootstrap.min.js" />
      <script type="text/javascript" src="../js/valida.js"></script>
    <script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="../js/jquery.validate.min.js"></script> 


</head>
<body>


    <?php
    include_once 'AdminMenu.php';
    ?>


    
    
        <div id="formProd" style='margin-left:35px;margin-top:10px;width:3000px;height:500px;z-index:1'>


     <div id="retorno">    </div>
     <form id="enviaForm">


    
     <h3> <p>Cadastro Produto </h3>
   
          <p> Nome: </p> 
   
  
          <input type ="text" name="nomeProd" id="cnome"  style="width:500px;" value="<?php echo @$campo['nome_prod']; ?>" placeholder ="Nome do Produto"> 
          <br>
   
         <p> Descrição: </p> 
          <?php
         echo '<textarea name="descricaoProd" style="width:300px;" cols="50" rows="3" id="conteudo" class="editar">' . @$campo['descricao'] . '</textarea>';
         ?>
         <br>
       <p> Quantidade: </p> 
    
       <input type="number"  style="width:100px;" name="quantProd"  min="0" id ="cquantidade" size="2" maxlength="4" value="<?php echo @$campo['quantidade']; ?>" />
       <br>
           <input type="hidden" name="idProd" value="<?php echo @$campo['id_prod']; ?>">
               
           <br>
           
    <?php
                if(@!$campo['id_prod']){ // se nao passar o id via GET nao está editando, mostra o botao de cadastro
            ?>
           <button type="submit" class="btn btn-primary" name="cadastrar" > Cadastrar </button>
            <?php }else{ // se  passar o id via GET  está editando, mostra o botao de ediçao ?>
                <button type="submit" class="btn btn-primary" name="alterar" > Alterar </button>   
            <?php } ?>
       
     
          


   </form>
        </div>
      <script src="../js/jquery.min.js"></script> 
        <script src="../js/dropdown.js"></script>


    
</body>


</html>

Arquivo valida.php

<?php


 $erros=array(); 
if(empty($_POST['nomeProd'])) {
$erros['nome']='* O nome do Produto não pode ser inválido"<br>"'; 
}
if(empty($_POST['quantidade'])||$_POST['quantidade']<0) {
 $erros['quantidade']='* A quantidade do produto não pode ser inválida';    
}
//if(count($erros)>0){ 
echo $erros;




?>

Arquivo valida.js

 

$("#enviaForm").submit(function(){
    alert("pegou");
  var Valores = $(this).serialize();


   $.ajax({
     type:"POST",
     url: "../view/valida.php",
     data: Valores,
     success: function(data){
         
         if(data==null){
             window.location="../DAO/ProdutoDAO.php";
         }
     else{
       $("#retorno").html(data);
        return false;  
    }
     }
   });


});

Se alguém puder me ajudar agradeço bastante

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Geralmente quando falam em ajax olho logo o javascript porque a maioria dos problemas é nele.

Nem olhei o php mas recomendo que o ajax seja algo como isso:

$(document).ready(function(){


  //cancela o submit normal (refresh da pagina)
  $('#my-form').submit(function(){return false});


  //evento no botao submit
  $('#my-submit').click(function(){
      //adiciona um loading ( arcaico, mas você pode melhorar =D )
      $('#my-div').append("<br><br>Loading...");


      //pega os dados no form
      var data = {
        "name" : document.getElementById('name').value,
        "phone" : document.getElementById('phone').value,
        "email" : document.getElementById('email').value,
        "whatever" : document.getElementById('blablabla').value,


        //.........
      };


      //chamada ajax
      $.ajax({
        type: 'POST',
        url: 'endereco/do/meu/arquivo.php',
        data: {'data':data},
        success: function(data) {
          $('#my-div').append(data);
        }
      });
      //fim do ajax
  });
});

OBS: este é apenas um trecho de uma aplicação minha. Recomendo melhorar, mas acredito que será útil.

 

Para entender melhor, se você for no php e usar:

echo "<pre>";
echo var_dump ($_POST);
die;

Vai ver o objeto POST detalhado com os dados que você submeteu no form.

 

Aí basta chamar:

$_POST['data'];

E você terá todos os seus campos perfeitamente ordenados e fáceis de usar. Podendo começar a partir daí a testar a e debugar.

 

Espero ter ajudado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta dando o mesmo problema clico no botão e ele não chama a função segue o código.

 

$(document).ready(function(){




  //cancela o submit normal (refresh da pagina)
  $('#enviaForm').submit(function(){return false});




  //evento no botao submit
  $('#ccad').click(function(){
     
      //pega os dados no form
      var data = {
        "nomeProd" : document.getElementById('cnome').value,
        "quantProd" : document.getElementById('cquantidade').value,
      };




      //chamada ajax
      $.ajax({
        type: 'POST',
        url: '../View/valida.php',
        data: {'data':data},
        success: function(data) {
          $('#retorno').append(data);
        }
      });
      //fim do ajax
  });
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.