Как заставить два столбца SQL отображаться в двух отдельных <td>рядом в PHP - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть SQL-запрос, который выбирает отдельные строки, подсчитывает, сколько раз значение находится в базе данных, а затем выводит оба значения рядом в таблице HTML в виде двух отдельных

как простойпример .. если в базе данных «Джон» указан 7 раз, «Боб» указан 3 раза, а «Джейн» указан 5 раз, моя таблица HTML должна отображаться как

+------+---+ | John | 7 | +------+---+ | Bob | 2 | +------+---+ | Jane | 5 | +------+---+ 'Iможет заставить имя работать немного, но не может заставить счет работать, поэтому вместо этого я получаю

+------+---+ | John | | +------+---+ | Bob | | +------+---+ | Jane | | +------+---+

Ниже приведен мой фактический код.Все биты, касающиеся временных меток, работают, просто бит $ row ['count'] не будет работать

//the SQL query $query = "SELECT distinct(file_name), COUNT(file_name) AS count FROM orders_thortful GROUP BY file_name ORDER BY file_name";

//initiate array
$timestamped_array = array();

if (sqlsrv_has_rows($search)) {

    while ($row = sqlsrv_fetch_array($search, SQLSRV_FETCH_ASSOC)) {   

        //takes file name string from db and puts into a proper date format
        $formatted_date = date_create_from_format('d-m-Y_h-i-sa', $row['file_name']);

        //takes date and puts into a timestamp (so it can be sorted)
        $timestamp = date_timestamp_get($formatted_date);

        //put $timestamp into $timestamped_array
        $timestamped_array[] = $timestamp;

        //put $row['count'] into an array so it can be iterated through in a foreach loop
        $count_array[] = $row['count'];

} 

    //iterate through the array, putting each value in a new td
    foreach($timestamped_array as $val){

            echo "<tr>";

                echo "<td>";

                    echo $val; // this works

                echo "</td>";

                echo "<td>";

                    echo $row['count'] //this doesn't work, ays value is NULL

                echo "</td>";

            echo "</tr>";

        }

}

1 Ответ

0 голосов
/ 04 февраля 2019

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

$dataArray = array();
while ($row = sqlsrv_fetch_array($search, SQLSRV_FETCH_ASSOC)) {
    $formatted_date = date_create_from_format('d-m-Y_h-i-sa', $row['sitma_file_name']);
    $timestamp = date_timestamp_get($formatted_date);
    $dataArray[] = array("time" => $timestamp, "count" => $row['count']); // save both timestamp and count in the array
}

foreach($dataArray as $element){
    echo "<tr><td>" . $element['time'] . "</td><td>" . $element['count'] . "</td></tr>";
}

Обратите внимание, что в опубликованном коде вы ничего не меняете в метке времениили считаю, так что я думаю, что вы можете повторить их там - но, возможно, у вас есть дополнительный код, который вы не опубликовали ...

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