Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Me ajudem!! Estou aqui com um probleminha, tenho um BD com as seguintes tabelas baixo, que no caso fazem um relacionamento para gerar a tabela "notas"
Eu preciso imprimir a ficha, porém no uso normal ele sempre me traz a ficha em andamento. Eu queria poder definir pelo campo id_ano para ele trazer a fase que eu preciso com as notas daquele ano.
As très tabela que tenho:
CREATE TABLE IF NOT EXISTS clientes (
id_cliente int(10) NOT NULL AUTO_INCREMENT,
nome varchar(150) NOT NULL,
cargo varchar(150) NOT NULL,
rg varchar(150) NOT NULL,
PRIMARY KEY (id_cliente)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `clientes` (`id_cliente`, `nome`, `cargo`, `rg`) VALUES
(1, 'Livia', 'pretendente', '0000000001');
CREATE TABLE IF NOT EXISTS `fases` (
id_fase int(10) NOT NULL AUTO_INCREMENT,
id_ano int(10) NOT NULL,
fase varchar(255) NOT NULL,
PRIMARY KEY (id_fase)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `fases` (`id_fase`, `fase`) VALUES
(1, 'FASE 1'),
(2, 'FASE 2'),
(3, 'FASE 3'),
(4, 'FASE 4'),
(5, 'FASE 5');
CREATE TABLE IF NOT EXISTS `anos` (
id_ano int(10) NOT NULL AUTO_INCREMENT,
ano varchar(30) NOT NULL,
PRIMARY KEY (id_ano)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2020 ;
INSERT INTO `anos` (`id_ano`, `ano`) VALUES
(2012, '2012'),
(2013, '2013'),
(2014, '2014'),
(2015, '2015'),
(2016, '2016'),
(2017, '2017'),
(2018, '2018'),
(2019, '2019'),
No relacionamento se cria a tabela notas abaixo
CREATE TABLE IF NOT EXISTS notas (
id_cliente int(10) NOT NULL,
id_fase int(10) NOT NULL,
id_ano int(10) NOT NULL,
id_criterio int(10) NOT NULL,
avalia1 varchar(10) DEFAULT NULL,
avalia2 varchar(10) DEFAULT NULL,
avalia3 varchar(10) DEFAULT NULL,
avalia4 varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `notas` (`id_cliente`, `id_fase`, `id_ano`, `id_criterio`, `avalia1`, `avalia2`, `avalia3`, `avalia4`) VALUES
(1, 1, 2014, 1, '5.00', '6.00', NULL, NULL),
(2, 1, 2014, 1, '6.00', '8.00', NULL, NULL),
(3, 1, 2014, 1, '6.00', '8.00', NULL, NULL),
(1, 2, 2015, 1, '8.00', '3.00', NULL, NULL),
(1, 3, 2016, 1, '5.00', '7.00', NULL, NULL),
(1, 4, 2017, 1, '5.00', '7.00', NULL, NULL),
(1, 5, 2018, 1, '5.00', '7.00', NULL, NULL);
No arquivo está assim:
> <tr><td>
<b>DEPARTAMENTO:</b<?php
$id_fase = mysql_result(mysql_query("SELECT id_fase FROM notas WHERE id_cliente=$_GET[id_cliente]"), 0, id_fase);
echo mysql_result(mysql_query("SELECT fase FROM fases WHERE id_fase=$id_fase"), 0, fase)
?></td></tr>
No primeiro select pego o id da fase, e no echo trago o nome da fase da tabela fases.
Queria saber como nesse primeiro select eu definir nele o ano que quero. 2014, 2016.... da tabela notas Não importa, eu preciso definir isso no select, vai me facilitar. Dessa forma ele vai me trazer os dados que quero do ano certo.
Peço que não me deem outras alternativas fugindo disso, pois só vai me gerar outros trabalhos no código. E no momento isso me ajuda muito.
Não sei qual seria seu exemplo. Se puder postar para ver se consigo aqui.
Veja se este script te ajuda, pois estou trabalhando em algo similar.
#estabelecemos conexão com o banco de dados
mysql_connect('localhost','root','') or die(mysql_error());
#seleciona o banco de dados
mysql_select_db('exemplo') or die(mysql_error());
$estados = mysql_query("SELECT id,titulo FROM estados ORDER BY titulo");
$html .= '<form name="produto" method="get" action="">';
$html .= '<p>';
$html .= '<label for="">Selecione um estado</label>';
$html .= '<select name="id_estado">';
$html .= '<option>Selecione...</option>';
while($estado = mysql_fetch_array($estados)) {
$selected = ($_GET['id_estado'] == $estado['id']) ? 'selected="selected"' : null;
$html .= '<option '.$selected.' value="'.$estado['id'].'">'.$estado['titulo'].'</option>';
}
$html .= '</select>';
$html .= '</p>';
if($_GET['id_estado']) {
$html .= '<p>';
$html .= '<label for="">Selecione uma cidade</label>';
$html .= '<select name="id_cidade">';
$cidades = mysql_query("SELECT id,titulo FROM cidades WHERE estado_id = ".$_GET['id_estado']." ORDER BY titulo");
while($cidade = mysql_fetch_array($cidades)) {
$html .= '<option value="'.$cidade['id'].'">'.$cidade['titulo'].'</option>';
}
$html .= '</select>';
$html .= '</p>';
}
$html .= '<input type="submit" value="Enviar" />';
$html .= '</form>';
echo $html;Não, pois aí ei teria de mudar a lógica do que eu tenho. E no meu caso só precisaria no meu select definir que quero o id_ano específico da tabela notas.
Seria bem simples, mas não sei como definir isso ali.
Só queria definir ali algo como um exemplo abaixo;
id_ano = 2014
Melhorar o entendimento. Ele do modo que está traz sempre a primeira fase que está na tabela, pois se o cliente tiver em vários anos em várias fases, ele sempre vai puxar a última fase. Se eu poder ali determinar o ano que está em id_ano no arquivo, ele vai me trazer a fase que quero do cliente.
Então preciso neste campo definir no primeiro select que quero o id_ano = 2014 ou 2015... Não quero fazer nada exemplar, vai entrar um novo sistema, e esse vai ser somente para consultas dos passados, então apenas vou criar uns 8 arquivos desse, um para cada ano e pronto. Mil vezes mais fácil do que reescrever aqui o melhorar ali, algo que vai ser somente para consultas.
>
<tr><td>
<b>DEPARTAMENTO:</b<?php
$id_fase = mysql_result(mysql_query("SELECT id_fase FROM notas WHERE id_cliente=$_GET[id_cliente]"), 0, id_fase);
echo mysql_result(mysql_query("SELECT fase FROM fases WHERE id_fase=$id_fase"), 0, fase)
?></td></tr>
Preciso então no primeiro select definir ali manualmente o ano que quero. Tipo: id_ano = 2014Resolvido: Acrescentei a linha em negrito, agora ele puxa exatamente o campo e não pelo id.
<tr><td>
<b>DEPARTAMENTO:</b<?php
$id_fase = mysql_result(mysql_query("SELECT id_fase FROM notas WHERE id_cliente=$_GET[id_cliente] **AND id_ano= 2014**"), 0, id_fase);
echo mysql_result(mysql_query("SELECT fase FROM fases WHERE id_fase=$id_fase"), 0, fase)
?></td></tr>
O principio de preencher um select com dados de outro select resolve ?