Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bnogueira02

Agendamento de publicação com PHP

Recommended Posts

Então, mude isso:

$dataBanco = DateTime::createFromFormat('d/m/Y H:i:s', $linhas->getAgendamento());

para

$data_banco = DateTime::createFromFormat('Y-m-d H:i:s', $linhas->getAgendamento());

Compartilhar este post


Link para o post
Compartilhar em outros sites

public function publicar() {
        try {
            $materiaDAO = new materiaDAOIMP();
            $materiaDTO = new materiaDTO();
            $materiaDTO->setOp(3);
            $dados = $materiaDAO->pesquisarMateria($materiaDTO);

            foreach ($dados as $linhas) {
                $altMatDTO = new materiaDTO();
                $dataAgora = new datetime('now');
                
                //$dataAgora = date('d/m/Y H:i:s');
                $data_banco = date('d/m/Y H:i:s', $linhas->getAgendamento());
                echo 'Data Agora ' . $dataAgora->format('d/m/Y H:i:s') . '<br/>';
                echo 'Data Banco ' . $data_banco . '<br/>';
                echo 'Data Agora STRTOTIME ' . $dataAgora->format('d/m/Y H:i:s') . '<br />';
                echo 'Data Banco STRTOTIME ' . $data_banco . '<br />';
                if ($dataAgora <= strtotime($data_banco)) {
                    $altMatDTO->setOp(4);
                    $altMatDTO->setId($linhas->getId());
                    $materiaDAO->modificarMateria($altMatDTO);
                    echo 'entrei';
                }
            }

            return true;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
    }

retorno :

 

Data Agora 07/11/2014 16:04:16

Data Banco 31/12/1969 21:00:00

Data Agora STRTOTIME 07/11/2014 16:04:16

Data Banco STRTOTIME 31/12/1969 21:00:00

 

 

Como deveria estar:

 

Data Agora 07/11/2014 16:04:16

Data Banco 2014-11-21 10:01:00

Data Agora STRTOTIME 07/11/2014 16:04:16

Data Banco STRTOTIME 2014-11-21 10:01:00

 

não faço ideia já tentei tudo que disseram e só deu erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque tudo isso ai, por:

public function publicar() {
    try {
        $materiaDAO = new materiaDAOIMP();
        $materiaDTO = new materiaDTO();
        $materiaDTO->setOp(3);
        $dados = $materiaDAO->pesquisarMateria($materiaDTO);

        foreach ($dados as $linhas) {
            $altMatDTO = new materiaDTO();
            $dataAgora = new DateTime('now');
            $data_banco = DateTime::createFromFormat('Y-m-d H:i:s', $linhas->getAgendamento());
            
            echo 'Data Agora ' . $dataAgora->format('d/m/Y H:i:s') . '<br/>';
            echo 'Data Banco ' . $data_banco->format('d/m/Y H:i:s') . '<br/>';
            
            if ($dataAgora <= $data_banco) {
                $altMatDTO->setOp(4);
                $altMatDTO->setId($linhas->getId());
                $materiaDAO->modificarMateria($altMatDTO);
                echo 'entrei';
            }
        }

        return true;
    } catch (Exception $exc) {
        echo $exc->getTraceAsString();
        return false;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Retorno Foi esse.

 

Data Agora 07/11/2014 16:17:39
Data Banco
Data Agora STRTOTIME 07/11/2014 16:17:39
Data Banco STRTOTIME

 

Dei um print_r na $linhas resutato foi

 

 

materiaDTO Object ( [id:materiaDTO:private] => [titulo:materiaDTO:private] => [linha_fina:materiaDTO:private] => [categoria:materiaDTO:private] => [imagem:materiaDTO:private] => [texto:materiaDTO:private] => [status:materiaDTO:private] => [data_publi:materiaDTO:private] => [tags:materiaDTO:private] => [agendamento:materiaDTO:private] => [op:materiaDTO:private] => )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me diga o resultado desse por favor:

public function publicar() {
    try {
        $materiaDAO = new materiaDAOIMP();
        $materiaDTO = new materiaDTO();
        $materiaDTO->setOp(3);
        $dados = $materiaDAO->pesquisarMateria($materiaDTO);

        foreach ($dados as $linhas) {
            $altMatDTO = new materiaDTO();
            $dataAgora = new DateTime('now');
            $data_banco = DateTime::createFromFormat('Y-m-d H:i:s', $linhas->getAgendamento());
            
            echo 'Data Agora ' . $dataAgora->format('d/m/Y H:i:s') . '<br/>';
            echo 'Data Banco1 ' . $data_banco->format('d/m/Y H:i:s') . '<br/>';
            echo 'Data Banco2 ' . $linhas->getAgendamento() . '<br/>';
            
            if ($dataAgora <= $data_banco) {
                $altMatDTO->setOp(4);
                $altMatDTO->setId($linhas->getId());
                $materiaDAO->modificarMateria($altMatDTO);
                echo 'entrei';
            }
        }

        return true;
    } catch (Exception $exc) {
        echo $exc->getTraceAsString();
        return false;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o campo é do tipo data, não precisa disto:

 

 

$data_banco = DateTime::createFromFormat('Y-m-d H:i:s', $linhas->getAgendamento());

 

Apenas isto:

 

$data_banco = new DateTime( $linhas->getAgendamento() );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudei o status para 1 de uma materia e a hora que puxou do banco deu isso.

 

Catchable fatal error: Object of class DateTime could not be converted to string in C:\xampp\htdocs\cmsbr\CTR\materiaCTR.php on line 128

 

 

 

echo 'Data Banco ' . $data_banco . '<br/>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente Beraldo, só que no primeiro post dele, ele usa isso:

$data_banco = date('d/m/Y H:i:s', $linhas->getAgendamento());

Ai depois eu acabei colocando isso também e ta até agora, mas foi bem lembrado.

 

Esse código ai ta diferente do que eu executei, tente por igual ao que eu coloquei no post #30

Compartilhar este post


Link para o post
Compartilhar em outros sites

    function publicar() {
        try {
            $materiaDAO = new materiaDAOIMP();
            $materiaDTO = new materiaDTO();
            $materiaDTO->setOp(3);
            $dados = $materiaDAO->pesquisarMateria($materiaDTO);

            foreach ($dados as $linhas) {
                $altMatDTO = new materiaDTO();
                $dataAgora = new DateTime('now');
                $data_banco = new DateTime($linhas->getAgendamento());
                //$data_banco = DateTime::createFromFormat('Y-m-d H:i:s', $linhas->getAgendamento());

                echo 'Data Agora ' . $dataAgora->format('d/m/Y H:i:s') . '<br/>';
                echo 'Data Banco ' . $data_banco->format('d/m/Y H:i:s') . '<br/>';
                echo 'Data Agora STRTOTIME ' .  strtotime($dataAgora->format('d/m/Y H:i:s')) . '<br />';
                echo 'Data Banco STRTOTIME ' .  strtotime($data_banco->format('d/m/Y H:i:s')) . '<br />';
                if ($dataAgora <= strtotime($data_banco)) {
                    $altMatDTO->setOp(4);
                    $altMatDTO->setId($linhas->getId());
                    $materiaDAO->modificarMateria($altMatDTO);
                    echo 'entrei';
                }
            }

            return true;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
    }

esse Codigo retornou isso:

 

Data Agora 07/11/2014 16:31:27

Data Banco 07/11/2014 16:40:00

Data Agora STRTOTIME 1405107087

Data Banco STRTOTIME 1405107600

Porém não entrou no IF para fazer a alteração do status.

Compartilhar este post


Link para o post
Compartilhar em outros sites
function publicar() {
        try {
            $materiaDAO = new materiaDAOIMP();
            $materiaDTO = new materiaDTO();
            $materiaDTO->setOp(3);
            $dados = $materiaDAO->pesquisarMateria($materiaDTO);

            foreach ($dados as $linhas) {
                $altMatDTO = new materiaDTO();
                $dataAgora = new DateTime('now');
                $data_banco = new DateTime($linhas->getAgendamento());
                //$data_banco = DateTime::createFromFormat('Y-m-d H:i:s', $linhas->getAgendamento());

                echo 'Data Agora ' . $dataAgora->format('d/m/Y H:i:s') . '<br/>';
                echo 'Data Banco ' . $data_banco->format('d/m/Y H:i:s') . '<br/>';
                echo 'Data Agora STRTOTIME ' .  strtotime($dataAgora->format('d/m/Y H:i:s')) . '<br />';
                echo 'Data Banco STRTOTIME ' .  strtotime($data_banco->format('d/m/Y H:i:s')) . '<br />';
                if ($dataAgora <= $data_banco) {
                    $altMatDTO->setOp(4);
                    $altMatDTO->setId($linhas->getId());
                    $materiaDAO->modificarMateria($altMatDTO);
                    echo 'entrei';
                }
            }

            return true;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
    }

Mesmo assim não entra no if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a saida que está dando agora? e tente mudar isso:

if ($dataAgora <= $data_banco) {
    $altMatDTO->setOp(4);
    $altMatDTO->setId($linhas->getId());
    $materiaDAO->modificarMateria($altMatDTO);
    echo 'entrei';
}
para

if ($dataAgora <= $data_banco) {
    echo 'entrei';
    $altMatDTO->setOp(4); 
    $altMatDTO->setId($linhas->getId()); 
    $materiaDAO->modificarMateria($altMatDTO); 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Data Agora 07/11/2014 16:51:34
Data Banco 07/11/2014 16:33:00
Data Agora STRTOTIME 1405108294
Data Banco STRTOTIME 1405107180

 

Mesma coisa


Data Agora 07/11/2014 16:52:15
Data Banco 07/11/2014 16:33:00
Data Agora STRTOTIME 1405108335
Data Banco STRTOTIME 1405107180

Warning: strtotime() expects parameter 1 to be string, object given in C:\xampp\htdocs\cmsbr\CTR\materiaCTR.php on line 132

Warning: strtotime() expects parameter 1 to be string, object given in C:\xampp\htdocs\cmsbr\CTR\materiaCTR.php on line 132
entrei

if (strtotime($dataAgora) <= strtotime($data_banco)) {
                    echo 'entrei';
                    $altMatDTO->setOp(4);
                    $altMatDTO->setId($linhas->getId());
                    $materiaDAO->modificarMateria($altMatDTO);
                }

esse foi o retorno com essa modificação


porem agora entra sempre no if

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.