Условные выражения в PHP
у меня есть следующий код в HTML и PHP. Я не могу найти ошибку в коде PHP, поэтому он не читает мне выражения и не дает мне результат. Правда, я новичок в программировании.
$( document ).ready(function()
{
$("#boton_calcular").click(function()
{
$.post("Rumbo_php.php",
{
azm: $("#azm1").val(),
},
function(data, status){
console.log("Datos recibidos: " + data + "\nStatus: " + status);
if(status=='success')
{
$("#caja_resultado").val( data );
}
});
});
});
<?php
//Capturo parametros
$azm1 = $_POST['azm1'];
//Realizo funcion para el paso de dms a deg
function rm(azm)
{
$exp = $azm>=0 && $azm<=90;
$exp1 = $azm>90 && $azm<=180;
$exp2 = $azm>180 && $azm<=270;
$exp3 = $azm>270 && $azm<=360;
if (eval($exp))
{
echo("Rumbo Calculado es: N"+$azm+"E");
} else if (eval($exp1)){
echo("Rumbo Calculado es: S"+(180-$azm)+" E");
} else if (eval($exp2)){
echo("Rumbo Calculado es: S"+($azm-180)+"W");
} else if (eval($exp3)){
echo("Rumbo Calculado es: N"+(360-$azm)+"W");
} else {
echo("No es un angulo valido");
}
return $resultado;
}
//Calculo las coordenadas de el punto
$rum = rm($azm1);
echo $rum;
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="jquery-1.12.3.min.js"></script>
</head>
<body>
<input type="text" id="azm1" value="3"> </input>Rumbo
<br><br>
<button id="boton_calcular">Calcular Rumbo</button>
<input type="text" id="caja_resultado"> </input>
2 answers
В вашем PHP
у вас есть:
$azm1 = $_POST['azm1'];
И в JavaScript
$.post("Rumbo_php.php",
{
azm: $("#azm1").val(),
},
Это azm:
замените его на azm1:
следующим образом:
$.post("Rumbo_php.php",
{
azm1: $("#azm1").val(),
},
Заменяет:
function rm(azm)
По:
function rm($azm)
Ваша функция выглядит следующим образом:
function rm($azm)
{
$exp = ($azm>=0 && $azm<=90) ? true : false;
$exp1 = ($azm>90 && $azm<=180) ? true : false;
$exp2 = ($azm>180 && $azm<=270) ? true : false;
$exp3 = ($azm>270 && $azm<=360) ? true : false;
$resultado = "";
if ($exp)
{
$resultado = "Rumbo Calculado es: N". $azm ."E";
} else if ($exp1){
$resultado = "Rumbo Calculado es: S".(180-$azm)." E";
} else if ($exp2){
$resultado = "Rumbo Calculado es: S".($azm-180)."W";
} else if ($exp3){
$resultado = "Rumbo Calculado es: N".(360-$azm)."W";
} else {
$resultado = "No es un angulo valido";
}
return $resultado;
}
//Calculo las coordenadas de el punto
$rum = rm($azm1);
echo $rum;
?>
Проблема, которую я видел, заключается в том, что подсчет строк в PHP
вы выполняли со знаком +
, однако он выполняется с точкой .
С другой стороны, когда вы определяете переменные, которые они будут хранить логические значения (true/false) лучше всего раскрывать их, я сделал "If short":
Variable = (condicion) ? Sí cumple : no cumple;
Если я сделаю это традиционным способом, это будет:
Variable;
if (condicion) {
//hacer algo si es verdad como asignar el valor a la variable:
Variable = algo si la condición es verdadera;
}else{
//hacer algo si la condición no se cumple, como asignarle otro valor a la variable:
Variable = algo si la condición es falsa;
}
Использование eval
, на мой взгляд, было дополнительным, поэтому я удалил его, поскольку функция оценивала, было ли условие истинным или ложным.
Чтобы вернуть значения функций, они должны использоваться, переменная $resultado
оставалась определенной, но пустой.
Вы можете увидеть небольшой пример работает в: https://lamp-fredyfx.c9users.io/soes.php?azm1=89 / / будет временно работать
Просто замените этот 89 на значения, которые вам нравятся.
Кстати, так как вы хотите узнать PHP
здесь я оставляю вам несколько веб-сайтов, я надеюсь, что они будут для вас полезность:
Для JavaScript
и jQuery
Вам не хватает $ в параметре функции. Для проблемы eval замените ее прямым взглядом на логическое значение. Это должно выглядеть так:
function rm($azm)
{
$exp = $azm>=0 && $azm<=90;
$exp1 = $azm>90 && $azm<=180;
$exp2 = $azm>180 && $azm<=270;
$exp3 = $azm>270 && $azm<=360;
if ($exp)
{
echo("Rumbo Calculado es: N"+$azm+"E");
} else if ($exp1){
echo("Rumbo Calculado es: S"+(180-$azm)+" E");
} else if ($exp2){
echo("Rumbo Calculado es: S"+($azm-180)+"W");
} else if ($exp3){
echo("Rumbo Calculado es: N"+(360-$azm)+"W");
} else {
echo("No es un angulo valido");
}
return $resultado;
}
Как говорит @fredyfx посмотрите на код javascript и замените его на то, что предлагает
Посмотрите на журнал ошибок веб-сервера. В apache появилось следующее:
PHP Notice: Undefined variable: resultado in /home/roberto/public_html/Rumbo_php.php on line 29, referer: http://localhost/~roberto/sof.html
Что облегчило поиск вашей проблемы