Jump to content

Archived

This topic is now archived and is closed to further replies.

VMG

CRUD em PHP não salva no MYSQL

Recommended Posts

Boa noite pessoal.
Eu achei um CRUD na internet e modifiquei para o que eu precisava, porém quando clico em salvar, ele não faz nada.

Vou postar aqui os scripts se alguém puder dar uma olhada e me dizer pq não esta salvando eu ficarei muito grato!

 

Eu abri o meu MySQL 5.7 Command Line Client - Unicode e criei:

 

Create database cadastroevento;

 

Use cadastroevento;

 

Create table cadastroevento (

Id int(11) not null auto_increment primary key,
data varchar(50),
evento varchar(1000),
obs varchar (2000),
horario varchar(50)

);

Depois fui para o php:


index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Agenda</title>
    <link rel="stylesheet" type="text/css" href="css/easyui.css">
    <link rel="stylesheet" type="text/css" href="css/icon.css">
    <link rel="stylesheet" type="text/css" href="css/demo.css">
    <style type="text/css">
        #fm{
            margin:0;
            padding:10px 30px;
        }
        .ftitle{
            font-size:14px;
            font-weight:bold;
            color:#666;
            padding:5px 0;
            margin-bottom:10px;
            border-bottom:1px solid #ccc;
        }
        .fitem{
            margin-bottom:5px;
        }
        .fitem label{
            display:inline-block;
            width:80px;
        }
    </style>
    <script type="text/javascript" src="js/jquery-1.6.min.js"></script>
    <script type="text/javascript" src="js/jquery.easyui.min.js"></script>
    <script type="text/javascript">
        var url;
        function newEvent(){
            $('#dlg').dialog('open').dialog('setTitle','Novo Evento');
            $('#fm').form('clear');
            url = 'salvar_cadastroevento.php';
        }
        function editEvent(){
            var row = $('#dg').datagrid('getSelected');
            if (row){
                $('#dlg').dialog('open').dialog('setTitle','Editar Evento');
                $('#fm').form('load',row);
                url = 'atualizar_cadastroevento.php?id='+row.id;
            }
        }
        function saveEvent(){
            $('#fm').form('submit',{
                url: url,
                    onSubmit: function(){
                    return $(this).form('validate');
                },
                success: function(result){
                    var result = eval('('+result+')');
                    if (result.success){
                        $('#dlg').dialog('close');       
                        $('#dg').datagrid('reload');   
                    } else {
                        $.messager.show({
                            title: 'Erro',
                            msg: result.msg
                        });
                    }
                }
            });
        }
        function removeEvent(){
            var row = $('#dg').datagrid('getSelected');
            if (row){
                $.messager.confirm('Confirm','Tem certeza que deseja remover o Evento?',function(r){
                    if (r){
                        $.post('remover_cadastroevento.php',{id:row.id},function(result){
                            if (result.success){
                                $('#dg').datagrid('reload');    
                            } else {
                                $.messager.show({    
                                    title: 'Error',
                                    msg: result.msg
                                });
                            }
                        },'json');
                    }
                });
            }
        }
    </script>
</head>
<body>
<center>
    <h2>Agenda</h2>
  
    
    <table id="dg" title="Cadastar Evento" class="easyui-datagrid" style="width:700px;height:250px"
            url="pegar_cadastroevento.php"
            toolbar="#toolbar" pagination="true"
            rownumbers="true" fitColumns="true" singleSelect="true">
        <thead>
            <tr>
                <th field="data" width="50">Data</th>
                <th field="evento" width="50">Evento</th>
                <th field="obs" width="50">Observação</th>
                <th field="horario" width="50">Horário</th>
            </tr>
        </thead>
    </table>
    <div id="toolbar">
        <a href="#" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newEvent()" title="Adicionar Evento">Novo Evento</a>
        <a href="#" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editEvent()" title="Alterar Dados do Evento">Editar Evento</a>
        <a href="#" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="removeEvent()" title="Remover Evento">Remover Evento</a>
    </div>
    
    <div id="dlg" class="easyui-dialog" style="width:400px;height:280px;padding:10px 20px"
            closed="true" buttons="#dlg-buttons">
        <div class="ftitle">Dados do Evento</div>
        <form id="fm" method="post" novalidate>
            <div class="fitem">
                <label>Data:</label>
                <input name="data" class="easyui-validatebox" required>
            </div>
            <div class="fitem">
                <label>Evento</label>
                <input name="evento" class="easyui-validatebox" required>
            </div>
            <div class="fitem">
                <label>Observação:</label>
                <input name="obs">
            </div>
            <div class="fitem">
                <label>Horário:</label>
                <input name="horario" class="easyui-validatebox" required>
            </div>
        </form>
    </div>
    <div id="dlg-buttons">
        <a href="#" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveEvent()">Salvar</a>
        <a href="#" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')">Cancelar</a>
    </div>
	</center>
