Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Chiarelotto

atualização de dados

Recommended Posts

galera bom dia.

preciso atualizar 4 tabelas, isso acontece quando eu atualizo no cadastro do aluno o numero do cartao dele.

Esse cartão dele serve para ele ter a presença na aula, saber o grau de formação, a faixa que ele usa alem do seu proprio cadastro.

 

fiz um formulario onde eu pego o numero do cartao atual.

 

o problema e que na tabela presenca, grau_formacao e faixa existe mais de um registro com o id_cartao dele.

 

tentei fazer o codigo a seguir, so que quando ele atualiza o cadastro do aluno na tabela aluno ele para de atualizar as outras.

 

alquem sabe como posso arrumar isso??

 

<?php
$ip = "localhost";
$user = "root";
$password = "15261234";
$dataname = "academia";

   $db = mysql_connect($ip, $user, $password) or die("Não pude conectar: " . mysql_error());
   mysql_select_db($dataname);

id = $_GET['id'];
$id_novo = $_POST['id_novo'];

$sql = mysql_query("select * from alunos where id = '$id'", $db);
$vetor = mysql_fetch_array($sql);

$id_cartao = $vetor[id_cartao];

$sql_faixa = mysql_query("select * from faixaaluno where id_aluno = '$id_cartao'", $db);
$sql_grau = mysql_query("select * from grau where id_aluno = '$id_cartao'", $db);
$sql_presenca = mysql_query("select * from presenca where id_aluno = '$id_cartao'", $db);

	while ($vetor=mysql_fetch_array($sql_faixa)) {

		$update = mysql_query("update faixaaluno set id_aluno = '$id_novo'", $db);

	} 

	while ($vetor1=mysql_fetch_array($sql_grau)) {

		$update = mysql_query("update grau set id_aluno = '$id_novo'", $db);

	}

	while ($vetor2=mysql_fetch_array($sql_presenca)) {

		$update = mysql_query("update presenca set id_aluno = '$id_novo'", $db);

	}

$update_aluno = mysql_query("update alunos set id_cartao = '$id_novo'", $db);

echo "Cadastrado com sucesso";

?>

 

tabelas utilizadas:

 

create table alunos (
id int(11) not null auto_increment,
nome varchar(255) default null,
cpf varchar(255) default null,
rg varchar(255) default null,
datanasc date default null,
datainsc date default null,
dataultgrad date default null,
cep varchar(255) default null,
endereco varchar(255) default null,
bairro varchar(255) default null,
cidade varchar(255) default null,
estado varchar(255) default null,
telefone varchar(255) default null,
celular varchar(255) default null,
email varchar(255) default null,
observacoes text default null,
plano varchar(255) default null,
programa varchar(255) default null,
turma varchar(255) default null,
faixa varchar(255) default null,
imagem varchar(255) default null,
primary key(id)
);

create table frequencia (
id int(11) not null auto_increment,
id_aluno int(11) default null,
data date default null,
hora time default null,
primary key(id)
);

create table faixaaluno (
id int(11) not null auto_increment,
id_faixa int(11) default null,
faixa varchar(255) default null,
id_aluno int(11) default null,
primary key(id)
);

create table grau (
id int(11) not null auto_increment,
id_faixa int(11) default null,
id_aluno int(11) default null,
nome varchar(255) default null,
data date default null,
primary key(id)
);

 

o campo id_aluno e o numero do cartao que e digitado, pois e feito em grafica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Diego,

 

Fazer o fetch filtrando com o id do aluno não quer dizer que o update vai ser feito só para este id. Precisa colocar o WHERE no update.

Pode retirar todos os selects, e fazer para cada tabela apenas:

 

 $update = mysql_query("update faixaaluno set id_aluno = '$id_novo' where id_aluno = '$id_cartao'", $db); 

 

Da forma como foi feito, o programa está tentando fazer update em todos os registros da tabela com o mesmo id, e provavlmente está dando erro de chave duplicada, por isso não atualiza.

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.