Ir para conteúdo

Arquivado

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

Remazela

PHP - Update em Campo Date(Data)

Recommended Posts

Caros amigos

Por favor, recorro mais uma vez ao auxílio dos amigos, fiz várias pesquisa mas não tive sucesso.

Após digitar a data de cadastro, quero alterar a Data através de um INPUT - DATE.

Para gravar os campos faço desta forma (grava corretamente), o campos datas no BcoDados está como timestamp.

<?php
        $cotaStatus   = '1';         
        $cotaDtInicio = date('Y-m-d H:m:s');              
        $cotaDtFim    = date('Y-m-d H:m:s');        

        $sql = 'INSERT INTO cotacao (cotaDtInicio, cotaDtFim, clienteId, cotaStatus) 
                     VALUES (:cotaDtInicio, :cotaDtFim, :clienteId, :cotaStatus)';

        try{
            $query = $conecta->prepare($sql);             
            $query->bindValue(':cotaDtInicio',$cotaDtInicio,PDO::PARAM_STR);   
            $query->bindValue(':cotaDtFim',$cotaDtFim,PDO::PARAM_STR);   
            $query->bindValue(':clienteId',$clienteId,PDO::PARAM_STR);   
            $query->bindValue(':cotaStatus',$cotaStatus,PDO::PARAM_STR);                                         
            $query->execute(); 

?>

Quando busco o Código desejado, faço da seguinte forma:

    <?php 

    //Variável Passada da Página Anterior
    $cotaIdGet = isset($_GET['cotaId']) ? $_GET['cotaId'] : false;
    $cotaId    = isset($_POST['cotaId']) ? $_POST['cotaId'] : $cotaIdGet; 

       //Faço a pesquisa através do código ID
       $sql_pegaProd = 'SELECT * FROM cotacao WHERE cotaId = :cotaId';

       try{
         $query_pegaProd = $conecta->prepare($sql_pegaProd);
         $query_pegaProd->bindValue(':cotaId',$cotaId,PDO::PARAM_STR);  
         $query_pegaProd->execute();

         $resultado_pegaProd = $query_pegaProd->fetchAll(PDO::FETCH_ASSOC);
        
         
         }catch(PDOexception $error_pegaProd){
              echo 'Erro ao pegar o Produto'.$error_pegaProd->getMessage();
         }
         
         //Capturo os dados que desejo
         foreach($resultado_pegaProd as $resProd){
                 $cotaId         = $resProd['cotaId']; 
                 $edCotaDtInicio = $resProd['cotaDtInicio'];            
                 $edCotaDtFim    = $resProd['cotaDtFim'];  
         }  
    ?> 


    <!-- Preencho o form, com os dados -->
    <form name="cota_2" id="cota_2" action="" method="post" enctype="multipart/form-data">  

      <p class="p_esp">
        <label>
          <span>Data da Abertura.........:</span>
            <input type="date" id='cotaDtInicio' name="cotaDtInicio" size="10" min="2000-12-31" value="<?php echo $edCotaDtFim; ?>" >
        </label> 
      </p>

      <p class="p_esp">
        <label>
          <span>Data do Encerramento:</span>
            <input type="date" id='cotaDtFim' name="cotaDtFim" size="10" min="2000-12-31" value="<?php echo $edCotaDtFim; ?>" >
        </label>
      </p>     

O problema que nessa linha, não consigo mostrar a Data gravada no banco.

<input type="date" id='cotaDtInicio' name="cotaDtInicio" size="10" min="2000-12-31" value="<?php echo $edCotaDtFim; ?>" >

Como consigo mostrar a data gravada no banco para ser alterada ?

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo data "cotaDtFim" é "DateTime" ou "Date"? se for "DateTime", pode ser que precise formatar o valor antes de exibir, tente da seguinte maneira:

<input type="date" id='cotaDtInicio' name="cotaDtInicio" size="10" min="2000-12-31" value="<?php echo date('Y-m-d', strtotime($cotaDtInicio)); ?>" >

Uma sugestão, nesse caso como você esta fazendo uma consulta pelo "id", tente utilizar o método "fetch" ao invés do "fetchAll"; assim não será necessário o "foreach":

try{
    $query_pegaProd = $conecta->prepare($sql_pegaProd);
    $query_pegaProd->bindValue(':cotaId',$cotaId,PDO::PARAM_STR);  
    $query_pegaProd->execute();

    // fetch ao invés do fetchAll
    $resultado_pegaProd = $query_pegaProd->fetch(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaProd){
    echo 'Erro ao pegar o Produto'.$error_pegaProd->getMessage();
}

// não precisa do foreach
$cotaId         = $resProd['cotaId']; 
$edCotaDtInicio = $resProd['cotaDtInicio'];            
$edCotaDtFim    = $resProd['cotaDtFim'];  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use DateTime, e adicione um @ na frente do timestatmp:

$timeStamp = "1484161995";
$date = new DateTime('@'.$timeStamp);

echo $date->format('d/m/Y');
Saída:

11/01/2017

Se o seu caso é o formato yyyy-mm-dd, basta alterar o format:

echo $date->format('Y-m-d');
Saída:

2017-01-11

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo data "cotaDtFim" é "DateTime" ou "Date"? se for "DateTime", pode ser que precise formatar o valor antes de exibir, tente da seguinte maneira:

<input type="date" id='cotaDtInicio' name="cotaDtInicio" size="10" min="2000-12-31" value="<?php echo date('Y-m-d', strtotime($cotaDtInicio)); ?>" >

Uma sugestão, nesse caso como você esta fazendo uma consulta pelo "id", tente utilizar o método "fetch" ao invés do "fetchAll"; assim não será necessário o "foreach":

try{
    $query_pegaProd = $conecta->prepare($sql_pegaProd);
    $query_pegaProd->bindValue(':cotaId',$cotaId,PDO::PARAM_STR);  
    $query_pegaProd->execute();

    // fetch ao invés do fetchAll
    $resultado_pegaProd = $query_pegaProd->fetch(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaProd){
    echo 'Erro ao pegar o Produto'.$error_pegaProd->getMessage();
}

// não precisa do foreach
$cotaId         = $resProd['cotaId']; 
$edCotaDtInicio = $resProd['cotaDtInicio'];            
$edCotaDtFim    = $resProd['cotaDtFim'];  

Caro amigo

Deus o abençoa por sua ajuda, deu certinho.

Observação: tive que voltar o fetchAll, pois quando só coloquei fetch, o PHP trouxe a data: 31-12-1969.

Não entendi, mas quando voltei o fetchAll, trouxe a data gravada no BcoDados, ou seja, a data atual 11-01-2017.

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo Gabriel

Deus o abençoa por sua ajuda.

Apenas uma dúvida, referente a sua explicação, após testar não deu certo, ou eu não entendi muito bem.

A linha que mostro a data vindo do BcoDados é essa:

<input type="date" id='cotaDtInicio' name="cotaDtInicio" size="10" min="2000-12-31" value="<?php echo $edCotaDtInicio; ?>" >
No seu exemplo, como colocaria a formatação ?

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só alterar o valor do atributo 'value'.

value="<?php echo "sua data aqui"; ?>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observação: tive que voltar o fetchAll, pois quando só coloquei fetch, o PHP trouxe a data: 31-12-1969.

Não entendi, mas quando voltei o fetchAll, trouxe a data gravada no BcoDados, ou seja, a data atual 11-01-2017.

Apenas uma correção, o código que passei na outra resposta está errado; é só alterar onde está "$resultado_pegaProd" para "$resProd"; quando você usa apenas o "fetch" é retornado apenas um item, tente assim:

try{
    $query_pegaProd = $conecta->prepare($sql_pegaProd);
    $query_pegaProd->bindValue(':cotaId',$cotaId,PDO::PARAM_STR);  
    $query_pegaProd->execute();

    // fetch ao invés do fetchAll
    $resProd= $query_pegaProd->fetch(PDO::FETCH_ASSOC); // corrigido
}catch(PDOexception $error_pegaProd){
    echo 'Erro ao pegar o Produto'.$error_pegaProd->getMessage();
}

// não precisa do foreach
$cotaId         = $resProd['cotaId']; 
$edCotaDtInicio = $resProd['cotaDtInicio'];            
$edCotaDtFim    = $resProd['cotaDtFim'];  

Dê uma lida na documentação para entender melhor:

fetchAll: http://php.net/manual/pt_BR/pdostatement.fetchall.php

fetch: http://php.net/manual/pt_BR/pdostatement.fetch.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas uma correção, o código que passei na outra resposta está errado; é só alterar onde está "$resultado_pegaProd" para "$resProd"; quando você usa apenas o "fetch" é retornado apenas um item, tente assim:

try{
    $query_pegaProd = $conecta->prepare($sql_pegaProd);
    $query_pegaProd->bindValue(':cotaId',$cotaId,PDO::PARAM_STR);  
    $query_pegaProd->execute();

    // fetch ao invés do fetchAll
    $resProd= $query_pegaProd->fetch(PDO::FETCH_ASSOC); // corrigido
}catch(PDOexception $error_pegaProd){
    echo 'Erro ao pegar o Produto'.$error_pegaProd->getMessage();
}

// não precisa do foreach
$cotaId         = $resProd['cotaId']; 
$edCotaDtInicio = $resProd['cotaDtInicio'];            
$edCotaDtFim    = $resProd['cotaDtFim'];  

Dê uma lida na documentação para entender melhor:

fetchAll: http://php.net/manual/pt_BR/pdostatement.fetchall.php

fetch: http://php.net/manual/pt_BR/pdostatement.fetch.php

Caro amigo

Obrigado por sua ajuda.

Grato,

Renato

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.