Вывод данных на сайте средствами PHP в цикле do while, как окультурить в табличную форму

Izvekoff
Offline
Зарегистрирован: 02.03.2020

ESP8266 закидывает данные с датчиков (температура) в базу MYSQL, вывожу на сайте так:

// Получаем данные по температуре и выводим на сайте
<?php
echo('Данные по температуре за последние 120 минут!<br><br>');
$result = mysqli_query($connect, "SELECT * FROM `temperature` WHERE date_time >= NOW( ) - INTERVAL 120 MINUTE LIMIT 0 , 99");
if ($result)
  {
$count = 1;
      $row = mysqli_fetch_array($result);
      do
       {
           if($count <10){
echo('0'.$count.' || '.$row[date_time].' || '.$row[sensor_temp1].' || '.$row[sensor_temp2].' || '.$row[sensor_temp3].' || '.$row[client_ip].'<br>');
}else{
echo($count.' || '.$row[date_time].' || '.$row[sensor_temp1].' || '.$row[sensor_temp2].' || '.$row[sensor_temp3].' || '.$row[client_ip].'<br>');
     }
          $count += 1;
       } while($row = mysqli_fetch_array($result));
  }
?>

И попытки окультурить в табличную форму тегами безуспешны.

ЧЯДНТ?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Izvekoff пишет:

И попытки окультурить в табличную форму тегами безуспешны.

А где попытки?

Izvekoff
Offline
Зарегистрирован: 02.03.2020

ЕвгенийП пишет:

Izvekoff пишет:

И попытки окультурить в табличную форму тегами безуспешны.

А где попытки?

Пробовал так  и с одиночными и с двойными, не взлетело:
(только сильно не пинайте, в php я в минус 1)
 

echo "<tr><td>".$count."</td> | <td>".$row[date_time]."</td> | <td>".$row[sensor_temp1]."</td> | <td>".$row[sensor_temp2]."</td> | <td>".$row[sensor_temp3]."</td> | <td>".$row[client_ip]."</td></tr>";

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Я тоже табличных тэгов не вижу. Если нужна табличная форма, ну так и делайте ее:

echo “<table border=1>”;
//А уже в цикле:
echo “<tr>”;
echo “<td>” . $num1 . “</td><td>” . $num2 . “</td>”;
echo “</tr>”;

//После цикла закрыть тэг таблицы
echo “</table>”;

Как то так это пытаются сделать. 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Izvekoff пишет:

ЕвгенийП пишет:

Izvekoff пишет:

И попытки окультурить в табличную форму тегами безуспешны.

А где попытки?

Пробовал так  и с одиночными и с двойными, не взлетело:
(только сильно не пинайте, в php я в минус 1)
 

echo "<tr><td>".$count."</td> | <td>".$row[date_time]."</td> | <td>".$row[sensor_temp1]."</td> | <td>".$row[sensor_temp2]."</td> | <td>".$row[sensor_temp3]."</td> | <td>".$row[client_ip]."</td></tr>";

 

А зачем лишние символы в html-коде?

sadman41
Offline
Зарегистрирован: 19.10.2016

Между тд палки не нужны. До тр-ов нужен тейбл, после - /тейбл.
Это если делать нонреспонзибле, в противном случае - дивы/спаны и через цсс разгонять.

Izvekoff
Offline
Зарегистрирован: 02.03.2020

sadman41 пишет:
Между тд палки не нужны. До тр-ов нужен тейбл, после - /тейбл. Это если делать нонреспонзибле, в противном случае - дивы/спаны и через цсс разгонять.

Это Вы с кем сейчас разговаривали )))
Сек. попробую поправить, как бум говорил, теги начала и конца таблицы естественно до и после цикла вставлены  были...

