preciso de ajuda com indicadores <,= para fazer lookup com parametro[RESOLVIDO]

Tenho uma tabela com 3 preços eu preciso fazer um lookup do preço, que varia conforme a quantidade.

para até 9 cópias o preço é 1,25 de 10 a 49 o preço é 1,00 e de 50 a 99

// o que preciso é escrever 2 indicadores na mesma linha, mas não sei como

if ({quantidade} > "9) // if ({quantidade} > “9”< “50”) ou if ({quantidade} => “10”< “50”) tem que ser maior que 10 e menor que 50
porque quando o numero for acima de 50 ele vai ser maior que 9 também e nao quero isso.

if ({quantidade} > “9”)

{
sc_lookup(valor_unidade,“SELECT
valor_10
FROM sc_impressao_tipo
WHERE id_tipo_impressao = {id_tipo_impressao}”);
{valor_unidade}={valor_unidade[0][0]};
}

Amigo achei meio confuso a explicação, mas percebi que você pode usar um Switch pra resolver isso, visto que o problema é dividido em casos (CASE).

Obrigado FredKeyster, mas não sei como funciona (CASE)

desculpa não expliquei muito bem.

eu tenho éssa linha de código if ({quantidade} > “9”) eu preciso fazer que éla seja maior do que 9 e seja menor que 50 ao mesmo tempo, maior que 9 funciona normal com esse código if ({quantidade} > “9”), mas maior que 9 e menor que 50 não sei como escrever as 2 juntas
ex: if ({quantidade} > “9”,< “50”) ou if ({quantidade} > “9<50”) ou if ({quantidade} > “9,<50”).
tava indo por tentativa e erro mas pode ser inumeras possibilidades.

mayinfo,

Não seria:

if ({quantidade} > “9” OR {quantidade} <“50”)

?

mayinfo, se entendi você quer trazer o preço da tabela no lookup, então, passe a quantidade para a query e utilize o seguinte:

$_qtd = valor da qtde;
sc_lookup(valor_unidade,“SELECT CASE WHEN $_qtd <10 THEN 1.25 WHEN $_qtd BETWEEN 10 AND 49 THEN 1.00 ELSE 0.50 END FROM sc_impressao_tipo
WHERE id_tipo_impressao = {id_tipo_impressao}”);
{valor_unidade}={valor_unidade[0][0]};
}

Para o preço >= a 50 eu coloquei 0.50.

Veja se ajudou

Faz assim que resolve seu caso:

function getCopias($copias){

switch ($copias) :
case ($copias < 10):
return ‘O preço é R$ 1,25’;
break;
case ($copias < 50):
return ‘O preço é R$ 1,00’;
break;
case ($copias < 100):
return ‘0 preço é R$ 0,80’;
break;
endswitch;

}
echo getCopias(45);

Fiz esse teste em um Blank e funcionou agora é só implementar no seu código!

Obrigado consegui resolver com esse código do kleyber if ({quantidade} > “9” OR {quantidade} <“50”)

Mas acredito que os outros dois códigos do Luis Eduardo e FredKeyster resolveriam também

Se a tabela é: para até 9 cópias o preço é 1,25 de 10 a 49 o preço é 1,00 e de 50 a 99(seja lá que preço for)

O OR não funciona porque:

  1. Qtde = 8, é menor que 50, então o preço seria 1,25 ou 1,00??
  2. Qtde = 51, é maior que 9, então o preço seria (seja lá o que foi definido para maior que 50);
  3. Qtde = 15, é maior que 9, então o preço é 1,00 ou (seja lá o que foi definido para maior que 50);

Só quero alertar o perigo do OR.

Mas, se em sua lógica você está considerando isso, desconsidere meu post.

Forte abraço

mayinfo,

A dica do Luis Eduardo é realmente interessante. Eu pus o IF apenas pra mostrar que se poderia fazer algo simples para resolver a questão. Mas se considerar a lógica como um todo, é interessante observar este post do Luis Eduardo.

oi kleyber realmente a lógica como o luis falou não estava certa, fiz mais uns teste e troquei o OR pelo AND. e esta funcionando vou postar todo o código aqui para vcs verem.
isso vai me servir para minha loja pois comprei uma maquina que imprime foto e coloquei os preços por quantidade de fotos que os clientes enviarem.

// código

if ({quantidade} > “9” and {quantidade} <“50”)

{
sc_lookup(valor_unidade,“SELECT
valor_10
FROM sc_impressao_tipo
WHERE id_tipo_impressao = {id_tipo_impressao}”);
{valor_unidade}={valor_unidade[0][0]};
}

if ({quantidade} > “50” and {quantidade} <“99”)

{
sc_lookup(valor_unidade,“SELECT
valor_50
FROM sc_impressao_tipo
WHERE id_tipo_impressao = {id_tipo_impressao}”);
{valor_unidade}={valor_unidade[0][0]};
}

if ({quantidade} > “99”)

{
sc_lookup(valor_unidade,“SELECT
valor_100
FROM sc_impressao_tipo
WHERE id_tipo_impressao = {id_tipo_impressao}”);
{valor_unidade}={valor_unidade[0][0]};
}