donrafy 0 Denunciar post Postado Agosto 9, 2016 Boa noite pessoal, Estou criando uma agenda personalizada com login e senha para usuários. Queria que quando o usuário fizesse o login e cadastrasse alguma informação na agenda, uma parte da agenda já cadastrasse um valor definido. ___________________________________________________________________________________________________________________ Por exemplo: Login: Donraf Senha: *********** ___________________________________________________________________________________________________________________ %Cadastrar informações. Local: (Inserir local) Data: (Inserir data) Cadastrado por: Donraf <- Isso aparece automaticamente e não pode mais ser modificado pelo usuário. ___________________________________________________________________________________________________________________ Depois vou usar essas informações para criar alguns tipos de filtros no meu site. Todo a parte de comunicação com o banco de dados, cadastro e acesso às informações está funcionando sem problemas, com exceção dessa parte pré-definida pelo login do usuário. O erro que aparece é, ao cadastrar alguns dados aleatórios: Unknown column 'empresa' in 'field list' Acredito que todo o problema está nessa linha de código: <tr> <td>Empresa:</td> <td><input name="empresa" type="text" disabled="disabled" class="campo" value="<?php echo htmlspecialchars($logado); ?>" id="empresa"/></td> </tr> Caso o problema esteja em outras partes do código segue as etapas do meu código: A seguir a chamada do banco de dados no arquivo: <?php //criar a conexão com o banco include "sql.php"; if(isset($_POST['done'])){ $evento = $_POST['evento']; $advogado = $_POST['advogado']; $dtevento = $_POST['dia']."-".$_POST['mes']."-".$_POST['ano']; $hora = $_POST['hora']; $local = $_POST['local']; $contratante = $_POST['contratante']; $p_re = $_POST['p_re']; $conteudo = $_POST['conteudo']; $autor = $_POST['autor']; $empresa = $_POST['uso_nome']; #$logado = $_POST['uso_email']; if(empty($evento) || empty($dtevento) || empty($conteudo) || empty($local)){ $erro = "Favor preencher todos os campos"; }else{ $sql = mysql_query("INSERT INTO `agenda`(`evento`, `advogado`,`dtevento`, `hora`, `local`, `contratante`, `p_re`,`conteudo`,`autor`,`empresa`) VALUES ('$evento', '$advogado', '$dtevento', '$hora', '$local', '$contratante', '$p_re', '$conteudo','$autor','$empresa')") or die(mysql_error()); if($sql){ $erro = "Dados cadastrados com sucesso!"; } else{ $erro = "Não foi possivel cadastrar os dados"; } } } ?> A seguir parte da tabela em que é inserido os dados que é a parte que está dando erro (provavelmente). </style> <form name="form1" action="admin.php" method="POST" style="padding-top:40px;"> <table border="0" width="80%" bgcolor="#f0f0f0" style="border:1px solid #ccc; margin:0 auto; position:relative;"> <thead> <tr> <th colspan="2">Inserir na agenda</th> </tr> <tr> <td>Local:</td> <td><input name="local" type="text" class="campo" id="local"></td> </tr> <tr> <td>Empresa:</td> <td><input name="empresa" type="text" disabled="disabled" class="campo" value="<?php echo htmlspecialchars($logado); ?>" id="empresa"/></td> </tr> <tr> <td></td> <td><input type="submit" value="Cadastrar Evento" /><input type="hidden" name="done" value="" /></td> <?php echo" Bem vindo a página de cadastro <br> Empresa: $logado"; ?> </tr> </tbody> </table> </form> Se necessário verificar a parte que bloqueia a página caso ele não tenha logado: <?php //initialize the session if (!isset($_SESSION)) { session_start(); } // ** Logout the current user. ** $logoutAction = $_SERVER['PHP_SELF']."?doLogout=true"; if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){ $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']); } if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){ //to fully log out a visitor we need to clear the session varialbles $_SESSION['MM_Username'] = NULL; $_SESSION['MM_UserGroup'] = NULL; $_SESSION['PrevUrl'] = NULL; unset($_SESSION['MM_Username']); unset($_SESSION['MM_UserGroup']); unset($_SESSION['PrevUrl']); $logoutGoTo = "Inicial_uso.php"; if ($logoutGoTo) { header("Location: $logoutGoTo"); exit; } } $logado = $_SESSION['MM_Username']; ?> Compartilhar este post Link para o post Compartilhar em outros sites
lucasdolci 0 Denunciar post Postado Agosto 10, 2016 donrafy A melhor solução pra você fazer isso é armazenando o nome ou código do usuário em uma sessão, você está colocando em um input, por mais que você deixe o campo com disabled, a segurança dos dados inseridos fica muito comprometida. Quando o usuário logar armazene o ID em uma sessão, se quiser mostrar no form os dados não tem problema, mas em label, depois no seu insert utilize os dados em sessão e concatena com string se necessário. Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Agosto 10, 2016 Particularmente nestes casos eu uso constantes, pois já que são dados que não serão e nem podem serem alterados, mete ele numa constante e deu pra bola. Compartilhar este post Link para o post Compartilhar em outros sites
Douglas Matos 0 Denunciar post Postado Agosto 10, 2016 Todo a parte de comunicação com o banco de dados, cadastro e acesso às informações está funcionando sem problemas, com exceção dessa parte pré-definida pelo login do usuário. O erro que aparece é, ao cadastrar alguns dados aleatórios: Unknown column 'empresa' in 'field list' Bom dia amigo donrafy, Não vi os campos da tabela onde você está gravando, mas pelo erro que aparece é que no seu banco de dados não existe o campo empresa por esse motivo que ele não está cadastrando. da uma olhada nas tabelas do seu banco qq coisa posta ai o script desta tabela para podermos ajudar melhor!! Compartilhar este post Link para o post Compartilhar em outros sites
donrafy 0 Denunciar post Postado Agosto 10, 2016 Bom dia amigo donrafy, Não vi os campos da tabela onde você está gravando, mas pelo erro que aparece é que no seu banco de dados não existe o campo empresa por esse motivo que ele não está cadastrando. da uma olhada nas tabelas do seu banco qq coisa posta ai o script desta tabela para podermos ajudar melhor!! Bem visto Douglas, O erro desapareceu, entretanto ainda não consigo salvar os valores na minha variável. O código ficou: <td>Empresa:</td> <td><input name="uso_nome" type="text" disabled="disabled" class="campo" value="<?php echo htmlspecialchars($logado); ?>" id="uso_nome"/></td> Se eu tirar o campo "disabled="disabled" class="campo" value="<?php echo htmlspecialchars($logado); ?>" Eu consigo digitar e salvar a informação no banco de dados sem problemas. Mas o que eu preciso é justamente que o valor já seja definido. Para sempre que esse usuário cadastrar alguma informação na agenda uma das colunas do banco de dados seja o nome do usuário e que eu possa usar isso para filtrar novas informações posteriormente. Compartilhar este post Link para o post Compartilhar em outros sites
donrafy 0 Denunciar post Postado Agosto 10, 2016 Particularmente nestes casos eu uso constantes, pois já que são dados que não serão e nem podem serem alterados, mete ele numa constante e deu pra bola. rpmarques, certo, mas como eu criaria uma constante para cada tipo de usuário ? Além disso, depois ficaria com o mesmo problema, não é verdade ? Sempre que o usuário postar uma coisa preciso que na mesma linha do banco de dados seja incrementada essa constante e essa é justamente a parte que não estou conseguindo fazer. Tem alguma ideia de como fazer isso ? Grato Compartilhar este post Link para o post Compartilhar em outros sites
donrafy 0 Denunciar post Postado Agosto 10, 2016 donrafy A melhor solução pra você fazer isso é armazenando o nome ou código do usuário em uma sessão, você está colocando em um input, por mais que você deixe o campo com disabled, a segurança dos dados inseridos fica muito comprometida. Quando o usuário logar armazene o ID em uma sessão, se quiser mostrar no form os dados não tem problema, mas em label, depois no seu insert utilize os dados em sessão e concatena com string se necessário. Lucas, armazenar em uma sessão seria a mesma coisa que criar uma variável global e salvar ela em em todas linhas das informações do banco de dados ? Sou um pouco iniciante em php, mas possuo experiências em outras linguagens de programação. Não estou usando o ID como forma de procurar o usuário devido já está usando isso (do autoincrement) para o cadastro de todos dados da agenda, os quais posso modifica-los ou exclui-los. Pensei inicialmente em criar um código para cada tipo de usuário gerado automaticamente, como disse o rpmarques mas, como comentei, assim volto ao problema de não conseguir incrementar uma informação que é variável a cada tipo de usuário em cada linha do banco de dados. Não sei se ficou claro, qualquer coisa posso explicar novamente com exemplos Compartilhar este post Link para o post Compartilhar em outros sites
Douglas Matos 0 Denunciar post Postado Agosto 10, 2016 donrafy, Lá dentro do teu if onde você pega as informações enviadas pelo formulário de um print_r no post pra ver se ele realmente está passando o valor. Na minha visão o formulário está correto não teria o pq de o disabled não deixar enviar o valor. Caso ele esteja passando o valor no print_r verifique o tipo deste campo no seu banco talvez seja isso que ele não esta cadastrando. Compartilhar este post Link para o post Compartilhar em outros sites
donrafy 0 Denunciar post Postado Agosto 10, 2016 donrafy, Lá dentro do teu if onde você pega as informações enviadas pelo formulário de um print_r no post pra ver se ele realmente está passando o valor. Na minha visão o formulário está correto não teria o pq de o disabled não deixar enviar o valor. Caso ele esteja passando o valor no print_r verifique o tipo deste campo no seu banco talvez seja isso que ele não esta cadastrando. A variável no BD estava correta. Realmente não consegui fazer do jeito que citei. A forma que resolvi foi incrementar no banco de dados logo no início e depois mostrar a variável. ficou: $sql = mysql_query("INSERT INTO `agenda`(`conteudo`,`autor`,`uso_nome`) VALUES ('$conteudo','$autor','$logado')") or die(mysql_error()); Não ficou bem como queira mas resolve bem meu problema até o momento. Obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites