Ir para conteúdo
Entre para seguir isso  
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!

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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é

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por reisleandro
      Alguém ai conhece um servidor php portável que possa rodar direto de um pendrive e que não apresente a mensagem de bloqueio do firewall (Imagem abaxio). O servidor embutido do php faz exatamente isso mas apenas como sigle thread. Queria uma solução um pouco mais robusta que pudesse rodar em qualquer maquina sem apresentar essa mensagem. Plataforma alvo Windows.
       

    • Por JOSELUISALD
      Bom dia. Em minha aplicação o cliente quer uma cópia de seu sistema localmente e remoto (hospedado). Tem como eu fazer a sincronização dos bancos de dados, para que tudo que seja feito localmente seja inserido automaticamente no banco remoto? Desde já obrigado.
    • Por Hannah25
      Eu estou criando um cms, encontrei algumas barreiras para concluir o projeto, alguém sabe como o wordpress substitui a função include pelas abreviações: wp_header(), wp_footer() e wp_ ?
      joker123 หวยหุ้น
      Seja lá o que for esta bem escondido naquele código enorme : (  
      Se alguém souber me ajude a criar essa função! ou uma alternativa sem ser a tradicional include uma personalizada...
×

Informação importante

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