Виной всему был тег <br> )))
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"><head>
    <title>График температур &mdash; Coming Soon</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="description" content="ESP8266 and temperature sensor"/>
    <style type="text/css">
        body {font-size:18px; color:#777777; font-family:arial; text-align:left;}
        h1 {font-size:128px; color:#555555; margin: 70px 0 50px 0;}
        p {width:320px; text-align:center; margin-left:auto;margin-right:auto; margin-top: 30px }
        div {width:320px; text-align:center; margin-left:auto;margin-right:auto;}
        a:link {color: #34536A;}
        a:visited {color: #34536A;}
        a:active {color: #34536A;}
        a:hover {color: #34536A;}
    </style>
</head>
<body>

<?php
$res =  mysqli_query($connect, "SELECT COUNT(*) FROM `temperature`");
$row = mysqli_fetch_row($res);
$total = $row[0]; // всего записей
echo 'Число записей в таблице - ';
echo $total.'<br>';
?>



<?php
#// Получаем данные по температуре и выводим на сайте
echo 'Данные по температуре за последние 120 минут!<br>';
$result = mysqli_query($connect, "SELECT * FROM `temperature` WHERE date_time >= NOW( ) - INTERVAL 120 MINUTE LIMIT 0 , 99");
if ($result)
  {
$count = 1;
      $row = mysqli_fetch_array($result);
      echo '<table border=1>';
      do
       {
           if($count <10){
echo '<tr><td>'.'0'.$count.'</td><td>'.$row[date_time].'</td><td>'.$row[sensor_temp1].'</td><td>'.$row[sensor_temp2].'</td><td>'.$row[sensor_temp3].'</td><td>'.$row[client_ip].'</td></tr>';
} else {
echo '<tr><td>'.$count.'</td><td>'.$row[date_time].'</td><td>'.$row[sensor_temp1].'</td><td>'.$row[sensor_temp2].'</td><td>'.$row[sensor_temp3].'</td><td>'.$row[client_ip].'</td></tr>';
       }
    $count += 1;
       } while($row = mysqli_fetch_array($result));
       echo '/<table>';
  }
?>

</body>
</html>

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

А так можно?
 

    //задаем массивы данных графиков
    $result = mysqli_query($connect, "SELECT * FROM `temperature` WHERE date_time >= NOW( ) - INTERVAL 10 MINUTE LIMIT 0 , 99");
if ($result)
  {
$count = 1;
      $row = mysqli_fetch_array($result);
      do
       {
    $x1[$count-1]=$count-1; $y1[$count-1]=$row[sensor_temp1];
    $x2[$count-1]=$count-1; $y2[$count-1]=$row[sensor_temp2];
    $x3[$count-1]=$count-1; $y3[$count-1]=$row[sensor_temp3];

#echo '<tr><td>'.'0'.$count.'</td><td>'.$row[date_time].'</td><td>'.$row[sensor_temp1].'</td><td>'.$row[sensor_temp2].'</td><td>'.$row[sensor_temp3].'</td><td>'.$row[client_ip].'</td><td>'.$usredneno.'</td></tr>';
    $count += 1;
       } while($row = mysqli_fetch_array($result));
  }

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

вот просто вывожу данные из бд

<?php include_once $_SERVER['DOCUMENT_ROOT'] . '/espimpt/includes/helpers.inc.php'; ?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title> EPS List devices </title>
</head>
<h1> EPS List devices </h1>

<body>

<?php
try
{
	$sql = 'SELECT `i_id`,`d_datetime`,`i_countimp`,`f_t1`,`f_t2`,`f_t3`,`f_t4`,`f_t5`,`f_t6` FROM `thermometers`
		ORDER BY `d_datetime` DESC';
	$s = $pdo->prepare($sql);
	$s->execute();
	$therm_rows = $s->fetchall();
}
catch (PDOException $e)
{
	$error = 'Error ' . $e->getMessage();
	include $_SERVER['DOCUMENT_ROOT'] . '/espimpt/includes/error.html.php';
	exit;
}
?>

<table border="1">
	<tr ><th>Device ID</th><th>Date Time</th><th>Count imp</th><th>T1</th><th>T2</th><th>T3</th><th>T4</th><th>T5</th><th>T6</th></tr>
	<?php foreach ($therm_rows as $one_temper): ?>
		<tr>
			<td> <?php echo $one_temper['i_id']  ?> </td><td> <?php echo $one_temper['d_datetime']  ?> </td> 
			<td> <?php echo $one_temper['i_countimp']  ?> </td><td> <?php echo $one_temper['f_t1']  ?> </td>
			<td> <?php echo $one_temper['f_t2']  ?> </td><td> <?php echo $one_temper['f_t3']  ?> </td>
			<td> <?php echo $one_temper['f_t4']  ?> </td><td> <?php echo $one_temper['f_t5']  ?> </td>
			<td> <?php echo $one_temper['f_t6']  ?> </td>
		</tr>
	<?php endforeach; ?>
</table>

</body>

<p></p>
<footer>
&copy; Андрей <a href="mailto:andycat2013@yandex.ru">andycat2013@yandex.ru</a>
</footer>
</html>

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ua6em пишет:

А так можно?
 

    //задаем массивы данных графиков
    $result = mysqli_query($connect, "SELECT * FROM `temperature` WHERE date_time >= NOW( ) - INTERVAL 10 MINUTE LIMIT 0 , 99");
if ($result)
  {
$count = 1;
      $row = mysqli_fetch_array($result);
      do
       {
    $x1[$count-1]=$count-1; $y1[$count-1]=$row[sensor_temp1];
    $x2[$count-1]=$count-1; $y2[$count-1]=$row[sensor_temp2];
    $x3[$count-1]=$count-1; $y3[$count-1]=$row[sensor_temp3];

#echo '<tr><td>'.'0'.$count.'</td><td>'.$row[date_time].'</td><td>'.$row[sensor_temp1].'</td><td>'.$row[sensor_temp2].'</td><td>'.$row[sensor_temp3].'</td><td>'.$row[client_ip].'</td><td>'.$usredneno.'</td></tr>';
    $count += 1;
       } while($row = mysqli_fetch_array($result));
  }

 

У Вас или не весь код или полный бред. 
0. Таблица не начинается. 
1. Зачем do {} while (); ? 
2. X1 и так далее в таблице не участвуют, зачем они нужны ( к тому же они из count получаются)?

3. Таблица не заканчивается  

Не весь код или полный бред, как по мне. 

Izvekoff
Offline
Зарегистрирован: 02.03.2020

Так покрасивее будет собирать данные в массив
 

 //задаем массивы данных графиков
    $result = mysqli_query($connect, "SELECT * FROM `temperature` WHERE date_time >= NOW( ) - INTERVAL 30 MINUTE LIMIT 0 , 30");
    if ($result)
    {
     
      $row = mysqli_fetch_array($result);
      do
       {
    $y1[]=$row[sensor_temp1];
    $y2[]=$row[sensor_temp2];
    $y3[]=$row[sensor_temp3];

       } while($row = mysqli_fetch_array($result));
   }

А так как переменная X равна индексу, её можно в массив и не собирать, лишняя трата памяти.
Для чего цикл do? Понятно, в переменной есть данные, забираем хотя бы один раз.

Таблицы тут нет, просто обработка результата запроса SQL  )))

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вы точно тот же код видите, что и я? Там же как минимум тэги таблицы html. Ну а по поводу do {} while (); Вам не кажется бессмысленно (или лишним, или как ещё намекнуть?) одной и той же функции (читай действия) до цикла и в условии цикла? А если использовать while (){}; без предварительных действий что кардинально изменится?

Сами вчера не знали как в таблицу данные вывести, сегодня уже учите тому, что не постигли. 

Izvekoff
Offline
Зарегистрирован: 02.03.2020

BOOM пишет:

Вы точно то же код видите, что и я? Там же как минимум тэги таблицы html. Ну а по поводу do {} while (); Вам не кажется бессмысленно (или лишним, или как ещё намекнуть?) одной и той же функции (читай действия) до цикла и в условии цикла? А если использовать while (){}; без предварительных действий что нарушится?

Сами вчера не знали как в таблицу вывести, сегодня уже учите. 

я и сегодня не знаю...
у меня не взлетало из-за тега <br>, один лживый тег в лживом PHP делал код полностью не рабочим, а всё остальное у меня было точь в точь как Гугл подсказал...

Да, осмелюсь сказать, в Вашей подсказке пулемёт (кавычки) были не той системы )))

Да, эта строка перед циклом явно лишняя )))
 
      $row = mysqli_fetch_array($result);
      do
  

 

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Не вижу смысла с Вами дальше вести диалог, Вы не понимаете разницы между php и html, подсказкой и готовым ответом, да и между разными тэгами html (и учиться не пытаетесь, что для Вас более печально в этой ситуации).
Удачи Вам, постараюсь больше с Вами на этом форуме не пересекаться в диалогах. Гугл Вам в помощь. Не понятно только почему он Вам раньше моего примера не помог. Луна, наверное. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Хватит бодаться, данные получилось собрать и отрисовать, благодарю за помощь, до оптимизированной версии не дошёл, как пишет Дет - и так сойдёт )))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А я только щас заметил, что echo и последующее закомментировано. Вчера без очков не увидел. Молодец, красиво получилось.