Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala pessoal, beleza?
Tô eu aqui de novo, com outra dificuldade em relação a um sistema. Seguinte, criei um formulário simples onde carrega o nome dos alunos cadastrados no banco em Select, e após selecionar o aluno, carrega automaticamente os outros dados dele (utilizei JQuery).
O problema que estou tendo é o seguinte: nesses campos, eu preciso comparar as datas entre alguns deles, e validar se aquela data registrada é válida ou não, pois por exemplo: um aluno não pode ter data de curso marcada, antes de ter embarcado. E a minha dificuldade esta exatamente ai, em como eu vou comparar esses dados. Atualmente, o código esta assim:
<?php
include ('conecta_banco.php');
include ('../functions.php');
$aluno_id = $_POST['aluno_id'];
$acao = $_REQUEST['acao'];
$data_embarque;
$data_curso;
$data_acomodacao;
$data_passagem;
$data_seguro;
// INICIO SWITCH $ACAO
switch ($acao) {
/*
* CASE carregarEmbarque
*/
case 'carregarEmbarque':
$sql_data_embarque = "SELECT aluno_data_embarque, aluno_id " .
"FROM alaluno " .
"WHERE aluno_id =".$aluno_id;
$qr_data_embarque = mysql_query($sql_data_embarque) or die(mysql_error());
if(mysql_num_rows($qr_data_embarque) == 0){
echo '<option value="0">'.htmlentities('Não há data de embarque para este aluno').'</option>';
}else{
while($ln = mysql_fetch_assoc($qr_data_embarque)){
$GLOBALS ['data_embarque'] = $ln['aluno_data_embarque'];
echo '<option value="'.$ln['aluno_id'].'">'.utf8_encode(converte_data($ln['aluno_data_embarque'])).'</option>';
echo "<script> alert('Embarque: ".$data_embarque."'); </script> ";
}
}
break;
/*
* CASE carregarCurso
*/
case 'carregarCurso':
$sql_data_inicio = "SELECT alcompra_servico.compra_id, srcurso.curso_data_inicio " .
"FROM alcompra_servico " .
"INNER JOIN srcurso " .
"ON alcompra_servico.compra_id = srcurso.compra_id " .
"WHERE alcompra_servico.aluno_id =".$aluno_id;
$qr_data_inicio = mysql_query($sql_data_inicio) or die(mysql_error());
if(mysql_num_rows($qr_data_inicio) == 0){
echo '<option value="0">'.htmlentities('Não há data estabelecida para este aluno').'</option>';
}else{
while($ln = mysql_fetch_assoc($qr_data_inicio)){
$GLOBALS['data_curso'] = $ln['curso_data_inicio'];
echo '<option value="'.$ln['compra_id'].'">'.utf8_encode(converte_data($ln['curso_data_inicio'])).'</option>';
echo "<script> alert('Embarque: ".$data_embarque.", Curso: ".$data_curso."'); </script> ";
//calcula_curso($data_embarque, $data_curso);
}
}
break;
O que acontece é que o conteúdo da variável $data_embarque fica em branco quando chamo ela no segundo "case". Como podem ver, eu já testei até declarar a variável no início, e depois dentro de cada laço chamar ela como GLOBAL. Não sei se é a maneira correta, e acredito que não, mas foram os testes possíveis. A idéia é pegar esses valores, e fazer a comparação através de uma função. ALguém teria uma idéia de como poderia fazer isso, já que terei de fazer em outros laços?
Obs.: o script de alerta é apenas para ver se o valor vai ser impresso.
Espero que possam me ajudar.
Abraços
Já estou utilizando o strtotime na função para fazer essa comparação. O problema é que antes de passar para função, a variável já perde o valor:
Aqui o valor é mostrado normalmente:
$GLOBALS ['data_embarque'] = $ln['aluno_data_embarque'];
echo '<option value="'.$ln['aluno_id'].'">'.utf8_encode(converte_data($ln['aluno_data_embarque'])).'</option>';
echo "<script> alert('Embarque: ".$data_embarque."'); </script> ";
Esse código tá dentro do primeiro "case"; ai no segundo case, eu busco a data do Curso, e é ai que não consigo pegar o valor da variável $data_embarque:
$GLOBALS['data_curso'] = $ln['curso_data_inicio'];
echo '<option value="'.$ln['compra_id'].'">'.utf8_encode(converte_data($ln['curso_data_inicio'])).'</option>';
echo "<script> alert('Embarque: ".$data_embarque.", Curso: ".$data_curso."'); </script> ";
A partir daqui, a variável $data_embarque esta vazia, e mostra só a variável $data_curso. O que quero é pegar o valor dessa variável que esta no outro "case", "while"... E comparar com a data do curso. Só que o valor fica em branco =/
Como eu poderia fazer para armazenar o valor de $data_embarque que pesquiso antes, para poder usar em outros laços, pois mesmo com global não rolou?
Joga como global antes de do switch
Então... Também já fiz isso heheheh
Declarei as variáveis logo no início, antes do Switch, coloquei como "global", e mesmo assim não rolou :S
Alguém teria mais alguma sugestão, idéia, alternatica??
Sei que não deveria responder em cima do que já respondi, mas é que tô precisando dessa ajuda realmente. :S
Se alguém tiver uma alternativa, uma idéia do que pode estar acontecendo e como resolver, agradeço muito.
Permaneço no aguardo ^^
Para comparar dadas voce pode utilizar strtotime , e dentro da função você verifica se a var não está vazio...