• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PorTVenZ

Bem é asim. eu queria que na inserçao dos ID

11 mensagens neste tópico

Bem pessoal tenho uma big pequena grande dúvida na formulação de bases de dados com respeito aos ID.

1130579046Problemas.PNG

Bem é assim: eu queria que na inserção dos ID dos Alunos não só aparecessem os ID = 01 , 02 , 03...

mas que pudesse antes dos 01 ter uma variavel única, como por exemplo: "al250"01 O que está em itálico é o ID normal e o que está a negrito é a variavel q gostaria que aparecesse, para que fossem reconhecidos (tais ID) mais rapidamente, para serem também mais rapidamente apagado o seu registro. (A variável  significa AL = Alunos, 25= ano lectivo 2005.)

Não sei se me fiz entender bem, mas qualquer coisa digam que explico-me melhor,

:P

agradeço imenso que me ajudem ssf.

[Editado por JoãoRodrigues para corrigir o português, a gramática, etc para ficar "percebível"..]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uau, isso viola a 1ª forma normal...

Quanto à dúvida, o ID é o que tu lá meteres, desde que não esteja definido auto-incremento e que seja um varchar (por exemplo).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, isso é uma boa alternativa,

mas...

na hora de apagar, ele apaga com o ID que eu insera?

obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, ele apaga com qualquer um dos campos que metas no WHERE do DELETE. Tipo

DELETE FROM Aluno WHERE id = 'al25001';
--ou
DELETE FROM Aluno WHERE nome LIKE 'Juvenal%';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas isso tenho de por um por um?

o ja identifica tudos os ID de "al25001, al25002.." que eu inserir?

obrigado pela ajuda vou experimentar o codigo  :smoke: ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho dos problemas =/

1ero quando eu adiciono um aluno, id="al25098" nome = "alex" sabendo q o ID é primario. ele ao inserir me diz isto " Duplicate entry '' for key 2" no site. agora na bases de dados PHPadmyn aparece adicionado o aluno :S

2do, no apagar ele me diz " Query was empty" tendo l´´a a informnaçao do aluno :S que sera q tenho de errado? :S

obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1) Como tens definida a tabela aluno? Principalmente, que chaves definiste?

2) Mostra a query, e os dados do aluno que estão na tabela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

                                                  NULL

id_aluno varchar(7)    Não  Primária   

nome_aluno varchar(100) Não

nao percebi a 2...

obrigao

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tens mais nenhum campo na tabela aluno? Nenhum unique, nem nenhuma chave? Se não tiveres, é porque estás a tentar adicionar um aluno com um ID já existente. Se estás a tentar alterar um aluno, ou o apagas 1º e voltas a inserir, ou utilizas um UPDATE.

A 2 era para mostrares o código que estás a utilizar para apagar o aluno.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form4")) {
  $deleteSQL = sprintf("DELETE FROM `descripcao` WHERE `descripcao`,`id_descrip`=`%s` LIMMIT 1",
                       GetSQLValueString($_GET['id_descrip'], "text"));


  mysql_select_db($database_connect, $connect);
  $Result1 = mysql_query($insertSQL, $connect) or die(mysql_error());
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form3")) {
  $insertSQL = sprintf("INSERT INTO alunos (id_aluno) VALUES (%s)",
                       GetSQLValueString($_POST['id_descrip'], "int"));

  mysql_select_db($database_connect, $connect);
  $Result1 = mysql_query($insertSQL, $connect) or die(mysql_error());
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o propósito de ter uma chave primária assim? Queres que um aluno esteja associado a outra tabela? Ou simplesmente queres numerar os alunos de 1 a X baseado num ano lectivo qualquer?

Se qualquer uma das respostas em cima for 'sim' é muito mais fácil se criares dois (ate diria 3) campos para guardar essa informacao e esses dois campos sao a tua primary key.

Exemplo:

CREATE TABLE myTable(
aluno_ano varchar(10) NOT NULL,
id int NOT NULL
)
ALTER TABLE myTable ADD PRIMARY KEY (aluno_ano, id);

agora:

Queres que um aluno esteja associado a outra tabela?

id tem de ser uma chave estrangeira entao.

ALTER TABLE myTable ADD CONSTRAINT Id_FK Foreign Key (id) REFERENCES myOtherTable (myOtherTableID);

Ou simplesmente queres numerar os alunos de 1 a X baseado num ano lectivo qualquer

a maneira como construiste a tabela ali atras é suficiente. para fazeres o auto increment daquele campo, sugiro que faças uma especie de:

INSERT INTO myTable(aluno_ano, id) values('al25', (SELECT COALESCE(MAX(id)+1, 1) FROM myTable);

acho que é uma coisa mais organizada do que tentares meter tudo enfiado dentro de apenas um campo. e isto permite-te muitas coisas.

uma sugestao minha era mesmo 3 campos, do tipo

CREATE TABLE myTable(
tipo varchar(10) NOT NULL,
ano varchar(4) NOT NULL,
id int NOT NULL
)
ALTER TABLE myTable ADD PRIMARY KEY (aluno_ano, id);

ficava ainda mais organizado para varios tipos (aluno, prof, etc...), ano (2005, 2006,...), ID

diz qualquer coisa

abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora