Ir para conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membros, 0 visitantes, 0 membros anônimos

Foto
- - - - -

PHP - Update em Campo Date(Data)

Melhor Resposta Remazela , 12 janeiro 2017 - 11:33

 

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/manua...nt.fetchall.php

fetch: http://php.net/manua...ement.fetch.php

 

Caro amigo

 

Obrigado por sua ajuda.

 

Grato,

 

Renato

Visualizar todo o conteúdo do post

  • Por favor, faça o login para responder
7 respostas neste tópico

#1 Remazela

Remazela
  • Members
  • 123 posts

Postado 11 janeiro 2017 - 15:40

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

Publicidade

#2 deoliveiralucas

deoliveiralucas
  • Members
  • 18 posts

Postado 11 janeiro 2017 - 16:03

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

#3 Gabriel Heming

Gabriel Heming

    Especialista em Desenvolvimento de Software

  • Moderadores
  • 3.010 posts

Postado 11 janeiro 2017 - 16:21

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

#4 Remazela

Remazela
  • Members
  • 123 posts

Postado 11 janeiro 2017 - 22:25

 

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

#5 Remazela

Remazela
  • Members
  • 123 posts

Postado 11 janeiro 2017 - 22:28

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, 12 janeiro 2017 - 07:14 .
Remover quote desnecessário

  • 0

#6 Gabriel Heming

Gabriel Heming

    Especialista em Desenvolvimento de Software

  • Moderadores
  • 3.010 posts

Postado 12 janeiro 2017 - 07:17

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

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

  • 0

#7 deoliveiralucas

deoliveiralucas
  • Members
  • 18 posts

Postado 12 janeiro 2017 - 09:11

 

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/manua...nt.fetchall.php

fetch: http://php.net/manua...ement.fetch.php


  • 0

#8 Remazela

Remazela
  • Members
  • 123 posts

Postado 12 janeiro 2017 - 11:33   Melhor Resposta

 

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/manua...nt.fetchall.php

fetch: http://php.net/manua...ement.fetch.php

 

Caro amigo

 

Obrigado por sua ajuda.

 

Grato,

 

Renato


  • 0




Publicidade