Ir para conteúdo

Arquivado

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

Rasp

Integração de tabelas

Recommended Posts

Fala galera!

Venho pedir uma luz e se possível uma ajudinha também a vocês... estou montando um sistema e na parte de login tenho que cadastrar materias para os usuarios limitidos (coisa que ainda não consegui resolver) até aí tudo bem, seriam modulos, logo fiz referencias da tabela de materias na de usuarios porém, ouveram modificações e agora são várias materias que podem ser cadastradas em cada usuario, aí veio o problema, montei a tabela e não sei como irei fazer INSERT e UPDATE em mais de uma tabela ao mesmo tempo... será que vcs poderiam me ajudar?

 

Segue os arquivos de INSERT e UPDATE e também a estrutura das tabelas:

 

--
-- Estrutura da tabela `arquivos`
--

CREATE TABLE IF NOT EXISTS `arquivos` (
  `id_arquivo` smallint(5) unsigned NOT NULL auto_increment,
  `caminho` varchar(200) NOT NULL,
  `fk_materia` smallint(2) NOT NULL,
  PRIMARY KEY  (`id_arquivo`),
  UNIQUE KEY `login` (`caminho`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

-- --------------------------------------------------------

--
-- Estrutura da tabela `materias`
--

CREATE TABLE IF NOT EXISTS `materias` (
  `id_materia` smallint(5) unsigned NOT NULL auto_increment,
  `materia` varchar(50) NOT NULL,
  PRIMARY KEY  (`id_materia`),
  UNIQUE KEY `login` (`materia`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

-- --------------------------------------------------------

--
-- Estrutura da tabela `niveis`
--

CREATE TABLE IF NOT EXISTS `niveis` (
  `id_nivel` smallint(5) unsigned NOT NULL auto_increment,
  `nivel` varchar(20) NOT NULL,
  PRIMARY KEY  (`id_nivel`),
  UNIQUE KEY `login` (`nivel`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;

--
-- Extraindo dados da tabela `niveis`
--

INSERT INTO `niveis` (`id_nivel`, `nivel`) VALUES
(1, 'Administrador'),
(2, 'Aluno');

-- --------------------------------------------------------

--
-- Estrutura da tabela `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id_usuario` smallint(5) unsigned NOT NULL auto_increment,
  `login` varchar(20) NOT NULL,
  `senha` char(40) NOT NULL,
  `nome` varchar(45) NOT NULL,
  `email` varchar(60) NOT NULL,
  `fk_nivel` tinyint(2) unsigned NOT NULL,
  `chave` char(40) NOT NULL,
  PRIMARY KEY  (`id_usuario`),
  UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

-- --------------------------------------------------------

--
-- Estrutura da tabela `usuarios_materias`
--

CREATE TABLE IF NOT EXISTS `usuarios_materias` (
  `id_usuario` smallint(5) unsigned NOT NULL,
  `id_materia` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 

Cadastro de Alunos:

 

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	foreach($_POST as $campo => $valor) { $$campo = anti_injection($valor); }
	$erro = array();
	if($login == NULL || $login == '')
		$erro[] = "Informe um login (nome de usuário)";
	if($senha == NULL || $senha == '')
		$erro[] = "Informe uma senha";
	if(strlen($senha) < 6)
		$erro[] = "A senha deve ter pelo menos 6 caracteres";
	if($nome == NULL || $nome == '')
		$erro[] = "Informe o nome completo do usuário";
	if($email == NULL || $email == '')
		$erro[] = "Infome um endereço de email válido";
	if($niveis == NULL || $niveis == '')
		$erro[] = "Informe o tipo de usuário";
	if(strlen($niveis) > 2)
		$erro[] = "Nível informado está incorreto";
	if(count ($erro) > 0) {
		$msg = '';
		foreach($erro as $v)
			$msg .= $v."\\n";
			$usuario_salvar = "<script type=\"text/javascript\">alert('".$msg."');</script>";
			return false;
		}

	$senha		= sha1($senha);
	$chave		= sha1( sha1(strtolower(trim($login))) . sha1(strtolower(trim($senha))) );
	Abre_Conexao();
	if(@mysql_query("INSERT INTO usuarios VALUES ( NULL , '$login', '$senha', '$nome', '$email', '$niveis', '$materias', '$chave' )")) {
		if(mysql_affected_rows() == 1) {
			$usuario_salvar = "<script type=\"text/javascript\">alert('Registro efetuado com sucesso');</script>";
		}
	} else {
		if(mysql_errno() == 1062) {
			echo $erros[mysql_errno()];
			exit;
		} else {
			echo mysql_error();
			exit;
		}
		@mysql_close();
	}
}
?>

 

Editar Alunos:

 

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	foreach($_POST as $campo => $valor) { $$campo = anti_injection($valor); }
	$erro = array();
	if($senha == NULL || $senha == '')
		$erro[] = "Informe uma senha";
	if(strlen($senha) < 6)
		$erro[] = "A senha deve ter pelo menos 6 caracteres";
	if($nome == NULL || $nome == '')
		$erro[] = "Informe o nome completo do usuário";
	if($email == NULL || $email == '')
		$erro[] = "Infome um endereço de email válido";
	if($niveis == NULL || $niveis == '')
		$erro[] = "Informe o tipo de usuário";
	if(strlen($niveis) > 2)
		$erro[] = "Nível informado está incorreto";
	if(count ($erro) > 0) {
		$msg = '';
		foreach($erro as $v)
			$msg .= $v."\\n";
			$usuario_editar = "<script type=\"text/javascript\">alert('".$msg."');</script>";
			return false;
		}

	$senha = sha1($senha);
	$chave = sha1( sha1(strtolower(trim($login))) . sha1(strtolower(trim($senha))) );
	Abre_Conexao();
	if(@mysql_query("UPDATE usuarios SET senha = '$senha', nome = '$nome', email = '$email', fk_nivel = '$niveis', fk_materia = '$materias', chave = '$chave' where id_usuario = $id")) {
		if(mysql_affected_rows() == 1) {
			$usuario_editar = 'Registro atualizado com sucesso';
		}
	} else {
		if(mysql_errno() == 1062) {
			echo $erros[mysql_errno()];
			exit;
		} else {
			$usuario_editar = 'Não foi possivel efetuar a edição';
			exit;
		}
		@mysql_close();
	}
}
header("Location: usuario_listar.php");
?>

Se alguém puder ajudar agradeço galera!

vlw e abss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que alguem poderia dar uma luz?

Vlwww!

Amigo acho que posso te ajudar na parte de update das duas tabelas;

para fazer o update em duas tabelas ao memos tempo pode fazer como se fosse um select com join, ou mais simples ainda deste modo,

 

UPDATE `fornecedores`,`contador` SET `fornecedores`.`nome`= 'teste de update', `contador`.`ip`=
'123.123.3.3343' Where `fornecedores`.`id`= 24  AND `contador`.`id`= 24;

Agora para fazer o insert pode criar duas querry e executar as duas é uma gambi mas pode te ajudar por enquanto.

 

É isso ai amigo espero ter ajudado ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera!

Infelizmente não consegui fazer funcionar não... somente usando 2 querys (coisa que não é correta né) e mesmo assim quando coloco pra pegar o array dos checkboxes não vai de jeito nenhum.

 

Já nem sei o que eu faço mais

Quem puder ajudar agradeço

Abss.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei, utilizar com inner join (mais parece que fiz algo errado pois não salva), do modo que o roniware explicou mais não salva, pelo contrario apresenta erro. Também tentei com 2 querys por efeito de teste e foi, porém só está salvando um exemplo ao invés de salvar vários dos marcados nos checks.

 

Fiquei completamente perdido.

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.