</body>
</html>

conn.php

<?php

$conn = @mysql_connect('127.0.0.1','root','1234');
if (!$conn) {
    die('Não foi possível Conectar: ' . mysql_error());
}
mysql_select_db('cadastroevento', $conn);

?>

pegar_cadastroevento.php

<?php
    $page = isset($_POST['page']) ? intval($_POST['page']) : 1;
    $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
    $offset = ($page-1)*$rows;
    $result = array();

    include 'conn.php';
    
    $rs = mysql_query("select count(*) from cadastroevento");
    $row = mysql_fetch_row($rs);
    $result["total"] = $row[0];
    $rs = mysql_query("select * from cadastroevento limit $offset,$rows");
    
    $items = array();
    while($row = mysql_fetch_object($rs)){
        array_push($items, $row);
    }
    $result["rows"] = $items;

    echo json_encode($result);

?>

salvar_cadastroevento.php

<?php

$data = $_REQUEST['data'];
$evento = $_REQUEST['evento'];
$obs = $_REQUEST['obs'];
$horario = $_REQUEST['horario'];

include 'conn.php';

$sql = "insert into cadastroevento(data,evento,obs,horario) values('$data','$evento','$obs','$horario')";
$result = @mysql_query($sql);
if ($result){
    echo json_encode(array('success'=>true));
} else {
    echo json_encode(array('msg'=>'Erro ao inserir dados.'));
}
?>

atualizar_cadastroevento.php

<?php

$id = intval($_REQUEST['id']);
$data = $_REQUEST['data'];
$evento = $_REQUEST['evento'];
$obs = $_REQUEST['obs'];
$horario = $_REQUEST['horario'];

include 'conn.php';

$sql = "update cadastroevento set data='$data',evento='$evento',obs='$obs',horario='$horario' where id=$id";
$result = @mysql_query($sql);
if ($result){
    echo json_encode(array('success'=>true));
} else {
    echo json_encode(array('msg'=>'Erro ao atualizar dados.'));
}
?>

 

remover_cadastroevento.php

 

<?php

$id = intval($_REQUEST['id']);

include 'conn.php';

$sql = "delete from cadastroevento where id=$id";
$result = @mysql_query($sql);
if ($result){
    echo json_encode(array('success'=>true));
} else {
    echo json_encode(array('msg'=>'Erro ao remover dados.'));
}
?>

Eu não entendo muito de php e mysql, então bem provável que esteja fazendo algo errado rsrs

Então se alguém puder me ajudar eu agradeço desde já!

Muito obrigado e boa noite!

 

Share this post


Link to post
Share on other sites

Vou dar algumas dicas para começar a aparecem os problemas, depois de encontrar os problemas, iremos para as suas respectivas soluções.

- Ative as exibições de erro, adicione o código abaixo no início do seu script:

ini_set('error_reporting', E_ALL);
ini_set('log_errors' , TRUE);
ini_set('html_errors' , TRUE);
ini_set('display_errors' , TRUE);

Não utilize o supressor de erros (@). 99,9% dos erros do PHP podem ser tratados, os erros que não podem ser, devem ser exibidos. Todos os erros devem ser exibidos de forma amigável ao usuário.

 

Não utilize as funções mysql_*, há anos não são recomendadas, estão obsoletas desde o PHP 5.5 e foram removidas no PHP 7. Utilize mysqli ou PDO. mysqli pode ser procedural ou OO, PDO somente OO.

 

Na questão do update, também é algo controverso, ele pode funcionar e, mesmo assim, não atualizar nada. Há uma explicação aqui:

http://forum.imasters.com.br/topic/473790-update-pdo-nao-funciona/?p=1881906

 

Depois disso, veja os erros que irão apresentar no seu script.

Share this post


Link to post
Share on other sites

Sobre Ajax

 

É sempre uma boa usar para deixar uma interface show, porém usar demais deixa brechas de segurança, tente passar tokens na requisição ajax para validar esse recebimento. Uma vez eu vi um cara que fez um formulário de e-mail simples se ferrar porque usou ajax, nego rodou um script JS em looping no console mesmo do chrome e lotou a caixa de e-mail do maluco.

 

Para o jovem que criou o tópico só tenho uma frase.

 

Aprenda PDO...

 

 

