Dwie funkcje php a jeden wynik mysqli

0

Witajcie mam dwie funkcje:

function act_tmp($con) {
    $result = $con->query("SELECT temp FROM temperature ORDER BY id DESC limit 1") or die(mysqli_error($con));

    while ($row = mysqli_fetch_array($result)) {
        $data = array(
            "act_temp" => $row[0]
        );
        return $data['act_temp'];
    }
    mysql_free_result($result);
    $result->close();
}

function height_tmp($con) {
    $result = $con->query("SELECT temp FROM temperature ORDER BY temp DESC limit 1") or die(mysqli_error($con));

    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_array($result)) {
            $data = array(
                "highest_temp" => $row[0]
            );
            return $data['highest_temp'];
        }
    }
    mysql_free_result($result);
    $result->close();
}

Gdy rekord stanowi zarówno funkcję act_tmp oraz height_tmp to przy wyświetlaniu zostaje zwrócony tylko w act_tmp. Domyślam się że chodzi tu o konflikt jaki powstaje przy wybraniu danego rekordu, jeśli natomiast obie wartości są różne wówczas wszystko śmiga. Czy ktoś wie może jak ominąć ten problem?

2

Mieszasz mysql z mysqli

0

Marcin.Miga jeśli chodzi Ci o to mysql_free_result($result); to po prostu sprawdzałem różne podejścia do tego i zapomniałem wywalic przed wrzutka na forum. Sorry

0

@serek.nr.1: To teraz: co to jest $con (jakiego typu)? Czemu mieszasz mysqli obiektowe z nieobiektowym? Jak wywołujesz te funkcje? Jakiego wyniku oczekujesz, a jaki otrzymujesz?

0

$con jest to połączenie z db. Założenie jest dość proste act_tmp ma za zadanie wyciągnąć aktualny rekord z bazy, natomiast height_tmp ma za zadanie wyciągnąć z bazy najwyższą jego wartość. Jeżeli wrzucę do bazy liczbę 60 będzie ona zarówno aktualna jak i najwyższa. No i tu jest problem bo wyświetla mi tylko najwyższą wartość, a powinno wyświetlać jeszcze aktualną wartość. Nad wywołaniem funkcji cały czas pracuje na tę chwilę wygląda to tak:

plik get_data.php
<?php

require 'connectDB.php';


if(isset($_POST['data']) && !empty($_POST['data']))
{
    switch($_POST['data'])
    {
        case '1' :
            echo act_tmp($con);
        break;
        case '2' :
            echo height_tmp($con);
        break;
        case '3' :
            echo act_hum($con);
        break;
    }
}

function act_tmp($con) {
    $result = $con->query("SELECT temp FROM temperature ORDER BY id DESC limit 1") or die(mysqli_error($con));

    while ($row = mysqli_fetch_array($result)) {
        $data = array(
            "act_temp" => $row[0]
        );
        return $data['act_temp'];
    }
    
    $result->close();
}

function height_tmp($con) {
    $result = $con->query("SELECT temp FROM temperature ORDER BY temp DESC limit 1") or die(mysqli_error($con));

    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_array($result)) {
            $data = array(
                "highest_temp" => $row[0]
            );
            return $data['highest_temp'];
        }
    }
    
    $result->close();
}

plik act_tmp.php

<script type="text/javascript">
        var cacheData;
        var data;
        var auto_refresh = setInterval(
                function () {
                    $.ajax({
                        url: 'get_data.php',
                        data: {data: '1'}, 
                        type: 'post',
                        dataType: 'html',
                        success: function (data) {
                            if (data !== cacheData) {
                                cacheData = data;
                                $("#hum").html(data);
                            }
                        }
                    })
                }, 300
                );

    </script>

analogicznie wygląda plik height_tmp.php z tym że zmiana następuje w

data: {data: '2'}

, . A tu wrzut do wyświetlenia:

 <?php
        echo '<div class="grid-container">';
        echo '<div class="grid-item">' . "The highest temperatur: " . '<span id="height_temp">';
            require 'height_tmp.php';
        echo '</span>' . '<sup>o</sup> C</div>';
        echo '<div class="grid-item">' . "Actual temperatur is: " . '<span id="temp">';
            require 'act_tmp.php';
        echo '</span>' . '<sup>o</sup> C</div>';
        echo '<div class="grid-item">' . "Actual humidity is: " . '<span id="hum">';
            require 'act_hum.php';
        echo '</span>' . '<sup>o</sup> C</div>';
    echo '</div>';
    ?>

Dlaczego mieszam obiektowy z nieobiektowym - uczę się i kombinuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1