Publicidade

Entre para seguir isso  
Seguidores 0
Remazela

PHP - Update em Campo Date(Data)

Patrocínio:

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

0

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'];  
0

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
0

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

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado (editado)

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

Editado por Gabriel Heming
Remover quote desnecessário
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

0

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

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora
Entre para seguir isso  
Seguidores 0