Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: упростить код
 
 автор: Peter   (08.08.2005 в 13:44)   письмо автору
 
 

Здравствуйте,
существует расчетная таблица, код которой хотелось бы упростить(сделать более компактным), вобщем-то она работает и так, но как-то это не правильно по моему...

//Вводим данные 
<table class='body'>
<tr><td>1 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut01 ></td></tr>
 <tr><td>2 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut02 ></td></tr>
<tr><td>3 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut03 ></td></tr>

//Расчет
 <?php

  $pdr01
=$Pmin+($Pmax-$Pmin)*($sut01/$Qmax);
$pdr02=$Pmin+($Pmax-$Pmin)*($sut02/$Qmax);
$pdr03=$Pmin+($Pmax-$Pmin)*($sut03/$Qmax);
  
//Выводим данные
print "<table align=center>
  <tr><td>
$sut01</td> <<td> $pdr01</td> </tr>
  <tr><td>
$sut02</td>  <td> $pdr02</td></tr>
  <tr><td>
$sut03</td> <td> $pdr03</td> </tr>

  </table>

 "
;


...переменных 24, код получается очень раздутым

   
 
 автор: cheops   (08.08.2005 в 13:49)   письмо автору
 
   для: Peter   (08.08.2005 в 13:44)
 

Следует оформить выражение
<?php
$pdr01
=$Pmin+($Pmax-$Pmin)*($sut01/$Qmax);
?>

в виде функции
<?php
  $pdr01 
calc_value($sut01);
?>

а затем организовать цикл
<?php
for(...)
  
$pdr[$i] = calc_value($sut[$i]);
?>

Я бы в этом направлении двигался...

   
 
 автор: cernos   (08.08.2005 в 13:53)   письмо автору
 
   для: Peter   (08.08.2005 в 13:44)
 


//Вводим данные 
<table class='body'> 
<tr><td>1 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut01 ></td></tr> 
<tr><td>2 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut02 ></td></tr> 
<tr><td>3 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut03 ></td></tr> 
//Расчет
//Используем массивы sut[] и $pdr[] 
<?php 
$pdr
[0]=$Pmin+($Pmax-$Pmin)*($sut[0]/$Qmax); 
$pdr[1]=$Pmin+($Pmax-$Pmin)*($sut[1]/$Qmax); 
$pdr[2]=$Pmin+($Pmax-$Pmin)*($sut[2]/$Qmax); 
   
//Выводим данные 
echo "<table align=center> ";
 for(
$i=0$i<count($pdr);$i++)
{
 echo 
"<tr><td>$sut[".$i."]</td> <<td> $pdr[".$i."]</td> </tr>";
}
echo
"</table> "

   
 
 автор: Peter   (08.08.2005 в 15:39)   письмо автору
 
   для: cernos   (08.08.2005 в 13:53)
 

to cheops: для меня слишком сложно, нужно разжевать...
to cernos: не работает, выдает ошибку в этой строке
echo "<tr><td>$sut[".$i."]</td> <td> $pdr[".$i."]</td></tr>";
ругается на кавычки.

   
 
 автор: cheops   (08.08.2005 в 18:48)   письмо автору
 
   для: Peter   (08.08.2005 в 15:39)
 

Вариант cernos можно преобразовать следующим образом
<table class='body'> 
<tr><td>1 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut[1] ></td></tr> 
<tr><td>2 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut[2] ></td></tr> 
<tr><td>3 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut[3] ></td></tr> 
//Расчет 
//Используем массивы sut[] и $pdr[] 
<?php 
for($i 0$i count($sut); $i++)
{
  
$pdr[$i]=$Pmin+($Pmax-$Pmin)*($_POST['sut'][$i]/$Qmax); 
}   
//Выводим данные 
echo "<table align=center> "
for(
$i=0$i<count($pdr);$i++) 

  echo 
"<tr><td>$sut[$i]</td> <<td> $pdr[$i]</td> </tr>"

echo
"</table> ";

   
 
 автор: Peter   (09.08.2005 в 10:11)   письмо автору
 
   для: cheops   (08.08.2005 в 18:48)
 

хм... ничего не происходит вообще, таблица с результатами не видна

   
 
 автор: cheops   (09.08.2005 в 11:45)   письмо автору
 
   для: Peter   (09.08.2005 в 10:11)
 

А у вас данные в форме передаются методом POST? Попробуйте вывести его содержимое - там, что-нибудь есть
<?php
  
echo "<pre>";
  
print_r($_POST);
  echo 
"</pre>";
?>

   
 
 автор: Peter   (09.08.2005 в 12:06)   письмо автору
 
   для: cheops   (09.08.2005 в 11:45)
 

да, введенные переменные отображаются

   
 
 автор: cheops   (09.08.2005 в 12:24)   письмо автору
 
   для: Peter   (09.08.2005 в 12:06)
 

Теперь после первого цикла попробуйте вывести массив $pdr, а сам скрипт исправьте следующим образом
<table class='body'> 
<tr><td>1 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut[1] ></td></tr> 
<tr><td>2 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut[2] ></td></tr> 
<tr><td>3 час: Q м<sub>3</sub>/ч</td><td><input type=text name=sut[3] ></td></tr> 
//Расчет 
//Используем массивы sut[] и $pdr[] 
<?php 
for($i 0$i count($_POST['sut']); $i++) 

  
$pdr[$i]=$Pmin+($Pmax-$Pmin)*($_POST['sut'][$i]/$Qmax); 
}    
  echo 
"<pre>"
  
print_r($pdr); 
  echo 
"</pre>"
//Выводим данные 
echo "<table align=center> "
for(
$i=0$i<count($pdr);$i++) 

  echo 
"<tr><td>".$sut[$i]."</td> <<td> ".$pdr[$i]."</td> </tr>"

echo
"</table> ";

   
 
 автор: Peter   (09.08.2005 в 12:25)   письмо автору
 
   для: cheops   (08.08.2005 в 18:48)
 

нашел свою ошибку, массив забыл сделать...
но, все равно в таблице выводиться только переменная $pdr, а $sut - нет, и $pdr = только $Pmin, расчета не происходит.

   
 
 автор: Peter   (09.08.2005 в 14:07)   письмо автору
 
   для: Peter   (09.08.2005 в 12:25)
 

воо... исправил еще пару ошибок и всё заработало, надо было, кстати, $i=1 сделать.
теперь все считается, но в таблице всегда на одну строку меньше чем нужно, расчет по последниму параметру не выводится, в чем дело?

   
 
 автор: cheops   (09.08.2005 в 16:26)   письмо автору
 
   для: Peter   (09.08.2005 в 14:07)
 

>воо... исправил еще пару ошибок и всё заработало, надо было,
>кстати, $i=1 сделать.
>теперь все считается, но в таблице всегда на одну строку
>меньше чем нужно, расчет по последниму параметру не
>выводится, в чем дело?
Вообще индексы в массивах в PHP начинаются с 0, именно поэтому было введено $i=0 и возможно поэтому не хватает одного элемента в таблице.

   
 
 автор: Peter   (11.08.2005 в 14:27)   письмо автору
 
   для: cernos   (08.08.2005 в 13:53)
 

ok, с таблицей расчетов разобрался, теперь мне надо результаты как-то отобразить в виде графика. Нашел в сети скрипт графика, как мне сделать так, чтоб результаты расчетов передавались туда, а потом этот скрипт появлялся в виде картинки на странице с таблицей?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования