Jump to content


Photo

calendario de eventos


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

#1 marcos223

marcos223

    Novato no fórum

  • Aguardando Liberação
  • 20 posts
  • Sexo:Não informado

Posted 01/11/2016, 23:16

adequei um codigo e não consigo buscar os dados do banco de dados, sempre retorna o primeiro id do banco não importa quantos registros tenha no banco

 

 <?php
$pdo = new PDO('mysql:host=localhost;dbname=agenda','root','');
$pdo ->exec("set names utf8");

    function num($num){
        return ($num < 10) ? '0'.$num : $num;
    }

    function montaEventos($info){
        global $pdo;
        //tabela, data, titulo
        $tabela = $info['tabela'];
        $data = $info['data'];
        $titulo = $info['titulo'];
        $link = $info['link'];
        $id = $info['id'];

        $eventos = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `".$data."` >= NOW()");
        $eventos->execute();

        $retorno = array();
        while($row = $eventos->fetchObject()){
            $dataArr = date('Y-m-d', strtotime($row->{$data}));
            $retorno[$dataArr] = array(
                'titulo' => $row->{$titulo},
                'id' => $row->{$id}
            );
        }
        return $retorno;
    }


    function diasMeses(){
        $retorno = array();

        for($i = 1; $i<=12;$i++){
            $retorno[$i] = cal_days_in_month(CAL_GREGORIAN, $i, date('Y'));
        }

        return $retorno;
    }

    function montaAgenda($eventos = array()){
        $daysWeek = array(
            'Sun',
            'Mon',
            'Tue',
            'Wed',
            'Thu',
            'Fri',
            'Sat'
        );
        $diasSemana = array(
            'Dom',
            'Seg',
            'Ter',
            'Qua',
            'Qui',
            'Sex',
            'Sab'
        );

        $arrayMes = array(
            1 => 'Janeiro',
            2 => 'Fevereiro',
            3 => 'Março',
            4 => 'Abril',
            5 => 'Maio',
            6 => 'Junho',
            7 => 'Julho',
            8 => 'Agosto',
            9 => 'Setembro',
            10 => 'Outubro',
            11 => 'Novembro',
            12 => 'Dezembro'
        );

        $diasMeses = diasMeses();
        $arrayRetorno = array();

        for($i =1; $i <= 12; $i++){
            $arrayRetorno[$i] = array();
            for($n=1; $n<= $diasMeses[$i]; $n++){
                $dayMonth = gregoriantojd($i, $n, date('Y'));
                $weekMonth = substr(jddayofweek($dayMonth, 1),0,3);
                if($weekMonth == 'Mun') $weekMonth = 'Mon';
                $arrayRetorno[$i][$n] = $weekMonth;
            }
        }

        echo '<a href="#" id="volta">&laquo;</a><a href="#" id="vai">&raquo;</a>';
        echo '<table class="table table-responsive">';
        foreach($arrayMes as $num => $mes){
            echo '<tbody id="mes_'.$num.'" class="mes">';
            echo '<tr class="mes_title"><td id="mes" colspan="7">'.$mes.'</td></tr>';
            echo '<tr class="dias_title">';
            foreach($diasSemana as $i => $day){
                echo '<td>'.$day.'</td>';
            }
            echo '</tr><tr>';
            $y = 0;
            foreach($arrayRetorno[$num] as $numero => $dia){
                $y++;
                if($numero == 1){
                    $qtd = array_search($dia, $daysWeek);
                    for($i=1; $i<=$qtd; $i++){
                        echo '<td></td>';
                        $y+=1;
                    }
                }
                if(count($eventos) > 0){
                    $month = num($num);
                    $dayNow = num($numero);
                    $date = date('Y').'-'.$month.'-'.$dayNow;
                    if(in_array($date, array_keys($eventos))){
                        $evento = $eventos[$date];
                        
                        echo '<td class="evento"><a href="#"  title="'.$evento['titulo'].'">
<button type="button" class="evento" data-toggle="modal" data-target="#myModal" style="background:none;border:none;">'.$numero.'</button></a>';?>
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close fechar" data-dismiss="modal">&times;</button>
        <?php
        $id = $evento['id'];
        $selecionarDados = @BD::conn()->prepare("SELECT * FROM tbl_agenda WHERE id =  ?");
        @$selecionarDados->execute(array($id));
        $ex = $selecionarDados -> fetchObject();
        ?>
        <h4 class="modal-title"><?php echo @$ex->titulo;?></h4>
      </div>
      <div class="modal-body">
        <p>Some text in the modal.</p>
        <?php var_dump($id);?>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn botao" data-dismiss="modal">Fechar</button>
      </div>
    </div>
  </div>
</div><?php
echo'</td>'
                    }else{
                        echo '<td id="dias_mes" class="dia_'.$numero.'">'.$numero.'</td>';
                    }
                }else{
                    echo '<td id="dias_mes" class="dia_'.$numero.'">'.$numero.'</td>';
                }
                if($y == 7){
                    $y=0;
                    echo '</tr><tr>';
                }
            }
            echo '</tr></tbody>';
        }
        echo '</table>';
    }
    
?>


Edição feita por: marcos223, 01/11/2016, 23:24.


#2 ShZlot

ShZlot

    12 Horas

  • Moderadores
  • 121 posts
  • Sexo:Masculino
  • Localidade:Bahia

Posted 02/11/2016, 11:34

Dê uma olhada no SQL.

Você usa no WHERE pra eventos que  estão ou irão acontecer, talvez as datas dos eventos registrados no banco seja do passado.

 

 

$eventos = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `".$data."` >= NOW()");

 

Em todo caso, teste o comando SQL em um SGDB para ver se o problema está no SQL ou se é o código PHP que está exibido apenas um registro.


Trabalho desenvolvendo no melhor e mais completo CMS do tipo SaaS. Conheça você também e crie um site grátis no uCoz.


#3 marcos223

marcos223

    Novato no fórum

  • Aguardando Liberação
  • 20 posts
  • Sexo:Não informado

Posted 04/11/2016, 17:23

não consegui fazer os links abrir na modal ,

está totalmente funcional abrindo em outra pagina

resultado final

 

http://videirasapucaia.esy.es/agenda






0 user(s) are reading this topic

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

IPB Skin By Virteq