Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera to com uma duvida grande q nao sei por onde começar o script, vou explicar para ver se alguem me dar uma luz não quero o codigo pronto mais uma ajuda pfavor, vamos lá;
a logica é simples, tenho uma tabela onde estao gravados valores assim:
id - dias
1 - 10
2 - 20
3 - 30
ai vem o porém recebo um valor do usuario que pode ser qualquer 1 digamos que ele digite "12".
o script teria que ver onde se encaixa o 12 no caso a logica seria 12 > 10 < 20 ou seja ele me retornaria que o 12 é verdadeiro entre 10 e 20. se o usuario digita 7 ele retornaria verdadeiro apenas que 7 < 10; pq o sistema terá que calcular um valor para cada valor maximo estipulado, ou seja
até 10 dias > cobra por exemplo R$ 2,00
apartir de 10 dias porém menor que 20 dias cobra R$ 5,00
apartir de 20 dias porém menor que 30 cobra R$ 10,00
e acima de 30 dias cobra R$ 20,00
só quero uma luz msm, rsrsrs sei que poderia usar a logica da funcao max() e min() mais isso se fosse para comparar apenas 2 valores, nessse caso preciso verificar intervalos entre eles;
é a questão dos ifs tem logica mais da outra funcao strtotime nao tem haver pois trata datas, ainda estou procurando a solução meus ifs já montei assim mais se fossem valores fixos porém vem de um array;
X= 7
v1=10
v2=20
v3=30
logica:
if(x <= v1) -> x=v1
if(x > v1) and (x <= v2 ) -> x=v2
if(x > v2) and (x >= v3 ) -> x=v3
porém os valores v1, v2, v3 vem de array que poderá ter varios valores valores atribuidos, teria como incluir um indice a cada valor?
Você tem que usar a lógica dos Algoritmos de Ordenação.
Seu array estará ordenado. Você não precisas mexer nele. Porém vai usar a lógica da Ordenação para descobrir onde o número deve entrar, caso ele fosse inserido no array.
Inclua o novo valor normalmente em seu array
Depois ordene com o comando sort() , e automaticamente o array será ordenado pelos valores e será dado novas chaves ao array do menor ao maior.
http://php.net/manual/pt_BR/function.sort.php
Abraços
eu entendi ate ai, tem logica o problema é o seguinte, preciso nao so saber onde o numero se ordena mais atribuir um valor para cada um de acordo onde ele se encaixa; fiz assim, mais o resultado vai ser sempre verdadeiro pq a logica se encaixa em todos e nao pode ser:
$variacoes = mysql_query("SELECT * FROM tb_varia_diarias ORDER BY varia_dias ASC")or die(mysql_error());
$x =15;
while($row_variacoes = mysql_fetch_assoc($variacoes)){
$y = $row_variacoes['varia_dias']; //aqui é o valor que tem q ser comparado com o inserido pelo usario no caso $x;
$atribuir_valor = $row_variacoes['valor'];
$variacoes = array($y);
foreach ($variacoes as $chave => $valor) {
if ($x <= $valor){ // aqui ele compara se é menor que o primeiro numero do while
$valor = $atribuir_valor;
}
//aqui deveria entrar outro if para verificar se é maior que o primeiro resultado e menor que o próximo;
exemplo: digamos que os valores do while fossem (10,20,30);
como $x é 15 deveria se encaixar após o 10 e antes do 20 (nao considerar o 30
if(($x > $y[no caso 10]) and ($x <= $y(no caso 20))){
$valor = $atribuir_valor;
}
e por ultimo verificaria o maior valor de todos e entraria a clausula
if($x >= $maximo){
$valor = $atribuir_valor;
}
}
}
ta complicado isso to pensando em mudar a tabela mesmo e dar um valor pra cada campo; :sick: :upset:
Use strtotime
http://php.net/manual/pt_BR/function.strtotime.php
Acho que a luz está ai. XD
Leia com atenção o POST e entenderá o porque.
^^ Boa sorte.
Isso acima para comparar datas,
Mas também tem os Operadores de Comparação.
http://php.net/manual/pt_BR/language.operators.comparison.php
Usando um IF ai acho que ta tudo resolvido.