Установите метку на картах Google из данных php с помощью javascript [500 (Internal Server Error)] - PullRequest
0 голосов
/ 27 июня 2018

Я изучал более 3 дней, чтобы найти ответ, подходящий для моей проблемы, но пока ничего не нашел.

Вот проблема: У меня есть страница php с 3 select на ней, как только пользователь выбрал значение на элементе select, страница отправляет эти значения на страницу php через ajax. Страница php будет извлекать из базы данных широту и долготу в соответствии с выбранными параметрами, затем она будет размещать маркер с этими координатами на карте Google. У меня уже есть API Google Maps.

Когда я отправляю значения на страницу php, консоль chrome возвращает сообщение «POST 500 (внутренняя ошибка службы). Я читал, что это может быть вызвано ошибкой в ​​коде php или сервером. В тот момент, когда я не могу получить доступ к серверу, чтобы увидеть журнал ошибок, я не уверен, что происходит.

Итак, главный вопрос: правильно ли я написал php-код? потому что если я этого не сделаю, мне не придется беспокоить моего босса доступом к серверу.

Если я плохо объяснил себя, пожалуйста, дайте мне знать, я не знаком с вопросами на английском, поэтому, возможно, я написал плохо.

Вот php-страница с ajax

    <?php
session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
require "connessione.php";
?>

<html>
<head>
     <style>
        #map {
        height: 100%; 
      }

      html, body { 
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>

<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDslqBC-ZEVJMnuN28gf6lkBrfS_MWMJJg">
    </script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script type="text/javascript">


        function funzione_visualizzazione(){


         if(document.myForm.comune.value != '' && document.myForm.fabbisogno_totale.value != '' && document.myForm.fabbisogno_coperto.value != '')
         {




               var comune = document.getElementById("comune").value; 

               var fabbisogno_coperto = document.getElementById("fabbisogno_coperto").value; 

               var fabbisogno_totale = document.getElementById("fabbisogno_totale").value; 



                  $.ajax
                ({  
                    cache:false,
                    type: "POST",
                    url: "calcola_area.php",  
                    data: {comune : 'comune', fabbisogno_coperto : 'fabbisogno_coperto' , fabbisogno_totale : 'fabbisogno_totale'},
                }).done(function(data){

                    alert(data);

                    $("#risultati").append(data);

            });


        }
        else alert("inserire tutti i dati"); //le parentesi graffe sull'else davano errore
       }





        </script>

</head>
<body>
<?php echo "test";?>


<form name="myForm" action="javascript:funzione_visualizzazione();">

              <select id="comune">
                <?php

                $sql = "SELECT * FROM comuni_new"; 
                $query = mysql_query($sql,$connessione) or die("MySQL error: " . mysql_error($connessione) . "<hr>\nQuery: $query");


        while($row=mysql_fetch_array($query)){

                $nome_comuni = $row['nome_comuni'];

                $id_comuni = $row['id_comuni'];

                         ?>
                <option value="<?php echo $id_comuni?>"><?php echo $nome_comuni?></option>

                <?php
        }

                     ?> 



      </select>
        <select id="fabbisogno_totale">
                <option value="5"> 5 </option>
                <option value="15"> 15 </option>
                <option value="20"> 20 </option>
                <option value="25"> 25 </option>
                <option value="30"> 30 </option>
        </select>

        <input id="fabbisogno_coperto" type="number" value="" size="40" maxlength="25" /> 
        <input type="submit" value="Submit">



</form>




<div id="risultati"></div>

</body>
</html>

И php-страница, которая не работает:

     <?php
session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require "connessione.php";


if(isset($_POST['comune'])){
    $id_comune = $_POST['comune'];  
}

if(isset($_POST['fabbisogno_totale'])){
    $fabbisogno_totale = $_POST['fabbisogno_totale'];
}

if(isset($_POST['fabbisogno_coperto'])){
    $fabbisogno_coperto = $_POST['fabbisogno_coperto']
}







$query = mysql_query("SELECT * FROM comuni_new where id_comune='$id_comune'");


while($row=mysql_fetch_array($query)){

$longitudine = $row['longitudine'];                              
$latitudine = $row['latitudine'];
//altre cose qui che possono serivire

}





echo '<script type="text/javascript">',
     'initMap(<?php $latitudine?>,<?php$longitudine?>);',
     '</script>' 


 ?><script>

                function initMap(latitudine, longitudine){

                    var myLatLng = {lat: latitudine, lng: longitudine};

                    var map = new google.maps.Map(document.getElementById("map"), {
                            zoom: 8,
                            center: myLatLng
                    });

                     var marker = new google.maps.Marker({
                        position: myLatLng,
                         map: map
                    });
                }
        </script>

        <div id="map"></div>

         <script type="text/javascript">
        initMap();
        </script>

      <?php  
      ?>

P.s Просто для всех, кто интересуется форматом, я использую возвышенный текст, который дает правильный отступ, возможно, при переполнении стека при копировании и вставке, он был изменен

1 Ответ

0 голосов
/ 27 июня 2018

Вот одна из проблем:

if(isset($_POST['fabbisogno_coperto'])){
    $fabbisogno_coperto = $_POST['fabbisogno_coperto']
}

Вам не хватает точки с запятой ...

Кстати, просто используйте подходящую IDE (например, PhpStorm), которая имеет форматирование / раскраску кода, и у вас никогда не будет таких глупых ошибок.

UPDATE:

Чтобы исправить проблему с mysql, вы должны исправить скрипт соединения, есть проблема ... Он вернул логическое значение, а не соединение / ресурс. Вот вам и требуется:

require "connessione.php";

Другое дело, никогда не используйте mysql_ * он очень старый / устарел / прослушивается ... просто забудьте, что он существует! Вместо этого используйте mysql i _ * или PDO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...