кнопка для отображения результата суммирования значений файла json

0

Мне нужна помощь, чтобы отобразить результат в виде суммы значений json файла, который выглядит следующим образом:

http://www.base.gov.pt/base2/rest/contratos?&sort(-publicationDate)

У меня есть этот код в php для этого:

                         (name of this file: estat.php)

<?php
    //include "sum.php";
    $x="active";
    $y='';

    if(isset($_GET['tabsoft'])){
        $y="active";
        $x="";
    }

?>
<html>
    <?php include 'cab.php'; ?>
    <body>
        <?php include 'menu.php'; ?>
        <div class="container">
            <div calss="row">
                <ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
                    <li class="<?php echo $x ?>"><a href="#val" data-toggle="tab">Valor Total Gasto</a></li>
                    <li class="<?php echo $y ?>"><a href="#emp" data-toggle="tab">Número de Empresas Envolvidas</a></li>
                </ul>
                <div id="my-tab-content" class="tab-content">
                    <div class="tab-pane <?php echo $x ?>  " id="val">
                        <p>
                            <form>
                                <h2>Dinheiro gasto nos contratos</h2>
                                <input type="submit" name="soma" value="Somar Valores" class="btn btn-primary" formaction="action_sum.php"/>
                                <!-- <p><?php echo $total; ?></p> -->
                            </form>
                        </p>
                    </div>
                    <div class="tab-pane <?php echo $y ?>  " id="emp">

                    </div>
                </div>
            </div>
        </div>
        <?php include 'rodape.php';?>
    </body>
</html>

И мне нужно отобразить значение суммы "initialContractualPrice" из json файла, чтобы сделать это, я пишу этот код в другом файле, который я называю sum.php:

<?php

// Get json from url
$json = file_get_contents("file.json");
// Decode json into an array
//$json = json_decode($content, true);
$data =  json_decode($json, TRUE);

// Set default
global $total;

// Loop through the array created when decoding json
foreach ($data as $key) 
{
    // remove symbol from the end leaving only digits
    $value = substr(utf8_decode($key['initialContractualPrice']), 0, -1);
    // remove the decimal point
    $value = str_replace('.', '', $value);
    // replace the comma with a decimal point
    $value = str_replace(',', '.', $value);
    // add this number to the total value
    $total += $value;
}

//echo $total;

?>

Мой вопрос: как я могу сделать для страницы сумму без перенаправления на sum.php, но сделать это и напечатать результат в estat.php

Я могу изменить тип sum.php на js или jquery, если это проще сделать.

Большое спасибо.

  • 0
    Вы можете просто включить свою страницу в страницу "estat.php" или сделать это с помощью вызова ajax;
  • 0
    но если я делаю с include estat.php показывать значение, когда я открываю страницу, и мне нужно только, когда нажимаю на кнопку, или я делаю неправильный путь? @MamaWalter
Показать ещё 2 комментария

1 ответ

0
Лучший ответ

как и вы, укажите ваш sum.php в начале вашего файла estat.php. Скрыть значение суммы с помощью css.

<input id="sum-btn" type="submit" name="soma" value="Somar Valores" class="btn btn-primary" formaction="action_sum.php"/>
<p id="sum"><?php echo $total; ?></p>

CSS:

#sum {
    display:none;
}

и с jQuery (по мере того как вы помечаете его) наведите кнопку click на вашу кнопку:

<script>
$(document).ready(function() {
    $('#sum-btn').click(function() {
       $('#sum').show(); 
    });
});
</script>

FIDDLE DEMO

Альтернативный вариант, если вы не хотите вычислять сумму при загрузке страницы, вы можете вызвать ваш sum.php с помощью AJAX call при нажатии кнопки.

<script>
$(document).ready(function() {

    $('#sum-btn').click(function() {

        var request = $.ajax({
            url: "sum.php",
            type: "GET"
        });
        request.done(function( value ) {
            $('#sum').text( value );
            $('#sum').show(); 
        });
        request.fail(function( jqXHR, textStatus ) {
            alert( "Request failed: " + textStatus );
        });

    });
});
</script>

и в sum.php, echo $total; в конце.

  • 0
    я стараюсь, но не показываю ничего на div с результатом
  • 0
    что ты пробовал? у вас есть ошибка? в консоли?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню