Jump to content


Photo

Sistema De Enquete


  • Faça o login para participar
10 replies to this topic

#1 CaRLo

CaRLo

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino
  • Localidade:Pelotas/RS
  • Interesses:HTML, CSS, jQuery, PHP, MySQL, Fireworks

Posted 17/04/2007, 09:18

Bom... eu desenvolvi um sistema de enquete, funciona perfeitamente ...
O única problema está que do modo que eu fiz não me possibilita adicionar mais de uma pergunta
Aqui vai a tabela que eu estou usando ...

CREATE TABLE `enquete` (
  `id` int(20) unsigned NOT NULL auto_increment,
  `opcao` varchar(300) collate latin1_general_ci NOT NULL,
  `votos` int(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5;
INSERT INTO `enquete` VALUES (1, 'Ótimo', 2);
INSERT INTO `enquete` VALUES (2, 'Bom', 3);
INSERT INTO `enquete` VALUES (3, 'Ruim', 2);
INSERT INTO `enquete` VALUES (4, 'Péssimo', 2);

Nem a pergunta se inclui na tabela ... eu coloco ela direto ...
Gostaria de saber se alguem pode me dar uma dica de como montar uma tabela
que me possibiliti adicionar novas perguntas... Obrigado! :)
Hospedagem: www.HostSul.Com
Hospedagem Linux, Hospedagem Windows, Revenda de Hospedagem e Registro de domínios. Servidores EUA e BR.

"É melhor calar-se e deixar que as pessoas pensem que VOCÊ é um idiota do que falar e acabar com a dúvida."

#2 Diego Schiavenin

Diego Schiavenin

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Não informado

Posted 17/04/2007, 09:33

Bom... eu desenvolvi um sistema de enquete, funciona perfeitamente ...
O única problema está que do modo que eu fiz não me possibilita adicionar mais de uma pergunta
Aqui vai a tabela que eu estou usando ...

CREATE TABLE `enquete` (
  `id` int(20) unsigned NOT NULL auto_increment,
  `opcao` varchar(300) collate latin1_general_ci NOT NULL,
  `votos` int(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5;
INSERT INTO `enquete` VALUES (1, 'Ótimo', 2);
INSERT INTO `enquete` VALUES (2, 'Bom', 3);
INSERT INTO `enquete` VALUES (3, 'Ruim', 2);
INSERT INTO `enquete` VALUES (4, 'Péssimo', 2);

Nem a pergunta se inclui na tabela ... eu coloco ela direto ...
Gostaria de saber se alguem pode me dar uma dica de como montar uma tabela
que me possibiliti adicionar novas perguntas... Obrigado! :)


Olha você poderia fazer algumas tabelas...
Essa é minha idéia, não pode ser a mais correta, mas facilita para vc...

CREATE TABLE `enquete` (  `id` int(8) NOT NULL auto_increment,  `titulo` varchar(70) NOT NULL,  PRIMARY KEY  (`id`));INSERT INTO `opcao` VALUES (1,'O que você acha do BBB?');CREATE TABLE `opcao` (  `id` int(8) NOT NULL auto_increment,  `idenquete` int(8) NOT NULL,  /* o ID da enquente, aqui você sabe de quem essas opções são... */  `opcao` varchar(20) NOT NULL,  `votos` int(20) default 0,  PRIMARY KEY  (`id`));INSERT INTO `opcao` VALUES (1,1,'Ótimo');INSERT INTO `opcao` VALUES (2,1,'Bom');INSERT INTO `opcao` VALUES (3,1,'Ruim');INSERT INTO `opcao` VALUES (4,1,'Péssimo');

Depois faz um laço e mostra a equente e depois as opções...

Como eu falei, derepente não é a melhor maneira, mas já resolve seu caso...

#3 Evitark

Evitark

    Normal

  • Usuários
  • 67 posts
  • Sexo:Masculino

Posted 17/04/2007, 10:22

A resposta acima está totalmente correta. Única adição que eu faria era criar uma FK para quando apagar a enquete, apagar também as opções.

ALTER TABLE opcao
ADD CONSTRAINT FK_Enquete_Opcao
FOREIGN KEY(idenquete) REFERENCES enquete(id)
ON DELETE CASCADE;

;)

#4 Diego Schiavenin

Diego Schiavenin

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Não informado

Posted 17/04/2007, 10:24

A resposta acima está totalmente correta. Única adição que eu faria era criar uma FK para quando apagar a enquete, apagar também as opções.

ALTER TABLE opcao
ADD CONSTRAINT FK_Enquete_Opcao
FOREIGN KEY(idenquete) REFERENCES enquete(id)
ON DELETE CASCADE;

;)


