Calendar in PHP

1

Someone knows how I put a loop on this calendar, I just need it to print the dates you've registered in my bank.

It gives a query error:

  

Warning : mysql_fetch_array () expects parameter 1 to be   resource, boolean given in    C: \ xampp \ htdocs \ Shamcey \ functions.php on line 198

function MostreSemanas() {
    $semanas = "DSTQQSS";

    for( $i = 0; $i < 7; $i++ )
        echo "<td>".$semanas{$i}."</td>";

}

function GetNumeroDias( $mes ) {
    $numero_dias = array( 
        '01' => 31, '02' => 28, '03' => 31, '04' =>30, '05' => 31, '06' => 30,
        '07' => 31, '08' =>31, '09' => 30, '10' => 31, '11' => 30, '12' => 31
    );

    if (((date('Y') % 4) == 0 and (date('Y') % 100)!=0) or (date('Y') % 400)==0) {
        $numero_dias['02'] = 29;    // altera o numero de dias de fevereiro se o ano for bissexto
    }

    return $numero_dias[$mes];
}

function GetNomeMes( $mes ) {
    $meses = array( 
        '01' => "Janeiro", '02' => "Fevereiro", '03' => "Março",
        '04' => "Abril",   '05' => "Maio",      '06' => "Junho",
        '07' => "Julho",   '08' => "Agosto",    '09' => "Setembro",
        '10' => "Outubro", '11' => "Novembro",  '12' => "Dezembro"
    );

    if( $mes >= 01 && $mes <= 12)
        return $meses[$mes];

        return "Mês deconhecido";
}


function MostreCalendario( $mes  ) {

    $numero_dias = GetNumeroDias( $mes );   // retorna o número de dias que tem o mês desejado
    $nome_mes = GetNomeMes( $mes );
    $diacorrente = 0;   

    $diasemana = jddayofweek( cal_to_jd(CAL_GREGORIAN, $mes,"01",date('Y')) , 0 );  // função que descobre o dia da semana

    echo "\n<h4 class='widgettitle title-inverse'>".$nome_mes."</h4>";
    echo "\n<table>";
        echo "<tr>";
        MostreSemanas();    
        echo "</tr>";


    for( $linha = 0; $linha < 6; $linha++ ) {
        echo "<tr>";

        for( $coluna = 0; $coluna < 7; $coluna++ ) {
            echo "<td";

            if( ($diacorrente == ( date('d') - 1) && date('m') == $mes) ) {
                echo " id='dia_atual' ";
            }

            else {
                if(($diacorrente + 1) <= $numero_dias ) {

                    if( $coluna < $diasemana && $linha == 0) {
                        echo " id='dia_branco' ";
                    }
                    else {
                        echo " id='dia_comum'";
                    }
                }
                else {
                    echo " ";
                }
            }

            echo ">";

            /* TRECHO IMPORTANTE: A PARTIR DESTE TRECHO É MOSTRADO UM DIA DO CALENDÁRIO (MUITA ATENÇÃO NA HORA DA MANUTENÇÃO) */
            if( $diacorrente + 1 <= $numero_dias ) {

                if( $coluna < $diasemana && $linha == 0) {
                    echo " ";
                }
                else {
                    //echo "<input type = 'button' id = 'dia_comum' name = 'dia".($diacorrente+1)."'  value = '".++$diacorrente."' onclick = \"acao(this.value)\">";
                    $query = mysql_query("SELECT data FROM _atendimento_medico WHERE date_format(data, '%m') = '$mes'");
                    while($resposta = mysql_fetch_array($query)) {

                    if($diacorrente == ( date( 'd', strtotime( $resposta['data']) && date( 'm', strtotime( $resposta['data'] == $mes) ) ) )) {
                        echo "<a href ='". getURL(array('calendar')) ."&mes=$mes&dia=".($diacorrente+1)."' class='consulta'>".++$diacorrente . "</a>";
                    }
                    else {
                        echo "<a href ='". getURL(array('calendar')) ."&mes=$mes&dia=".($diacorrente+1)."'>".++$diacorrente . "</a>";}
                }




                }
            }
            else {
                break;
            }
            /* FIM DO TRECHO MUITO IMPORTANTE */

            echo "</td>";
        }
        echo "</tr>";
    }
    echo "</table>";
}

