Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal boa tarde,
É o seguinte, estou construindo um sistema de apontamento de horas, na verdade já esta tudo praticamente pronto, porem surgiu a necessidade de aprovar essas horas "Sim" ou "Não".
dessa forma criei um campo na tabela responsavel por armazenar esses valores no campo com apenas 1 caracter do tipo char S = sim, N = não.
para aprovação das horas crei um select no qual aparecem as seguintes informações:
Data Nome Projeto Tipo Horas Obs Aprovado Responsável 12/12/2013 Fulano Projeto x HN 0.5 adm
Porem o campo aprovado é um checkbox que eu quero que fique desmarcado para não e marcado para sim.
Ola cesar, na verdade estou tendo problema com as duas coisas.
mais a principio é o select como trazer os checkbox marcados ou vazios
Poste seu código para eu ver a consulta SQL e o Formulario
<?php
include('auth.php');
include('biblio.fcn');
/*if($timeapp_level == "User"){
echo "<script language='javascript'>alert('A\xe7\xe3o n\xe3o permitida'); window.location.href = 'index.php'</script>";
header("Location:index.php");
}*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="appman/jquery-1.3.2.min.js"></script>
<link rel="stylesheet" href="appman/adm.css" type="text/css" media="screen" title="default" />
<link rel="stylesheet" href="appman/screen.css" type="text/css" media="screen" title="default" />
<link rel="stylesheet" href="timeapp.css" type="text/css">
<link rel="stylesheet" href="appman/jquery-ui-1.8.20.custom.css" type="text/css" media="screen" title="default" />
<script type="text/javascript" src="appman/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="appman/jquery-ui-1.8.20.custom.min.js"></script>
<title>Aprovação de Horas</title>
</head>
<body>
<table id="form" width="50%" border="1" align="left" cellpadding="0" cellspacing="1"><!-- tabela principal -->
<tr>
<td>
<form id="cadastro" action="#" method="post" enctype="multipart/form-data" name="cadastro">
<tr>
<td width="20%" >Data de Inicio: </td>
<td align="left">
<input type="text" name="start_date" size="10" maxlength="10" OnKeyUp="datainicio(this);">
*</td>
</tr>
<tr>
<td>Data de Termino: </td>
<td align="left">
<input type="text" name="end_date" size="10" maxlength="10" OnKeyUp="datatermino(this);" >
*</td>
</tr>
<tr>
<td>Projeto: </td>
<td>
<select name="type_id">
<option value="">Todos</option>
<?php
$tresults = mysql_query("select * from time_types order by description");
if($trow = mysql_fetch_array($tresults)){
do{
?>
<option value="<?php print $trow['type_id']; ?>"><?php print $trow['description']; ?></option>
<?php
}while($trow = mysql_fetch_array($tresults));
}
?>
</select>
</td>
</tr>
<tr>
<td>Funcionário: </td>
<td>
<select name="user_id">
<option value="">Todos</option>
<?php
$uresults = mysql_query("select * from user_info where level = 'User' or level = 'Administrator' order by fname");
if($urow = mysql_fetch_array($uresults)){
do{
?>
<option value="<?php print $urow['user_id']; ?>"><?php print $urow['fname']; ?> <?php print $urow['lname']; ?></option>
<?php
}while($urow = mysql_fetch_array($uresults));
}
?>
</select>
</td>
</tr>
<tr>
<td>Aprovado: </td>
<td>
<select name="status_appro">
<option value="N">Não</option>
<option value="S">Sim</option>
</select>
</td>
</tr>
<tr>
<td><input type="submit" value="Filtrar" class="" name="enviar"/>
</td>
</tr>
</tr>
</table>
</form><!--fecha "cadastro"-->
<?php
//----------------- pega os dados do formulario -------------------------
$data_inicio = (isset($_POST['start_date'])) ? $_POST['start_date'] : '';
$data_termino = (isset($_POST['end_date'])) ? $_POST['end_date'] : '';
$projeto = (isset($_POST['type_id'])) ? $_POST['type_id'] : '';
$funcionario = (isset($_POST['user_id'])) ? $_POST['user_id'] : '';
$status = (isset($_POST['status_appro'])) ? $_POST['status_appro'] : '';
if (($data_inicio!='')&&($data_termino!='')){
//-------------------------- consulta --------------------------------
@$consulta = "select usr.fname as fun_fname, usr.lname as fun_lname , fun.function_desc, dat.time_id,
dat.function_fk, DATE_FORMAT(dat.data_date, '%d/%m/%Y') AS date_br, wor.work_name, dat.hours, pro.type_id, pro.description,
dat.notes, dat.status_appro, CASE dat.status_appro
WHEN 'S' THEN 'Sim'
WHEN 'N' THEN 'Não'
END as status_appro, dat.user_appro_fk, app.user_id, app.fname as app_fname, app.lname as app_lname
from
user_info usr, user_functions fun, time_work wor, time_types pro, time_data dat, user_info app
where dat.function_fk = fun.function_id and usr.user_id = dat.user_id and dat.type_id = pro.type_id and dat.work_id_fk = wor.work_id and dat.user_appro_fk = app.user_id
and dat.user_id LIKE '%$funcionario%' and dat.type_id LIKE '%$projeto%' and dat.status_appro LIKE '%$status%' and dat.data_date between '$data_inicio' and '$data_termino'
order by dat.data_date desc";
@$resultado = mysql_query($consulta) or die("Escolha uma data de inicio e termino!");
// --------------------------------------------------------------------
}
echo"
<form id='notas' action='write_appman.php' method='post' enctype='multipart/form-data' name='notas'>
<table class='consulta' border='0' width='100%' id='table_notas'>
<tr id='linha1'>
<td>Data</td>
<td>Nome</td>
<td>Projeto</td>
<td>Tipo</td>
<td>Horas</td>
<td>Obs</td>
<td>Aprovado</td>
<td>Responsável</td>
</tr>";
$i = 0;
//Busca os campos da tabela
while (@$linha = mysql_fetch_assoc($resultado)) {
$data = $linha['date_br'];
$nome = $linha['fun_fname'];
$sobrenome = $linha['fun_lname'];
$projeto_cod = $linha['type_id'];
$projeto_nome = $linha['description'];
$tipo_hora = $linha['work_name'];
$horas = $linha['hours'];
$observacao = $linha['notes'];
$condicao = $linha['status_appro'];
$res_nome = $linha['app_fname'];
$res_snome = $linha['app_lname'];
$cod_hora = $linha['time_id'];
echo"<tr id='infos'>
<td>".$data."</td>
<td>".$nome." ".$sobrenome."</td>
<td>".$projeto_cod." - ".$projeto_nome."</td>
<td>".$tipo_hora."</td>
<td>".$horas."</td>
<td>".$observacao."</td>
<td>
<input type='text' name='condicao".$i."' onblur=valida(this.value,'condicao".$i."'); align='center' value='".$condicao."' checked='yes'/>";
echo "<input type='hidden' name='data_inicio' value='".$data_inicio."'/>
<input type='hidden' name='data_termino' value='".$data_termino."'/>
<input type='hidden' name='cod_hora[]' value='".$cod_hora."'/>
</td>
<td>".$res_nome." ".$res_snome."</td>
</tr>";
$i++;
}
echo"
<input type='hidden' name='total' value='".$i."'>
<tr>
<td colspan='3'> </td>
</tr>
</table>
<table>
<tr>
<td colspan='3'>
<input type='submit' value='Salvar' class='' name='enviar'/>
<input type='reset' value='Limpar' class=''/>
</td>
</tr>
</table>";
?>
</table>
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--<input type='checkbox' class='' name='condicao".$i."' onblur=valida(this.value,'condicao".$i."'); align='center' value='".$condicao."'/>";-->
</body>
</html>Pessoal me desculpem se o codigo ficou muito grande e eu acabei não especificando o que não estou conseguindo fazer, como ainda não consegui usar o checkbox no momento esta assim.
<input type='text' name='condicao".$i."' align='center' maxlength='1' size='1' value='".$condicao."' />";
Eu não estou sabendo a logica de colocar isso em checkbox. Como voces podem reparar é um array da forma como está aparece assim.
Data Nome Projeto Tipo Horas Obs Aprovado Responsável
13/12/2013 fulano teste HN 1 N Não Aprovado
13/12/2013 fulano teste HN 6 N Não Aprovado
No momento o campo aprovado está como texto, era justamente ele que eu queria alterar para CHECKBOX, porem depois eu vou fazer um update no banco, baseado nas alterações feitas no checkbox
http://www.w3schools.com/tags/att_input_checked.asp
De acordo com o valor, você coloca ou não esse atributo.
mais estou comparando isso em um array com multiplos resultados.
De acordo com o valor \da respectiva coluna de cada linha/, você coloca ou não esse atributo.
o select deu certo, porem ainda estou tendo problemas com o update
Os campos eu deixei assim:
<input type='checkbox' name='condicao".$i."' align='center'
<?php if ($condicao == 'N'){ ?> value='N' <?php } ?>
<?php if ($condicao == 'S'){ ?> value='S' checked /> <?php } ?>Quais problemas?
Obs.: o value não muda, apenas o atributo "checked".
Você não tem que especificar dois valores diferentes de acordo com o que está no BD. O valor vai ser sempre 'S', a única diferença vai ser que se o campo tiver o valor 'S', ele vai estar marcado, senão, vai estar desmarcado. O checkbox funciona dessa forma, quando você seleciona ele, o valor dele é enviado para o formulário, senão, a variável correspondente ao campo nem sequer vai ser enviada. Então, basta colocar o valor S, ou até mesmo nenhum valor, que caso a variável correspondente ao campo exista, o valor vai ser S, senão, N.
<input type='checkbox' name='condicao".$i."' align='center' value='S' <?php if ($condicao == 'S'){ ?> checked <?php } ?>/>
Pra obter o valor:
if (isset($_POST['campo')) {
$condicao = 'S';
}
else {
$condicao = 'N';
}Amigos obrigado pela ajuda, eu estava sendo vencido pela burrice kkkk.
Na verdade eu nunca havia usado checkbox nesse tipo de caso.
Acabei fazendo um pouco diferente o update
//Executa enquanto houver Aprovações
for ($x=0; $x<$total; $x++){
@$condicao[$i] = $_POST["condicao".$i];
//Verifica se o campo checkbox está vazio
if(empty($condicao[$i])){
//Não aprova checkbox vazio
$condicao[$i] = "N";
//Faz o update da nota no BD
$aprovacao = "UPDATE time_data
SET status_appro='$condicao[$i]',
user_appro_fk = $timeapp_id
WHERE time_id=".$cod_hora[$i];
print //$aprovacao ."<BR>";
$res = mysql_query($aprovacao) or die("O status não foi alterado");
$i++;
continue;
}
A duvida é como gravar isto no banco de dados??