Pues probablemente sea porque tus if no los estas poniendo dentro de tu bucle (si es que tu consulta puede que arroje más de un resultado "una fila") hazlo de esta manera:
Código PHP:
$pesok = $Pesoc * 0.454; //peso de libras a kilos
$resprecios = mysql_query("select * from tprecios WHERE peso_inicial >= '".$pesok."' and peso_final = '".$pesok."' ") or die ("error:\n".mysql_error());
while ($rowprecio = mysql_fetch_array($resprecios, MYSQL_ASSOC))
{
$peso_inicio = $rowprecio["peso_inicial"];
$peso_final = $rowprecio["peso_final"];
$preciocom = $rowprecio["preciocom"];
$preciomediog = $rowprecio["preciomediog"];
$preciovar = $rowprecio["precio_variacion"];
//Inicio de calculo del flete del ITEM ESTATICO
$pesomgnf = $pesok / 0.500;
$pesomgnf2 = round($pesomgnf); //este es el valo que uso para hacer mis calculos
if ( ( $pesomgnf2 >= 1 ) and ( $pesomgnf2 <= 9 ) )
{
$calculo = $preciomediog + ( $pesomgnf2 - 1 ) * $preciovar;
echo "Costo de flete1 $calculo";
}
else
{
if ( ( $pesomgnf2 >= 10 ) and ( $pesomgnf2 <= 19 ) )
{
$calculo = $preciocom + ( $pesomgnf2 - 10 ) * $preciovar;
echo "Costo de flete2 $calculo";
}
else
{
if ( ( $pesomgnf2 >= 20 ) and ( $pesomgnf2 <= 39 ) )
{
$peso_mediosg = $pesomgnf2 - 1;
$precio1 = $peso_mediosg * $preciovar;
$calculo = $preciocom + precio1;
echo "Costo de flete3 $calculo";
}
else
{
if ( ( $pesomgnf2 >= 40 ) and ( $pesomgnf2 <= 100 ) )
{
$calculo = $preciocom + ( $pesomgnf2 - 40 ) * $preciovar;
echo "Costo de flete4 $calculo";
}
else
{
if ( ( $pesomgnf2 > 100 ) )
{
$calculo = $preciocom + ( $pesomgnf2 - 100 ) * $preciovar;
echo "Costo de flete5 $calculo";
}
}
}
}
}
}
Aunque en lo personal me gustan más los elseif para no tener tantas llaves:
Código PHP:
$pesok = $Pesoc * 0.454; //peso de libras a kilos
$resprecios = mysql_query("select * from tprecios WHERE peso_inicial >= '".$pesok."' and peso_final = '".$pesok."' ") or die ("error:\n".mysql_error());
while ( $rowprecio = mysql_fetch_array ( $resprecios, MYSQL_ASSOC ) )
{
$peso_inicio = $rowprecio["peso_inicial"];
$peso_final = $rowprecio["peso_final"];
$preciocom = $rowprecio["preciocom"];
$preciomediog = $rowprecio["preciomediog"];
$preciovar = $rowprecio["precio_variacion"];
//Inicio de calculo del flete del ITEM ESTATICO
$pesomgnf = $pesok / 0.500;
$pesomgnf2 = round($pesomgnf); //este es el valo que uso para hacer mis calculos
if ( ( $pesomgnf2 >= 1 ) and ( $pesomgnf2 <= 9 ) )
{
$calculo = $preciomediog + ( $pesomgnf2 - 1 ) * $preciovar;
$flete = 1;
}
elseif ( ( $pesomgnf2 >= 10 ) and ( $pesomgnf2 <= 19 ) )
{
$calculo = $preciocom + ( $pesomgnf2 - 10 ) * $preciovar;
$flete = 2;
}
elseif ( ( $pesomgnf2 >= 20 ) and ( $pesomgnf2 <= 39 ) )
{
$peso_mediosg = $pesomgnf2 - 1;
$precio1 = $peso_mediosg * $preciovar;
$calculo = $preciocom + precio1;
$flete = 3;
}
elseif ( ( $pesomgnf2 >= 40 ) and ( $pesomgnf2 <= 100 ) )
{
$calculo = $preciocom + ( $pesomgnf2 - 40 ) * $preciovar;
$flete = 4;
}
elseif ( ( $pesomgnf2 > 100 ) )
{
$calculo = $preciocom + ( $pesomgnf2 - 100 ) * $preciovar;
$flete = 5;
}
echo "Costo del flete$flete $calculo";
}
Y también ha de ser por que estas encerrando entre comillas simples los números, creo ya habiamos hablado de esto antes ¿no?(Si tu consulta sólo arroja una fila sólamente quita las comillas simples sin poner tus if dentro del while y no uses un bucle si sabes que sólo te dará una fila). Pruebalo y luego me cuentas que tal te fue. Suerte