Não traz valor - Método PHP

Criei um método PHP com o script abaixo, o problema que quando eu coloco o código que tem a anotação “//RECUPERAR O VALOR DA TABELA ESPECIAL DO CLIENTE – NOVIDADE” ele traz um valor zero, quando eu tiro este script e me retorna o valor que eu solicito.

//RECUPERAR O VALOR_UNITÁRIO
sc_lookup(ds,
		"SELECT preco_base 
		FROM produtoservico 
		WHERE idprodutoservico = '{id_produto}' 
		ORDER BY preco_base");

$valorDs = {ds[0][0]};
//Converter valor em float
$valor_base = floatval ($valorDs);




//RECUPERAR A PORCENTAGEM DO PLANO DE PAGAMENTO
sc_lookup(dspaga,
		"SELECT
			   tabelapreco.porcentagem
			FROM
			   tabelapreco INNER JOIN clifor ON tabelapreco.id = clifor.TABELA_PRECO
			WHERE
			   clifor.REGISTRO = '{id_cliente}'");

$valorDspaga = {dspaga[0][0]};
//Converter valor em float
$plano = floatval ($valorDspaga);


//RECUPERAR O VALOR DA TABELA ESPECIAL DO CLIENTE -- NOVIDADE
sc_lookup(dataset,
		"SELECT 
		  		preco_base 
					FROM produtoservico_cliente 
						WHERE 
							id_cliente = '{id_cliente}' AND
							id_produto_servico = '{id_produto}'");

$valorset = {dataset[0][0]};
//Converter valor em float
$espec = floatval ($valorset);







//APLICAR O PLANO_PAGAMENTO NO VALOR_UNITÁRIO

if($espec > 0)
{
	$valorTabela=$espec;
				
                                      }else{
						$valor = $valor_base; 
						$percentual = $plano / 100.0; 
						$valor_final = $valor + ($percentual * $valor);
						$valorTabela = $valor_final;

						}

{valor_unitario} = $valorTabela;

Pode ser porque não esta achando na tabela o código que esta procurando.

Criar seus códigos assim para ter mais controle no caso de erros:

/* Macro sc_lookup */

$sql ="
SELECT
preco_base
FROM
produtoservico
WHERE
idprodutoservico = ‘{id_produto}’
ORDER BY
idprodutoservico
";

sc_lookup(chk_preco, $sql);

/* Erro no lookup /
if (FALSE === {chk_preco}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({chk_preco})) { /
EOF */

$_preco_base = 0;

sc_error_message("Nenhum valor foi retornado pelo banco.<BR>");	

}
else {

/* Inclua aqui sua rotina de processamento */

$_preco_base = floatval {chk_preco[0][0]};

}

/* Macro sc_lookup */

$sql ="
SELECT
	preco_base 
FROM
	produtoservico 
WHERE
	idprodutoservico = '{id_produto}' 
ORDER BY
	idprodutoservico
";

sc_lookup(chk_preco, $sql);

/* Erro no lookup */
if (FALSE === {chk_preco}) {
	sc_error_message("Ocorreu um erro no acesso ao banco de dados.<BR>");
}
elseif (empty({chk_preco})) { /* EOF */

	$_preco_base = 0;

	sc_error_message("Nenhum valor foi retornado pelo banco.<BR>");	

}
else {

	/* Inclua aqui sua rotina de processamento */

       $_preco_base = floatval {chk_preco[0][0]};
	
}

Fiz os testes isolados e todos estão trazendo valores, sem erros… Mas o que possui a observação “//RECUPERAR O VALOR DA TABELA ESPECIAL DO CLIENTE – NOVIDADE” em momento não trará valores, e daí aquele if, pois caso não trouxer ele lançará o outro valor

Experimente assim:

$cSql = “SELECT
preco_base
FROM produtoservico_cliente
WHERE
id_cliente = '”.{id_cliente}."’ AND
id_produto_servico = ‘".{id_produto}."’";

sc_lookup(dataset,$cSql);

$valorset = {dataset[0][0]};
//Converter valor em float
$espec = floatval ($valorset);

Guarda todo o código em um arquivo texto, e vai colocando parte por parte e testando, pegando com echo o resultado, tanto do sql, quanto do retorno dos campos.

// RECUPERAR O VALOR DA TABELA ESPECIAL DO CLIENTE - NOVIDADE

$sql="
SELECT
preco_base
FROM
produtoservico_cliente
WHERE
id_cliente = ‘{id_cliente}’ AND id_produto_servico = ‘{id_produto}’
";

echo 'SQL = '.$sql."
";

sc_lookup(chk_preco, $sql);

$_preco_base = floatval {chk_preco[0][0]};

echo 'Preco Base R$ = '.$_preco_base."
";

Ué, pensamos juntos, Jailton? rsrsrsrsrs

Fiz isto, mas somente quanto eu entro com este código, ela somente retorna o if, o valor do else na sua situação proposta ela não mostra…

//RECUPERAR O VALOR DA TABELA ESPECIAL DO CLIENTE – NOVIDADE
sc_lookup(dataset,
“SELECT
preco_base
FROM produtoservico_cliente
WHERE
id_cliente = ‘{id_cliente}’ AND
id_produto_servico = ‘{id_produto}’”);

$valorset = {dataset[0][0]};
//Converter valor em float
$espec = floatval ($valorset);

Reordenei todo o código, tudo está funcionando, exceto no que ocorre no if, elseif…
Pois o que eu quero é… se não houver registro na variável $vae ele deverá pegar o valor da variável $vd…

//RECUPERAR O VALOR_UNITÁRIO
$vu1=
“SELECT preco_base
FROM produtoservico
WHERE idprodutoservico = ‘{id_produto}’
ORDER BY preco_base”;

sc_lookup(vu, $vu1);
$valorDs = {vu[0][0]};
//Converter valor em float
$valor_base = floatval ($valorDs);

//RECUPERAR A PORCENTAGEM DO PLANO DE PAGAMENTO
$pc1=
“SELECT
tabelapreco.porcentagem
FROM
tabelapreco INNER JOIN clifor ON tabelapreco.id = clifor.TABELA_PRECO
WHERE
clifor.REGISTRO = ‘{id_cliente}’”;
sc_lookup(pc,$pc1);
$valorDspaga = {pc[0][0]};
//Converter valor em float
$plano = floatval ($valorDspaga);

// Função de porcentagem: Quanto é X% de N? PARA SABER Valor com Desconto
function porcentagem_xn ( $porcentagem, $total ) {
return ( $porcentagem / 100 ) * $total;
}
$vd = $valor_base - (porcentagem_xn($plano, $valor_base));

//RECUPERAR O VALOR DA Valor Especial DO CLIENTE – NOVIDADE
$ve1=
“SELECT
preco_base
FROM
produtoservico_cliente
WHERE
id_cliente = ‘{id_cliente}’ AND
id_produto_servico = ‘{id_produto}’ AND
preco_base != ‘’ AND
preco_base is not null”;

sc_lookup(ve,$ve1);
$vae = floatval({ve[0][0]});

//APLICAR O PLANO_PAGAMENTO NO VALOR_UNITÁRIO
if (empty ($vae))

{
{valor_unitario} = $vd;
}elseif(isset ($vae)){
{valor_unitario} = $vd;
}else{

{valor_unitario} = $vae;

}