Условные выражения в 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>
Author: Eslacuare, 2016-09-28

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 здесь я оставляю вам несколько веб-сайтов, я надеюсь, что они будут для вас полезность:

  1. Https://www.codecademy.com/es/tracks/php-clone

  2. Http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

  3. Https://www.youtube.com/watch?v=JNbTvInths0

  4. Http://www.tutorialesprogramacionya.com/phpya/

  5. Https://www.tutorialspoint.com/php/index.htm

Для JavaScript и jQuery

  1. Https://developer.mozilla.org/es/docs/Web/JavaScript

  2. Http://try.jquery.com/

  3. Https://www.codecademy.com/learn/javascript

  4. Http://learn-js.org/

  5. Https://www.codecademy.com/learn/jquery

 3
Author: fredyfx, 2016-09-28 16:46:45

Вам не хватает $ в параметре функции. Для проблемы 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

Что облегчило поиск вашей проблемы

 1
Author: rfrp, 2016-09-28 01:46:17