Ir para conteúdo

POWERED BY:

Arquivado

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

Patriciaff

Condição adicional para SELECT

Recommended Posts

 

 

pag. funcoes.php

 

<?php 
 
include ('conexao.php'); 
 
$id = $_POST['id']; 
$grava_nome = $_POST['txtNome']; 
...
 

if($_GET['funcao'] == "gravar"){ 
$sql_gravar = mysql_query("INSERT INTO tbteste ( nome, prioridade, datamodificacao, datalimite) values ('$grava_nome','[b]gravar prioridade[/b]','[b]gravar datalimite[/b]')");

 

 

 

Gostaria que o campo select completasse tanto o campo prioridade quanto o campo datalimite.

 

>

$prioridade = strtolower($_POST['prioridade']);
if ($prioridade === "baixa") {
    $datalimite = 30;
}
if ($prioridade === "média") {
    $datalimite = 15;
}
if ($prioridade === "alta") {
    $datalimite = 7;
}
$datalimite = strtotime("+{$datalimite} days");
$datalimite = date("%Y-%m-%d %H:%i:%s", $datalimite);

 

 

 

 

 

 

pag. funcoes.php

 

<?php 
 
include ('conexao.php'); 
 
$id = $_POST['id']; 
$grava_nome = $_POST['txtNome']; 
...
 

if($_GET['funcao'] == "gravar"){ 
$sql_gravar = mysql_query("INSERT INTO tbteste ( nome, prioridade, datamodificacao, datalimite) values ('$grava_nome','[b]gravar prioridade[/b]','[b]gravar datalimite[/b]')");

 

 

 

Gostaria que o campo select completasse tanto o campo prioridade quanto o campo datalimite.

 

>

$prioridade = strtolower($_POST['prioridade']);
if ($prioridade === "baixa") {
    $datalimite = 30;
}
if ($prioridade === "média") {
    $datalimite = 15;
}
if ($prioridade === "alta") {
    $datalimite = 7;
}
$datalimite = strtotime("+{$datalimite} days");
$datalimite = date("%Y-%m-%d %H:%i:%s", $datalimite);

 

 

 

Mostra o valor em $prioridade

Mas em $datalimite mostra %1969-%12-

 

Olá,

 

 

Não sei se os dados vem de um banco de dados mas fiz um código e criei uma função que ira ajuda-lo nessa situação.

 

 

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>Adicionando Data</title>
</head>
	<body>
<?php 
function addData($dias, $operacao = "+" , $apartir_data = NULL){
	date_default_timezone_set("America/Fortaleza");	
	if(!empty($dias)):
		if($apartir_data == NULL):
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days")) : date('d/m/Y', strtotime("-".$dias." days")) ; 
		else:
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days", strtotime($apartir_data) )) : date('d/m/Y', strtotime("-".$dias." days", strtotime($apartir_data))) ; 
		endif;
	endif;
}

$dias_para_adicionar = array('Alta' =>7,	'Média' =>15,	'Baixa' =>30);

?>		


<form action="" method="post" enctype="multipart/form-data">
	
<select name="dias">
	<?php
		foreach ($dias_para_adicionar as $prioridade => $dias_add ) {
			printf('<option value="%s">%s</option>' , $dias_add , $prioridade);
		}
	?>
</select>
<input type="submit" name="Cadastrar" value="Cadastrar" />
</form>

<?php 

if(isset($_POST['Cadastrar']) && $_POST['Cadastrar'] == "Cadastrar"){
	$dias_add_rec = $_POST['dias'];

	if(!empty($dias_add_rec)){
		echo addData($dias_add_rec,"+");
	}else{
		echo "Erro, falta informa a quantidade de dias para o calculo desejado. ";
	}
}

?>


	</body>
</html>

 

 

Ensinando a utilizar a função abaixo.

 

function addData($dias, $operacao = "+" , $apartir_data = NULL){
	date_default_timezone_set("America/Fortaleza");	
	if(!empty($dias)):
		if($apartir_data == NULL):
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days")) : date('d/m/Y', strtotime("-".$dias." days")) ; 
		else:
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days", strtotime($apartir_data) )) : date('d/m/Y', strtotime("-".$dias." days", strtotime($apartir_data))) ; 
		endif;
	endif;
}

 

 

echo addData(dias_aqui, Operacao_aqui, Uma_data_para_calculo);

 

 

podendo ser usado da seguinte forma.

 

 

 

 

echo addData( 7 );
echo addData(7, "+", "10-11-2013");


echo addData( 7 );
echo addData(7, "-" );
echo addData(7, "-", "10-11-2013");

 

 

 

 

no caso a operação já fiz tudo né.

:D

 

 

Bom resumidamente,

 

1 - E preciso colocar os dias desejado para o calculo

2 - O padrão da operação e + se queres diminuir modifica para "-" se fores apenas somar com a data atual

3 - Se queres mudar a data atual e colocar outra data e só colocar no 3 parametro da função no formado "DD-MM-YYYY";

 

 

 

Este post solucionou a sua dúvida, peço que coloque como resolvido e me der um ponto positivo de reputação para que eu possa continuar ajudando outros colegas como você.

Caso não solucione o seu problema, peço que coloque a sua dúvida abaixo.

 

 

Att: João Paulo Sousa Supriano

 

 

 

Como eu posso criar variáveis para colocar na pag funcoes.php e gravar no bd esses resultados??

$prioridade=$_POST[];

$data_add_rec=$_POST

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostra o valor em $prioridade

 

Mas em $datalimite mostra %1969-%12-

Viajei. Python demais por aqui :P

 

A última linha tem que ficar assim:

$datalimite = date("Y-m-d H:i:s", strtotime("+{$datalimite} days"));

Acabei de testar aqui com +7 e imprimiu: [inline]2013-11-28 17:57:52[/inline]

 

Boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todas as opções dão a mesma data 1969-12-31...

 

Como eu posso fazer para ele somar com a data que esta no campo data de variável $gera_data??



 

Viajei. Python demais por aqui :P

A última linha tem que ficar assim:

$datalimite = date("Y-m-d H:i:s", strtotime("+{$datalimite} days"));
Acabei de testar aqui com +7 e imprimiu: [inline]2013-11-28 17:57:52[/inline]

Boa sorte.

 

 

Todas as opções dão a mesma data 1969-12-31...

 

Como eu posso fazer para ele somar com a data que esta no campo data de variável $gera_data??

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Patriciaff, tem certeza que você não está se confundindo na hora de gerar a data??

 

Pode informar pra gente como está a linha no seu código que imprime [inline]1969-12-31[/inline]??

 

Essa sua data foi gerada, sem dúvidas, por uma variável contendo algum valor incorreto que foi avaliado para 0, que gera a data 01-01-1970 em GMT. Descontando as 2/3 horas de fuso-horário, temos 31-12-1969.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Patriciaff, tem certeza que você não está se confundindo na hora de gerar a data??

 

Pode informar pra gente como está a linha no seu código que imprime [inline]1969-12-31[/inline]??

 

Essa sua data foi gerada, sem dúvidas, por uma variável contendo algum valor incorreto que foi avaliado para 0, que gera a data 01-01-1970 em GMT. Descontando as 2/3 horas de fuso-horário, temos 31-12-1969.

 

A linha do meu código tá assim: $datalimite = date("d/m/Y", strtotime("+{$datalimite} days"));

pra esse comando

$prioridade = strtolower($_POST['prioridade']);
if ($prioridade === "Baixa") {
$datalimite = 30;
}
if ($prioridade === "Média") {
$datalimite = 15;
}
if ($prioridade === "Alta") {
$datalimite = 7;
}
$datalimite = date("d/m/Y", strtotime("+{$datalimite} days"));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Patriciaff, a função http://php.net/strtolower'>strtolower converte um texto em minúsculas. Seus if's contém todas as iniciais maiúsculas. Por isso não está dando certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma pequena alteração nesse IF para trabalhar de outra forma:

 

<?php
$datalimite = array(
	'baixa' => 30,
    'media' => 15,
    'alta'  => 7
);

$_prioridade = 'Media'; // Simulando dado vindo do post, retire os acentos do html antes

$prioridade = strtolower($_prioridade);

if(isset($datalimite[$prioridade])){
    $datalimite = date("d/m/Y", strtotime("+{$datalimite[$prioridade]} days"));
} else {
    // Non-selected prioridade
}

echo $datalimite;

Aqui imprimiu:

 

14/12/2013

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma pequena alteração nesse IF para trabalhar de outra forma:

 

<?php
$datalimite = array(
	'baixa' => 30,
    'media' => 15,
    'alta'  => 7
);

$_prioridade = 'Media'; // Simulando dado vindo do post, retire os acentos do html antes

$prioridade = strtolower($_prioridade);

if(isset($datalimite[$prioridade])){
    $datalimite = date("d/m/Y", strtotime("+{$datalimite[$prioridade]} days"));
} else {
    // Non-selected prioridade
}

echo $datalimite;

Aqui imprimiu:

 

Mas como deve ficar

$_prioridade =

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

 

Não sei se os dados vem de um banco de dados mas fiz um código e criei uma função que ira ajuda-lo nessa situação.

 

 

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>Adicionando Data</title>
</head>
	<body>
<?php 
function addData($dias, $operacao = "+" , $apartir_data = NULL){
	date_default_timezone_set("America/Fortaleza");	
	if(!empty($dias)):
		if($apartir_data == NULL):
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days")) : date('d/m/Y', strtotime("-".$dias." days")) ; 
		else:
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days", strtotime($apartir_data) )) : date('d/m/Y', strtotime("-".$dias." days", strtotime($apartir_data))) ; 
		endif;
	endif;
}

$dias_para_adicionar = array('Alta' =>7,	'Média' =>15,	'Baixa' =>30);

?>		


<form action="" method="post" enctype="multipart/form-data">
	
<select name="dias">
	<?php
		foreach ($dias_para_adicionar as $prioridade => $dias_add ) {
			printf('<option value="%s">%s</option>' , $dias_add , $prioridade);
		}
	?>
</select>
<input type="submit" name="Cadastrar" value="Cadastrar" />
</form>

<?php 

if(isset($_POST['Cadastrar']) && $_POST['Cadastrar'] == "Cadastrar"){
	$dias_add_rec = $_POST['dias'];

	if(!empty($dias_add_rec)){
		echo addData($dias_add_rec,"+");
	}else{
		echo "Erro, falta informa a quantidade de dias para o calculo desejado. ";
	}
}

?>


	</body>
</html>

 

 

Ensinando a utilizar a função abaixo.

 

function addData($dias, $operacao = "+" , $apartir_data = NULL){
	date_default_timezone_set("America/Fortaleza");	
	if(!empty($dias)):
		if($apartir_data == NULL):
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days")) : date('d/m/Y', strtotime("-".$dias." days")) ; 
		else:
			return  ($operacao == "+") ? date('d/m/Y', strtotime("+".$dias." days", strtotime($apartir_data) )) : date('d/m/Y', strtotime("-".$dias." days", strtotime($apartir_data))) ; 
		endif;
	endif;
}

 

 

echo addData(dias_aqui, Operacao_aqui, Uma_data_para_calculo);

 

 

podendo ser usado da seguinte forma.

 

 

 

 

echo addData( 7 );
echo addData(7, "+", "10-11-2013");


echo addData( 7 );
echo addData(7, "-" );
echo addData(7, "-", "10-11-2013");

 

 

 

 

no caso a operação já fiz tudo né.

:D

 

 

Bom resumidamente,

 

1 - E preciso colocar os dias desejado para o calculo

2 - O padrão da operação e + se queres diminuir modifica para "-" se fores apenas somar com a data atual

3 - Se queres mudar a data atual e colocar outra data e só colocar no 3 parametro da função no formado "DD-MM-YYYY";

 

 

 

Este post solucionou a sua dúvida, peço que coloque como resolvido e me der um ponto positivo de reputação para que eu possa continuar ajudando outros colegas como você.

Caso não solucione o seu problema, peço que coloque a sua dúvida abaixo.

 

 

Att: João Paulo Sousa Supriano

 

 

Seu codigo foi o melhor q achei, mas não consegui usá-lo as minhas necessidades...

 

Preciso que o form com select me dê 2 valores para salvando-os no BD: 1 para campo datalimite e outro campo prioridade.

 

No caso:

<select name="prioridade" id="prioridade">
<option value="Baixa">Baixa</option>
<option value="Média">Média</option>
<option value="Alta">Alta</option>
</select>
a pessoa escolhendo Baixa... Irá Baixa para campo no BD prioridade
Irá data + 30 dias para campo datalimite (essa data já estará gravada no BD no campo data, ele vai puxar de lá e adicionar 7 dias)
Se escolher Média... Irá Média para campo prioridade
e... irá "campo data + 15 dias" para o campo datalimite
Se escolher alta... irá Alta para campo prioridade
e... irá "campo data + 7 dias" para campo datalimite

 

 

Por favor, vc pode me ajudar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Ajude-nos a te ajudar...

Desculpa, mas não sei como usar isso...

 

A data do seu codigo só aparece 31/12/1969

 

Vc pode me dizer como fica seu código completo com var_dump($prioridade); ?????

 

te agradeço muito!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Patriciaff

 

Pelo menos testou a minha dica?

Testei o codigo que vc me mandou.... e que dá sempre a data como descrevi pra vc...

Tirei os acentos e coloquei tudo em letras minusculas e.. nada! data continua a mesma....

 

tô mandando a pag funcao.php

include ('conexao.php');
$id = $_POST['id'];
$grava_nome = $_POST['txtNome'];
$grava_idade = $_POST['txtIdade'];
$grava_endereco = $_POST['txtEndereco'];
$grava_bairro = $_POST['txtBairro'];
$grava_cidade = $_POST['txtCidade'];
$grava_estado = $_POST['txtEstado'];
$grava_telefone = $_POST['txtTelefone'];
$grava_manifestacao = $_POST['txtManifestacao'];
$grava_datamodificacao = $_POST['txtDatamodificacao'];
$grava_datamodificacao2 = $_POST['txtDatamodificacao2'];
$grava_destino = $_POST['txtDestino'];
$grava_observacoes = $_POST['txtObservacoes'];
$grava_email = $_POST['txtEmail'];
$grava_num = $_POST['txtNum'];
$grava_conclusao = $_POST['txtConclusao'];
$grava_providencia = $_POST['txtProvidencia'];
date_default_timezone_set('America/Fortaleza');
$gera_data = date('d/m/Y');
$gera_hora = date('H:i:s');
$gera_protocolo = time();
$classificacao_sugestao=$_POST['Sugestao'];
$classificacao_informacao=$_POST['Informacao'];
$classificacao_solicitacao=$_POST['Solicitacao'];
..... etc....
Qual será o meu erro????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como que está seu código inteiro (inclusive o formulario)?

 

Poste entre as tags [ code ]

 

Ai só mostra vc recuperando os dados do post

 

 

 

<form id="form1" name="form1" method="post" onsubmit="return validar(this);" action="../ess/funcoes.php?funcao=editar&id=<?php echo $id ?>">

 

<select name="prioridade" id="prioridade">
    <option value="">Selecione</option>
    <option value="baixa">Baixa</option>
    <option value="media">Média</option>
    <option value="alta">Alta</option>
  </select>

 

com include nessa pag.

include "../ess/conexao.php";

 

if($_GET['funcao'] == "editar"){
$id = $_GET['id'];
$sql_update = mysql_query("SELECT * FROM tbteste WHERE  id = '$id'");
while($linha = mysql_fetch_array($sql_update)){
$nome = $linha['nome'];

 

e na pag funcoe.php o que já postei

 

include ('conexao.php'); 


$id = $_POST['id']; 
$grava_nome = $_POST['txtNome']; 
$grava_idade = $_POST['txtIdade']; 
$grava_endereco = $_POST['txtEndereco']; 
$grava_bairro = $_POST['txtBairro']; 
$grava_cidade = $_POST['txtCidade'];

Todos os outros campos estão OK...

Só não consigo fazer o select gravar em 2 campos.... datalimite e prioridade

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom conforme informado, fiz um exemplozinho.

 

 

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>Formulario</title>
</head>
<body>

	<form action="#" method="post">
		<select name="prioridade" id="prioridade">
		    <option value="0">Selecione</option>
		    <option value="baixa">Baixa</option>
		    <option value="media">Média</option>
		    <option value="alta">Alta</option>
  		</select>


  		<input type="hidden" name="dataAtual" value="<?php echo date('d-m-Y'); ?>" />
  		<input type="submit" name="visualizarsql" value="Visualizar SQL" />

	</form>

<?php 
	if(isset($_POST['visualizarsql']) && $_POST['visualizarsql'] == "Visualizar SQL"):
		require_once "functions.php";
		
		$sql = "INSERT INTO tabelaX (prioridade, dataAdicionada) VALUES ( ";

		if(!empty($_POST['prioridade'])){
				switch ($_POST['prioridade']) {
					case 'baixa':
						$novaData = addData2($data_atual, 30 );
					break;
					case 'media':
						$novaData = addData2($data_atual,15 );
					break;
					case 'alta':
						$novaData = addData2($data_atual,7 );
					break;
				}
			$sql .= " '".$_POST['prioridade']."' , $novaData ) ";
			echo $sql;
		}else{
			echo 'Erro, selecione uma prioridade.';
		}


	endif;
?>


</body>
</html>

pagina functions.php

 

<?php
     function addData2($data, $dias){
	$data_mostra = date('d-m-Y', strtotime("+{$dias} days", strtotime($data) ) );
	$data_array = str_replace('-', '/', $data_mostra);
	return $data_array;
     }
?>

 

 

Teste e adapte para sua necessidade.

 

 

 

 

 

Este post solucionou a sua dúvida, peço que coloque como resolvido e me der um ponto positivo de reputação para que eu possa continuar ajudando outros colegas como você.

Caso não solucione o seu problema, peço que coloque a sua dúvida abaixo.

 


Att: João Paulo Sousa Supriano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas não sei como usar isso...

 

A data do seu codigo só aparece 31/12/1969

 

Vc pode me dizer como fica seu código completo com var_dump($prioridade); ?????

 

te agradeço muito!!!

OK, troque o pedaço de código que te passei aquela vez por este aqui, ficará bem mais descritivo na resposta:

$prioridade = $_POST['prioridade'];
$prazodias = 30;

echo "Recebido valor de prioridade: {$prioridade}";

if ($prioridade === 'media') {
    $prazodias = 15;
}

if ($prioridade === 'alta') {
    $prazodias = 7;
}

echo "Prazo em dias: {$prazodias}";

echo "Data do prazo: " . date(strtotime("+{$prazodias} days"));

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.