ASVSWEB 0 Denunciar post Postado Julho 3, 2010 Olá pessoal,estou precisando de uma ajudinha.é o seguinte eu tenho um banco de dados no qual armazeno dias e horarios, Ex: 1;3 que são os dias e 8:00;9:00 que são as horas. Eu estava precisando fazer uma consulta no banco para trazer os dias com seus respectivos horarios,no caso 1(segunda)--- 8:00 3(quarta) --- 9:00 Eu estou tentando com o foreach usando o explode mas so consigo pegar o dia,o horário não está pegando certo.como vou fazer usando o foreach?. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 3, 2010 Mais fácil definir o tipo de campo certo no banco `inicio` DATETIME, `fim` DATETIME Também fica muito mais fácil para buscar por intervalos posteriormente. Compartilhar este post Link para o post Compartilhar em outros sites
ASVSWEB 0 Denunciar post Postado Julho 4, 2010 Mais fácil definir o tipo de campo certo no banco `inicio` DATETIME, `fim` DATETIME Também fica muito mais fácil para buscar por intervalos posteriormente. você poderia dar um outro exemplo para ficar mais claro?obr. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 5, 2010 você poderia dar um outro exemplo para ficar mais claro?obr. Certamente. Vamos montar uma agenda, ok? CREATE TABLE `agenda`( id smallint(2) primary key auto_increment, descr varchar(20), inicio datetime, fim datetime ); Agora vamos inserir alguns compromissos: INSERT INTO `agenda`(`descr`,`inicio`,`fim`) values ('dentista', '2010-07-05 11:00:00', '2010-07-05 12:00:00'), ('almoço', '2010-07-05 12:15:00', '2010-07-05 12:50:00'), ('estudar', '2010-07-05 13:00:00', '2010-07-05 16:00:00'), ('futebol', '2010-07-05 16:30:00', '2010-07-05 19:00:00') ... Agora vamos buscar todas as atividades de hoje compreendidas entre 12:30 e 15:00 SELECT `descr` AS `atividade` WHERE `inicio` (BETWEEN '2010-07-05 12:30:00' AND '2010-07-05 15:00:00') AND `fim` (BETWEEN '2010-07-05 12:30:00' AND '2010-07-05 15:00:00'); Compartilhar este post Link para o post Compartilhar em outros sites
ASVSWEB 0 Denunciar post Postado Julho 5, 2010 Pois é cara ,eu acho que você não entendeu o que eu quero,mas também expliquei mal né.vou enviar o codigo para ficar mais facil de entender. <?php while($linha = mysql_fetch_array($query)){ $numAlunos = $linha['Numero de alunos']; $vg = $linha['vagas']; $dias = $linha['dias']; $horarios = $linha['horarios']; $idTurma = $linha['idTurma']; $dias = explode(";",$dias); $horarios = explode(";",$horarios); $arrayPosicao = array_keys($horarios); foreach($arrayPosicao as $id2 =>$idValor){ $recebe = $idValor; $posicaoDia = $recebe; $pd = $posicaoDia; $horarioDia = $horarios[$pd]; } foreach($dias as $id=>$idItem){ if($idItem == '1'){ $diaSemana = "Segunda"; }else if($idItem == '2'){ $diaSemana = "Terça"; } else if($idItem == '3'){ $diaSemana = "Quarta"; } else if($idItem == '4'){ $diaSemana = "Quinta"; } else if($idItem == '5'){ $diaSemana = "Sexta"; } echo "<tr><td align='center' height='20'>".$linha['nomeProjeto'];"</td>"; echo "<td align='center' height='20'>".$linha['nomeTurma'];"</td>"; echo "<td align='center' height='20'>".$diaSemana."</td>"; echo "<td align='center' height='20'>".$horarioDia."</td>"; echo "<td align='center' height='20'>".$numAlunos."</td></tr>"; } os dias estão gravados no banco como 1;3 que são segunda e quarta,por isso tenho esse idItemos horários estão nomais 8:00 para segunda e 9:00 para Quarta.Então tenho que pegar o dia com seu horário certo,é o que não consigo. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 5, 2010 Eu entendi perfeitamente o que você precisa e respondi que seu banco está modelado incorretamente, por isso a dificuldade. Compartilhar este post Link para o post Compartilhar em outros sites
ASVSWEB 0 Denunciar post Postado Julho 5, 2010 Eu entendi perfeitamente o que você precisa e respondi que seu banco está modelado incorretamente, por isso a dificuldade. Como deveria fazer?tem uma sugestão? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 5, 2010 Cada dia/hora deve ser um registro em separado, a menos que seja um intervalo, que deverá ser como foi mostrado anteriormente. Para campos apenas Hora, pode definí-los como TIME e não DATETIME. id [int] | numAlunos [int] | vagas [int] | dia [enum(1,2,3,4,5)] | hora [TIME] | idTurma [int] SELECT `numAlunos` AS `Número de Alunos`, `vagas` AS `Vagas`, `idTurma` AS `Turma`, `dia` AS `Dia`, `hora` AS `Hora` FROM `vagas` <?php $stmt = mysqli->query($sql); $row = $stmt->fetch(); echo '<table> <thead> <tr>' . PHP_EOL; foreach(array_keys($row) as $field) echo ' <th>'. $field . '</th>' . PHP_EOL; echo ' </tr> </thead> <tfoot> <tr>' . PHP_EOL; foreach(array_keys($row) as $field) echo ' <th>'. $field . '</th>' . PHP_EOL; echo ' </tr> </tfoot> <tbody>' . PHP_EOL; do { echo ' <tr>' . PHP_EOL; foreach($row as $data) echo ' <td>'. $data .'</td>' . PHP_EOL; echo ' </tr>'. PHP_EOL; } while(NULL !== ($row = $stmt->fetch())); echo ' </tbody> </table>'; Compartilhar este post Link para o post Compartilhar em outros sites
ASVSWEB 0 Denunciar post Postado Julho 6, 2010 Meu banco de dados está assim; Turma idTurma nomeTurma dias --- 1,3 horarios --- 8:00,9:00 vagas idProjeto Se eu entendi eu tenho que fazer uma outra tabela para dias e horarios? Eu confesso que estou tendo dificudades para modelar corretamente esse banco. Só explicando é o seguinte o meu sistema é um sistema de cadastro de alunos em projetos(Informática,Teatro e etc).Então cada aluno pode estar matriculado em um ou mais projetos que possuem uma ou mais turmas,que podem estar em mais de um dia e horário.Acho que deu pra dar uma clareada.sei que aqui não é o forum de modelagem se você puder me dar uma dicas eu agradeço.obr pela atenção Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 6, 2010 Só explicando é o seguinte o meu sistema é um sistema de cadastro de alunos em projetos(Informática,Teatro e etc).Então cada aluno pode estar matriculado em um ou mais projetos que possuem uma ou mais turmas,que podem estar em mais de um dia e horário. aluno, projeto, turma, dia, horário. CREATE TABLE `alunos` ( `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, `nome` VARCHAR(40) UNIQUE NOT NULL, `nasc` DATE, `sexo` BOOLEAN, `cep` INT(8) ZEROFILL UNSIGNED NOT NULL, `numero` SMALLINT UNSIGNED, `responsavel` VARCHAR(40) NOT NULL, `telefone` BIGINT UNSIGNED ) ENGINE = INNODB; CREATE TABLE `projetos` ( `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, `nome` VARCHAR(10) UNIQUE NOT NULL ) ENGINE = INNODB; CREATE TABLE `turmas` ( `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, `projetoId` SMALLINT UNSIGNED, `dia` ENUM(1,2,3,4,5) NOT NULL, `hora` TIME NOT NULL, `vagas` SMALLINT UNSIGNED NOT NULL, INDEX (`projetoId`), FOREIGN KEY (`projetoId`) REFERENCES `projetos`(`id`) ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE = INNODB; CREATE TABLE `matriculas` ( `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, `idAluno` SMALLINT UNSIGNED NOT NULL, `idTurma` SMALLINT UNSIGNED NOT NULL, INDEX (`idAluno`), INDEX (`idTurma`), FOREIGN KEY (`idAluno`) REFERENCES `alunos`(`id`) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (`idTurma`) REFERENCES `turmas`(`id`) ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE = INNODB; CREATE TRIGGER `vagas` BEFORE INSERT ON `matriculas` FOR EACH ROW UPDATE `turmas` SET `vagas` -= `vagas` WHERE `turmas`.`id` = NEW.`idTurma`; Compartilhar este post Link para o post Compartilhar em outros sites
ASVSWEB 0 Denunciar post Postado Julho 6, 2010 Eu tenho essa imagem que mostra a parte de cadastramento de turma.Nela possui os checkboxs para escolher os dias de aula da turma,o horario,o projeto no qual a turma ira ser inserida e o numero de vagas.Eu estava passando para o banco usando implode,sendo assim os dias eram passados como no modelo ja falado 1;3 e os horários 8:00;9:00,armazena eu consigo o problema e trazelos com dia e hora certo. vai nesse link para ver a img ai. valeu até agora cara!brigadão. Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Julho 8, 2010 CREATE TRIGGER `vagas` BEFORE INSERT ON `matriculas` FOR EACH ROW UPDATE `turmas` SET `vagas` -= `vagas` WHERE `turmas`.`id` = NEW.`idTurma`; triggers de um modo simples, são funções ou procedures que são executadas quando certa ação ocorrer, no caso da trigger acima ela é executada quando for inserido alguma linha na tabela de matriculas toda matricula que ocorrer ela já diminui o contador das vagas na tabela de vagas pra respectiva turma que foi matriculada. Compartilhar este post Link para o post Compartilhar em outros sites
ASVSWEB 0 Denunciar post Postado Julho 13, 2010 Eu não entendi o campo enum,porque ele é fixo e no caso o usuário vai escolher as opções que iram ser inseridas na tabela da turma no campo dias. È vou tentar sozinho mesmo. Compartilhar este post Link para o post Compartilhar em outros sites