Segue baixo exemplos de conexão em PDO

  1. <?php
  2. //conexão com o bd, pode ser qlq bd seja mysql ou postgre
  3. try {
  4. $db = new PDO($host, $usuario, $senha,array( PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8' ));
  5. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  6. } catch (PDOException $e) {
  7. if($e->getCode() == 1049){
  8. echo "Banco de dados errado.";
  9. }else{
  10. echo $e->getMessage();
  11. }
  12. }
  13. ?>

Agora a consulta e impressão dos dados

  1. <?php
  2. try {
  3. $sql = $db->prepare("SELECT * FROM sua_tabela");
  4. $sql->execute();
  5. } catch (PDOException $e) {
  6. echo $e->getMessage();
  7. }
  8. $registro = $sql->fetch(PDO::FETCH_OBJ);
  9. //IMPRIMINDO
  10. $registro->nome_do_campo;
  11. ?>

Tem um post no meu blog sobre isso

http://blog.squad.net.br/2015/11/25/diga-nao-ao-mysql_-e-sim-ao-pdo-php/

Qualquer dúvida podem perguntar

Até

Share this post


Link to post
Share on other sites

@junior.vieira
Eessa questão é mais relacionada com UX (User eXperience) do que com HTML/PHP.

Sendo os métodos de requisição de acordo com a W3C, nesse caso requisições de modificação no SGBD como POST e as consultas como GET, a forma de requisição síncrona ou assíncrona é irrelevante.

 

Agora, se um, ou outro, melhoram a relação de interação do usuário com o sistema/site, deve ser a alternativa utilizada no ponto de vista de UX.

Share this post


Link to post
Share on other sites

[...]Uma vez eu vi um cara que fez um formulário de e-mail simples se ferrar porque usou ajax, nego rodou um script JS em looping no console mesmo do chrome e lotou a caixa de e-mail do maluco.

 

Não gostaria de sair do tópico habitual, mas sobre seu exemplo, essa vulnerabilidade não é exclusiva do ajax e pode ser reproduzida, no próprio console do navegador, com um formulário convencional. Pessoas maliciosas sempre existirão, além de ser um teste padrão de vulnerabilidade.

Share this post


Link to post
Share on other sites

  • Similar Content

    • By henriquers
      Estou com um problema com o Select2, ele tem um campo de busca mas não esta filtrando corretamente e não estou entendo o motivo, sem utilizar o AJAX colocando os options manualmente ele funciona corretamente, mas trazendo os dados via AJAX ele não funciona o campo de busca.
      Se aguem poder me dar uma luz agradeço a ajuda.
       

       
      Nessa imagem estou tentando filtrar apenas para os itens que tenha LUVA na descrição, mas não funciona, posso colocar qual quer coisa que ele não faz o filtro
       
      Abaixo segue meu codigo
       
      HTML
      <!DOCTYPE HTML PUBLIC> <HTML> <HEAD> <TITLE> Select2 </TITLE> <link href="select2/select2.css" rel="stylesheet" type="text/css" /> <script src="https://code.jquery.com/jquery-latest.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/i18n/pt-BR.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.css" rel="stylesheet"/> <script> $(document).ready(function(){ $("#selUser").select2({ language: "pt-br", ajax: { url: "get_dados.php", type: "GET", dataType: 'json', delay: 200, data: function (params) { return { q: params.term, // search term page: params.page }; }, processResults: function (response) { return { results: response }; }, cache: true }, width: "20%", closeOnSelect: true, }); }); </script> </head> <body> <select id='selUser' style='width: 200px;'> <option value='0'>- Search user -</option> </select> </body> </html> get_dados.php
      <?php include './conn_orcl.php'; $select="SELECT PRO_CODPRO PRODUTO,TRIM(PRO_DESCRI) DESCRICAO FROM F_PRODS WHERE PRO_LOCEST='ALMOX' AND PRO_STATUS = 'AT' ORDER BY DESCRICAO"; $parse=oci_parse($conn,$select); oci_execute($parse); $data = array(); while($row=oci_fetch_array($parse)){ $data[] = array("id"=>$row['PRODUTO'], "text"=>$row['PRODUTO']." - ".$row['DESCRICAO']); }; echo json_encode($data); ob_end_flush(); oci_free_statement($parse); oci_close($conn); ?>  
    • By Jack Oliveira
      Boa noite pessoal
       
       
      Quero fazer uma verificação em tempo real no banco de dados antes de clicar para cadastra, ver se o nome que esta no input name="nome_empresa_link"   ver se ele já existe no banco de dados. no caso so permitir preencher outro campos se o input que esta sendo verificado estiver correto ou seja tudo ok...
       
      Lembrando este input ele é preenchido conforme é digitado no input name="nome_empresa"  Não sei se isso interfere ao fazer a verificação
       
      HTML
             <div class="col-md-6">         <div class="form-group">          <label for="nome_empresa">Nome</label>          <input type="text" autocomplete="off" id="nome_empresa" maxlength="100"  name="nome_empresa" class="form-control input_nome_empresa" required placeholder="Nome da Loja">        </div>      </div>      <div class="col-md-6">       <div class="form-group">        <label for="nome_empresa_link">Url Amigavél</label> <em id="resposta"></em>        <input type="text" autocomplete="off"  id="nome_empresa_link" name="nome_empresa_link" maxlength="100" class="form-control input_nome_empresa_link" required placeholder="/ Use maiúsculas, minúsculas e underline.">        <?= $site; ?><span><em style="color: green;" id="nome_empresa_link"></em>/</span>      </div>    </div> No PHP fazer verificação fiz isso...
      <?php if(isset($_POST['nome_empresa_link'])) { $nome_empresa_link=$_POST['nome_empresa_link']; $checkdata = DBCount('ws_empresa','nome_empresa_link',"WHERE nome_empresa_link = '{$nome_empresa_link}'"); if ($checkdata >= 0) { //echo "Um nome igual este já esta sendo usado no sistema"; swal('Atenção!!!', 'A URL AMIGAVÉL não disponivél para cadastro \n tente com outro nome!', 'warning', 'Fechar'); } /*else { echo "<font color='green'>Disponivél...</font>"; } */ exit(); } ?> No ajax fiz assim
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script language="javascript"> var nome_empresa_link = $("#nome_empresa_link"); nome_empresa_link.blur(function() { $.ajax({ url: 'notificacao/checkdata.php', type: 'POST', data:{"nome_empresa_link" : nome_empresa_link.val()}, success: function(data) { console.log(data); data = $.parseJSON(data); $("#resposta").text(data.nome_empresa_link); } }); }); </script> Só que não retorna nada
       
       
    • By DuduBacteria
      Tenho uma Tabela chamada "VENDAS" com os seguintes atributos:
       
       
      Eu quero retornar em MySQL o total de vendas ocorridos durante 1 semana, entre o dia atual até seis dias atrás.
       
      Ficando mais ou menos assim:
       
      SEMANA              TOTAL DE VENDIDO segunda                250.00 domingo                430.00 sábado                 160.50 sexta                  300.03 quinta                 300.03 quarta                 300.03 terça                  300.03
    • By terra
      Olá,
       
      preciso enviar os últimos 10 registros para um único e-mail, mas o código abaixo esta enviando separado
       
       
      agradeço qualquer ajuda
    • By eStevo2734
      Pequei esse código, porém não funciona por nada pela minha capacidade que não é muita em PHP, já mudei ele de todas as formas possível e não funciona.
       
      <?php if(!empty($_FILES['xml']['tmp_name'])){ $arquivo = new DomDocument(); $arquivo->load($_FILES['xml']['tmp_name']); //var_dump($arquivo); $linhas = $arquivo->getElementsByTagName("processo"); //var_dump($linhas); $primeira_linha = true; foreach($linhas as $linha){ if($primeira_linha == false){ // pegar o valor natureza="Produtos e/ou Serviço" no elemento <marca> $nome = $linha->getElementsByTagName("nome")->item(0)->nodeValue; echo "Nome: $nome <br>"; $email = $linha->getElementsByTagName("status")->item(1)->nodeValue; echo "Status: $email <br>"; echo "<hr>"; } $primeira_linha = false; } } ?>  
      O arquivo em XML é beemmm longo
      <?xml version="1.0" encoding="UTF-8" ?> <revista numero="2620" data="23/03/2021"> <processo numero="922151156" data-deposit <despachos> <despacho codigo="IPAS009" nome="Publ </despachos> <titulares> <titular nome-razao-social="HERIK DE </titulares> <marca apresentacao="Mista" natureza="P <nome>SOTEN</nome> </marca> <classes-vienna> <classe-vienna codigo="27.5.1" edicao <classe-vienna codigo="28.3" edicao=" <classe-vienna codigo="26.2.7" edicao <classe-vienna codigo="29.1.15" edica </classes-vienna> <lista-classe-nice> <classe-nice codigo="41"> <especificacao>Agente artístico; li <status>Pendente</status> </classe-nice></lista-classe-nice> <procurador>TENAX SERVIÇOS DE CONSULTOR </processo> <processo numero="920178898"> <despachos> <despacho codigo="IPAS029" nome="Defe </despachos> <titulares> <titular nome-razao-social="DEIVISSON </titulares> <lista-classe-nice> <classe-nice codigo="25"> <especificacao>Bandanas;Bermudas;Bo <status>Deferida</status> </classe-nice> </lista-classe-nice> </processo> Os valores que estou tentando pegar são <nome>
      <status>. Mas também queria tentar pegar os
      valores nome-razao-social="..." e natureza. Penso que
      pode ter algo a ver com o tamanho do arquivo que é um
      pouco maior do que o habitual, girando em torno de
      30 MB e no total vão ter que tirar as informações 22 109
      que é o número de vezes que esse modelo de exemplo
      se repete no documento Mas como disse não sei muito
      sobre PHP é uma suposição)...
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.