function MostreCalendarioCompleto() {
    echo "<ul id='slidercontent' class='calendar-consulta'>";
        echo "<li>";
        echo "<div class='slide_wrap'>";
        echo "<div class='slide_content'>";
            MostreCalendario(date('m'));
        echo "</div>";
        echo "</div>";
        echo "</li>";

    $cont = 1;
    for( $j = 0; $j < 4; $j++ ) {
        for( $i = 0; $i < 3; $i++ ) {

            echo "<li>";
            echo "<div class='slide_wrap'>";
            echo "<div class='slide_content'>";
                MostreCalendario( ($cont < 10 ) ? "0".$cont : $cont );  

            $cont++;
            echo "</div>";
            echo "</div>";
            echo "</li>";

        }
    }
    echo "</ul>";
}
    
asked by anonymous 22.12.2014 / 02:42

3 answers

2

The error you are experiencing is that the function mysql_fetch_array() waits for a feature but received a boolean:

  

Warning: mysql_fetch_array () expects parameter 1 to be resource, boolean given in C: \ xampp \ htdocs \ Shamcey \ functions.php on line 198

In short, this happens when the mysql_query() function was not successful, having returned FALSE , as we can read in the documentation:

  

For SELECT, SHOW, DESCRIBE or EXPLAIN commands, mysql_query () returns a resource on success, or FALSE on failure.

     

For other types of SQL queries, UPDATE, DELETE, DROP, etc, mysql_query () returns TRUE on success or FALSE on error.

Solution

What you should do is check the success of the query before attempting to use data from it. This way you have access to the error and you can act accordingly to resolve it:

// Ligação
$dbConn = mysql_connect("localhost", "mysql_user", "mysql_password");

// Selecionar Base de dados
mysql_select_db("minhaBaseDados", $dbConn);

// Consulta
$query = "
SELECT data
FROM _atendimento_medico
WHERE date_format(data, '%m') = '$mes'";

// Consultar a base de dados
$result = mysql_query($query);

// Verificar se obtivemos um erro
if ($result === false) {
    die(mysql_errno($dbConn) . ": " . mysql_error($dbConn) . "\n");
}

// Continuar com o trabalho
while($resposta = mysql_fetch_array($result)) {
    // ...
}
    
21.03.2015 / 19:10
0

I think your error is in the query:

$query = mysql_query("SELECT data FROM _atendimento_medico 
                      WHERE date_format(data, '%m') = '$mes'");

You are using a function following where date_format(data, '%m') instead of the name of the field / column where you want to query.

    
19.01.2015 / 23:44
0

I'm using this same calendar algorithm with small adaptations, it follows the excerpt where the Events (records in the bank) in the calendar, remembering that this passage is inside the generation loop of the columns:

$dataCalendario = formataDia($diacorrente+1)."/".$mes."/".$ano;

                    # PESQUISANDO SE O USUÁRIO TEM ALGUM EVENTO CADASTRADO EM DETERMINADA DATA
                    $pdo2 = Connection::Conexao();
                    $sql2 = "SELECT * FROM EVENTOS as evt WHERE evt.USUARIOS_idUSUARIO=".$id." AND evt.DATA='".$dataCalendario."'";
                    $query2 = $pdo2->prepare($sql2);
                    $query2->execute();

                    # SE HOUVER EVENTO NO BANCO NA DATA, MOSTRA DESCRIÇÃO DO EVENTO NA RESPSCTIVA DATA
                    if( $query2->rowCount() > 0) { 

                        echo "<a href=../views/templateEvento.php?user=".$id."&d=".($diacorrente+1)."&m=".$mes."&a=".$ano.">".++$diacorrente.'</a>';

                        # PEGANDO TODOS OS EVENTOS ENCONTRADOS PARA A DATA E LISTA NO CALENDÁRIO
                        while($reg = $query2->fetch(PDO::FETCH_ASSOC)) { 

                            $descArray = array($reg["idEVENTO"] => $reg["TITULO"]);

                            foreach ($descArray as $value) {
                                echo "<br /> <a class=evento >".$value."</a>";
                            }
                        }     

                    } else { 

                        echo "<a href=../views/templateEvento.php?user=".$id."&d=".($diacorrente+1)."&m=".$mes."&a=".$ano.">".++$diacorrente.'</a>';
                    } 

unset($descArray);
unset($pdo2);
unset($query2);
$sql2="";
    
24.02.2017 / 14:28