Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo_laguna

[Resolvido] Cadastro de DAta usando PDO

Recommended Posts

Olá amigos, estou testando e querendo aprender, tenho um form de cadastro e nele quero inserir um dado no mysql e a data também,porém a data eu quero poder escolher o dia, dela e não que ela ela vá diretamente pro mysql, tenho o seguinte código que posto abaixo no qual me aponta o seguinte erro:

 

Erro ao cadastrar SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

 

<?php if(isset($_POST['enviar'])){
$titulo1 = strip_tags(trim($_POST['titulo1']));
$dataMateria = strip_tags(trim($_POST['dataMateria']));
//$dataMateria = date('Y-m-d H:m:s');
$status = strip_tags(trim($_POST['status']));
$corpoMateria = strip_tags(trim($_POST['corpoMateria']));

$sql_teste = 'INSERT INTO tb_materias (titulo1,dataMateria,status,corpoMateria)';
$sql_teste .= 'VALUES (:titulo1,:dataMateria,:status,:corpoMateria)';

try{
	$query_teste = $conecta->prepare($sql_teste);
	$query_teste->bindValue(':titulo1',$titulo1,PDO::PARAM_STR);
	$query_teste->bindValue(':dataMateria',$dataMateria,PDO::PARAM_STR);
	$query_teste->bindValue(':status',$status,PDO::PARAM_STR);
	$query_teste->bindValue(':corpo',$corpoMateria,PDO::PARAM_STR);
	$query_teste->execute();
	echo 'Cadastro com sucesso';

}catch (PDOexception $error_insert){
	echo 'Erro ao cadastrar '.$error_insert->getMessage();
}
}
?>

<form name="cadastra_materia" action="" enctype="multipart/form-data" method="post">
 <p>
   Titulo1 - 
   <input name="titulo1" type="text" size="55" />
   <br />
 </p>
 <p>Data -  
   <input name="dataMateria" type="text" class="form" value="<?php echo date("d/m/Y")?>" size="15"/>
 </p>
 <p>Status - 
   <select name="status" class="form">
     <option value="on" <?php if (!(strcmp("on", ""))) {echo "SELECTED";} ?>>Visível</option>
     <option value="off" <?php if (!(strcmp("off", ""))) {echo "SELECTED";} ?>>Oculta</option>
   </select>
 </p>
 <p align="center">CONTEÚDO</p>
 <p align="center">
   <textarea name="corpoMateria" cols="80" rows="15"></textarea>    
   <br />
   <input type="submit" name="enviar" value="ENVIAR" />
             </p>
</form>

Alguém pode me indicar como resolver isso? desde já agradeço aos amigos. []´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você já deu uma olhada no valor das variáveis que você está passando para o bindValue?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se todas as variáveis realmente tem valores.

 

Achei o problema!

 

Errado:

$query_teste->bindValue(':corpo',$corpoMateria,PDO::PARAM_STR);

 

Certo:

$query_teste->bindValue(':corpoMateria',$corpoMateria,PDO::PARAM_STR);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra constar, veja:

mysql> select date_format( now(), '%Y/%m/%d %h:%m:%s' ) as data;
+---------------------+
| data                |
+---------------------+
| 2011/07/12 11:07:28 |
+---------------------+
1 row in set (0.00 sec)

 

Você pode formatar a data direto no SQL também se preferir .. como também pode trazer a data formatada de outros campos

 

;)

 

Abraços, Bons estudos ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, nem esquenta!

 

O melhor a fazer é sempre guardar essas chaves em um array ou objeto para não ocorrerem esses problemas!

 

Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa aproveitando que a tumra está por aí, dando seguimento no meu form quero cadastrar as datas mas ela está pegando a data atual mas vamos supor que hoje dia 12 de julho eu queira botaruma nota de ontem dia 11 dae ele nao ta aceitando; como resolvo isso?

<?php if(isset($_POST['enviar'])){
$titulo1 = strip_tags(trim($_POST['titulo1']));
$titulo2 = strip_tags(trim($_POST['titulo2']));
$titulo3 = strip_tags(trim($_POST['titulo3']));
//$dataMateria = strip_tags(trim($_POST['dataMateria']));
$dataMateria = date('Y-m-d');
$idMenuMat = strip_tags(trim($_POST['idMenuMat']));
$status = strip_tags(trim($_POST['status']));
$corpoMateria = strip_tags(trim($_POST['corpoMateria']));

$sql_teste = 'INSERT INTO tb_materias (titulo1,titulo2,titulo3,dataMateria,idMenuMat,status,corpoMateria)';
$sql_teste .= 'VALUES (:titulo1,:titulo2,:titulo3,:dataMateria,:idMenuMat,:status,:corpoMateria)';

try{
	$query_teste = $conecta->prepare($sql_teste);
	$query_teste->bindValue(':titulo1',$titulo1,PDO::PARAM_STR);
	$query_teste->bindValue(':titulo2',$titulo2,PDO::PARAM_STR);
	$query_teste->bindValue(':titulo3',$titulo3,PDO::PARAM_STR);
	$query_teste->bindValue(':dataMateria',$dataMateria,PDO::PARAM_STR);
	$query_teste->bindValue(':idMenuMat',$idMenuMat,PDO::PARAM_STR);
	$query_teste->bindValue(':status',$status,PDO::PARAM_STR);
	$query_teste->bindValue(':corpoMateria',$corpoMateria,PDO::PARAM_STR);
	$query_teste->execute();
	echo 'Cadastro com sucesso';

}catch (PDOexception $error_insert){
	echo 'Erro ao cadastrar '.$error_insert->getMessage();
}
}
?>





<form name="cadastra_materia" action="" enctype="multipart/form-data" method="post">
 <p>
   Titulo1 - 
   <input name="titulo1" type="text" size="55" />
   <br />
   Titulo 2 - 
   <textarea name="titulo2" cols="55"></textarea>
 </p>
 <p>Titulo 3- 
   <textarea name="titulo3" cols="55" rows="3" ></textarea>
 </p>
 <p>Data -  
   <input name="dataMateria" type="text" class="form" value="<?php echo date("d/m/Y")?>" size="15"/>
 </p>

 <p>Status - 
   <select name="status">
     <option value="on" <?php if (!(strcmp("on", ""))) {echo "SELECTED";} ?>>Visível</option>
     <option value="off" <?php if (!(strcmp("off", ""))) {echo "SELECTED";} ?>>Oculta</option>
   </select>
 </p>
 <p align="center">CONTEÚDO</p>
 <p align="center">
   <textarea name="corpoMateria" cols="80" rows="5"></textarea>    
   <br />
   <input type="submit" name="enviar" value="ENVIAR" />
             </p>
</form>

 

Meu campo DATA está definido como DATE mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Buenas amigo

 

Qual é sua dificuldade? Inserir uma data fornecida pelo usuário no DB?

 

Se for isso, você deve deixar um input em para ele inserir a data, como nós estamos acostumados com o formado dia/mes/ano vai ser o formato que o usuário vai entrar (recomendo o uso de uma mascara para garantir o preenchimento correto), depois, para inserir no banco como o DB somente aceita o formato y-m-d você precisa usar uma função para converter a data do nosso formato para o formato americano, eu geralmente uso algo assim:

 

//entrada: 12/07/2011
$dataAmericana = implode("-", array_reverse(explode("/", anti_inject($_POST['data']))));

//saída: $dataAmericana = 2011-07-12

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.