Boa! Isso ai, nem me toquei em fazer FK... hehehe...
Valeu pela dica...
Acho que resolve o caso da enquente né...
T+

#5 CaRLo

CaRLo

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino
  • Localidade:Pelotas/RS
  • Interesses:HTML, CSS, jQuery, PHP, MySQL, Fireworks

Posted 17/04/2007, 16:56

Só não intendi esse tal FK se alguem puder me explicar um poco ficaria grato! ;P

Abraços
Hospedagem: www.HostSul.Com
Hospedagem Linux, Hospedagem Windows, Revenda de Hospedagem e Registro de domínios. Servidores EUA e BR.

"É melhor calar-se e deixar que as pessoas pensem que VOCÊ é um idiota do que falar e acabar com a dúvida."

#6 Diego Schiavenin

Diego Schiavenin

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Não informado

Posted 17/04/2007, 18:00

Explicando por cima, é um controle que o banco faz, quando você apagar a enquete, ele irá apagar todas as perguntas...

ALTER TABLE opcao

// Constraint é para controlar as talelas, o próprio banco faz isso para vc...
ADD CONSTRAINT FK_Enquete_Opcao

// Diz qual campo e qual tabela eles vão se controlar...
FOREIGN KEY(idenquete) REFERENCES enquete(id)

// Isso aqui diz para ele apagar todas as opções vinculadas com a tabela equete...
ON DELETE CASCADE;
// se não tiver: "on delete cascade", ele só vai dx. excluir a equente, depois que você excluir as opções...

Espero que tenha entendido...

OK...

Abraços...

#7 CaRLo

CaRLo

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino
  • Localidade:Pelotas/RS
  • Interesses:HTML, CSS, jQuery, PHP, MySQL, Fireworks

Posted 21/04/2007, 07:26

Cara isso não funciono não ... o.Õ
Eu executo junto com o otro código do sql?

Abraços.
Hospedagem: www.HostSul.Com
Hospedagem Linux, Hospedagem Windows, Revenda de Hospedagem e Registro de domínios. Servidores EUA e BR.

"É melhor calar-se e deixar que as pessoas pensem que VOCÊ é um idiota do que falar e acabar com a dúvida."

#8 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 21/04/2007, 20:00

FK é chave estrangeira. Quer dizer que aquele registro, tem relação com outro registro de outra tabela. Eu só não tenho certeza se o como o mysql trabaha com chave estrangeira... mas no postgres seria assim.

Esse código você digitaria no seu phpmyadmin, uma vez, só pra acertar!
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#9 CaRLo

CaRLo

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino
  • Localidade:Pelotas/RS
  • Interesses:HTML, CSS, jQuery, PHP, MySQL, Fireworks

Posted 22/04/2007, 03:03

Mais ai é que ta ...
Eu testei pra vê se iria realmente apagar as opções vinculadas com a tabela enquete
E não apago :T

Abraços
Hospedagem: www.HostSul.Com
Hospedagem Linux, Hospedagem Windows, Revenda de Hospedagem e Registro de domínios. Servidores EUA e BR.

"É melhor calar-se e deixar que as pessoas pensem que VOCÊ é um idiota do que falar e acabar com a dúvida."

#10 Evitark

Evitark

    Normal

  • Usuários
  • 67 posts
  • Sexo:Masculino

Posted 22/04/2007, 11:45

Se não apagou então não criou a FK. Ou já tinha alguns registros "perdidos" por lá...
Tente criar novamente as tabelas. Se o MySQL retornar algum erro, poste ele aqui.

@fly2k:
O MySQL trabalha com FK da mesma forma que o PostgreSQL ;)
Única coisa é que a tabela tem que ser InnoDB. Se não me falha a memória tabelas MyISAM não suportam FK (nem transação).
Se eu estiver errado alguém me corrija, por favor :)

#11 CaRLo

CaRLo

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino
  • Localidade:Pelotas/RS
  • Interesses:HTML, CSS, jQuery, PHP, MySQL, Fireworks

Posted 22/04/2007, 16:05

Não adianta :T
Não funciona
Tem certeza que o código ta certo?

Abraço!

Edição feita por: CaRLo, 22/04/2007, 16:07.

Hospedagem: www.HostSul.Com
Hospedagem Linux, Hospedagem Windows, Revenda de Hospedagem e Registro de domínios. Servidores EUA e BR.

"É melhor calar-se e deixar que as pessoas pensem que VOCÊ é um idiota do que falar e acabar com a dúvida."




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq