Ir para conteúdo

Arquivado

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

donrafy

Dúvida: cadastrar valores pré-definidos no banco de dados

Recommended Posts

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

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

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

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

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

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

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

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,

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

×

Informação importante

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