Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация кода, укажите на ошибки, грузит сильно 
:(
    Опции темы
olegop
Дата 2.10.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.10.2007
Где: ПМР, Тирасполь

Репутация: нет
Всего: нет



Вот форма, накидывал сам, она вводит в базу инфо, и тащит из базы инфо для редактирования, 
мне не нравится, сильно загружено, как можно оптимизировать вид?

Код

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Форма заполнения</title>
<style type="text/css">
font.form {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:11px }
td {
padding-top:3px;
vertical-align:top }
</style>
</head>
<body>
<?php $do = @$_GET['do']; ?>
<table width="800" border="1" cellspacing="0" cellpadding="0">
<form action="compile.php?do=
<?php 
switch ($do) {
    case 'edit': 
        $idkey = $_GET['idkey'];
        echo 'execute&go='.$do.'&idkey='.$idkey;
        mysql_connect("127.0.0.1", "root", "123") or die ("Не удалось установить подключение к базе данных в compile.php");
        mysql_select_db("database") or die ("Не удалось выбрать базу данных database в compile.php");
        $result = mysql_query("SELECT * FROM datatable WHERE idkey=$idkey;");
        $row = mysql_fetch_array($result, MYSQL_ASSOC);
        $Date_Kontrol = $row['Control'];
        $PostFile = '<input type="file" name="PostFile">';
        break;
    default: 
        echo 'execute'; 
        $row = false;
        $Date_Kontrol = date('Y-m-d'); 
        $PostFile = '<input type="file" name="PostFile">';
        break;}    
?>
" method="post" enctype="multipart/form-data">
  <tr>
    <td width="25%"><font class="form">Корреспондент:</font></td>
    <td><input name="Korrespondent" type="text" size="30" value="<?php echo $row['Korespondent']; ?>"></td>
    <td colspan="2"><font class="form">Срок исполисполнения:</font></td>
    <td colspan="2"><input name="Do" type="text" size="30" value="
<?php 
$y1 = substr($row['Do'], 0, 4);
$m1 = substr($row['Do'], 5, 2);
$d1 = substr($row['Do'], 8, 2);
echo $d1.'.'.$m1.'.'.$y1;
 ?>"></td>
  </tr>
  <tr>
    <td><font class="form">Дата поступления и индекс документа:</font></td>
    <td><font class="form">Id:</font><input name="IdPostDoc" type="text" size="5" value="<?php echo $row['IdPostDoc']; ?>"><font class="form">Date:</font><input name="DatePostDoc" type="text" size="10" value="
<?php
$y2 = substr($row['DatePostDoc'], 0, 4);
$m2 = substr($row['DatePostDoc'], 5, 2);
$d2 = substr($row['DatePostDoc'], 8, 2);
echo $d2.'.'.$m2.'.'.$y2;
?>
"></td>
    <td colspan="4"><font class="form">Количество листов документа:</font></td>
  </tr>
  <tr>
    <td><font class="form">Дата и индекс документа:</font></td>
    <td><font class="form">Id:</font><input name="IdDoc" type="text" size="5" value="<?php echo $row['IdDoc']; ?>"><font class="form">Date:</font><input name="DateDoc" type="text" size="10" value="
<?php
$y3 = substr($row['DateDoc'], 0, 4);
$m3 = substr($row['DateDoc'], 5, 2);
$d3 = substr($row['DateDoc'], 8, 2);
echo $d3.'.'.$m3.'.'.$y3;
?>
"></td>
    <td><font class="form">Основного:</font></td>
    <td><input name="NumberOfMain" type="text" size="3" maxlength="3" value="<?php echo $row['NumberOfMain']; ?>"></td>
    <td><font class="form">Приложения:</font></td>
    <td><input name="NumberOfAppend" type="text" size="3"  maxlength="3" value="<?php echo $row['NumberOfAppend']; ?>"></td>
  </tr>
  <tr>
    <td><font class="form">Вид документа и его краткое содержание:</font></td>
    <td colspan="5"><textarea name="TypeOfDoc" cols="50" rows="3"><?php echo $row['TypeOfDoc']; ?></textarea></td>
  </tr>
  <tr>
    <td><font class="form">Резолюция или кому направлен документ:</font></td>
    <td colspan="5"><textarea name="Rezolution" cols="50" rows="3"><?php echo $row['Rezolution']; ?></textarea></td>
  </tr>
  <tr>
    <td><font class="form">Отметка об исполнении документа:</font></td>
    <td colspan="5"><input name="Note" type="text" size="50" value="<?php echo $row['Note']; ?>"></td>
  </tr>
  <tr>
    <td><font class="form">Поле для прикрепления документа:</font></td>
    <td colspan="3"><?php echo $PostFile; ?></td>
    <td colspan="2"><font class="form">Текущая дата, в скрытой форме:</font><input name="Kontrol" type="hidden" value="<?php echo $Date_Kontrol; ?>">
      </td>
  </tr>
  <tr><td align="right" colspan="6"><input name="goo" type="submit"></td>
  </tr>
</form>
</table>
</body>
</html>


 ! 
PARROT
Кто Вам сказал что тут сидят профи???


Это сообщение отредактировал(а) PARROT - 2.10.2007, 11:18
PM MAIL   Вверх
mishaSL
Дата 2.10.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(olegop @  2.10.2007,  10:59 Найти цитируемый пост)
мне не нравится, сильно загружено, как можно оптимизировать вид?

Оптимизировать внешний вид или код?

Если внешний вид, то наверное надо обратиться к дизайнерам.
Если код, то:
1. Отдели php-код от html. Или хотябы логику отдели от верстки.
2. Если открываешь соединение с базой, то было бы неплохо его еще и закрывать. (Хоть PHP его сам закрывает, но лучше закрывать самому...)
3. Если делаешь выборку из БД и получаешь одну запись. То добавляй в конце запроса LIMIT 1


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
olegop
Дата 5.10.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.10.2007
Где: ПМР, Тирасполь

Репутация: нет
Всего: нет



Цитата

3. Если делаешь выборку из БД и получаешь одну запись. То добавляй в конце запроса LIMIT 1

за это спасибо, не знал

так а как именно отделить пхп код от хтмл, если у меня там идет вывод данных?
PM MAIL   Вверх
BuShaRt
Дата 5.10.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(mishaSL @  2.10.2007,  15:03 Найти цитируемый пост)
2. Если открываешь соединение с базой, то было бы неплохо его еще и закрывать. (Хоть PHP его сам закрывает, но лучше закрывать самому...)

Врядле это влияет на что-то, кроме некоторый осложнений, при подключение к другой БД.
PM MAIL   Вверх
SelenIT
Дата 5.10.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Вместо многократного деления строки с датой на куски с последующей их перекомпоновкой, можно с помощью функции DATE_FORMAT получать дату сразу в выводимом формате.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
WolfON
Дата 5.10.2007, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Имеет смысл использовать mysql_pconnect для снижения нагрузки на бд
PM MAIL ICQ   Вверх
CyClon
Дата 5.10.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Цитата
Если код, то:
1. Отдели php-код от html. Или хотябы логику отдели от верстки.
2. Если открываешь соединение с базой, то было бы неплохо его еще и закрывать. (Хоть PHP его сам закрывает, но лучше закрывать самому...)
3. Если делаешь выборку из БД и получаешь одну запись. То добавляй в конце запроса LIMIT 1 


1. Если имелось ввиду оптимизировать скорость работы скрипта, то логику отделать не нужно smile
2. Это более правильно, но в плане скорости разницы не будет smile


--------------------
user posted image
PM   Вверх
SelenIT
Дата 5.10.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Имхо, логика у него, кстати, и так неплохо отделена - в компактный 16-строчный фрагмент. Если избавиться от безобразного копипастного куска для форматирования даты, то все остальное превратится в симпатичный pure-php template smile.

А по функционалу, надо приучаться все выводимые в HTML динамические данные прогонять через htmlspecialchars...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
chiffa
Дата 5.10.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003

Репутация: -1
Всего: -1



Цитата(SelenIT @  5.10.2007,  22:17 Найти цитируемый пост)
динамические данные прогонять через htmlspecialchars... 


а вот тут  по подробнее. меня даже заинтерисовало, как это реализовуется, если можно в двух словах раскажи.
PM MAIL   Вверх
olegop
Дата 9.10.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.10.2007
Где: ПМР, Тирасполь

Репутация: нет
Всего: нет



Цитата(SelenIT @ 5.10.2007,  19:24)
Вместо многократного деления строки с датой на куски с последующей их перекомпоновкой, можно с помощью функции DATE_FORMAT получать дату сразу в выводимом формате.

я вкурсе, но мне больше нравиться работать средствами пыха в данном случае, спасиб

Добавлено через 3 минуты и 10 секунд
Цитата(SelenIT @ 5.10.2007,  22:17)
Имхо, логика у него, кстати, и так неплохо отделена - в компактный 16-строчный фрагмент. Если избавиться от безобразного копипастного куска для форматирования даты, то все остальное превратится в симпатичный pure-php template smile.

А по функционалу, надо приучаться все выводимые в HTML динамические данные прогонять через htmlspecialchars...

Спасибо!

а про htmlspecialchars забываю всегда, знаю что нельзя, но забываю...
PM MAIL   Вверх
olegop
Дата 9.10.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.10.2007
Где: ПМР, Тирасполь

Репутация: нет
Всего: нет



Вот, оптимизировал не много

Код

<?php if(!defined("IN_ADMIN")) die;?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Форма заполнения</title>
<style type="text/css">
font.form {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:11px }
td {
padding-top:3px;
vertical-align:top }
</style>
</head>
<body>
<?php
$do = @$_GET['do']; ?>
<table width="800" border="1" cellspacing="0" cellpadding="0">
<form action="compile.php?do=
<?php 
switch ($do) {
    case 'edit': 
        $idkey = $_GET['idkey'];
        echo 'execute&go='.$do.'&idkey='.$idkey;
        mysql_connect("127.0.0.1", "root", "123") or die ("Не удалось установить подключение к базе данных в compile.php");
        mysql_select_db("database") or die ("Не удалось выбрать базу данных database в compile.php");
        $result = mysql_query("SELECT * FROM datatable WHERE idkey=$idkey;");
        $row = mysql_fetch_array($result, MYSQL_ASSOC);
        $Date_Kontrol = $row['Control'];
        $PostFile = '<input type="file" name="PostFile">';
        break;
    default: 
        echo 'execute'; 
        $row = false;
        $Date_Kontrol = date('Y-m-d'); 
        $PostFile = '<input type="file" name="PostFile">';
        break;}    

function echo_form($name) {
    global $row; 
    if ($row <> false) return $row[$name];
        else return @$_SESSION[$name];
}

function date_form($name) {
    global $row;
    $y = substr($row[$name], 0, 4);
    $m = substr($row[$name], 5, 2);
    $d = substr($row[$name], 8, 2);
    return $d.'.'.$m.'.'.$y;}    
?>
" method="post" enctype="multipart/form-data">
  <tr>
    <td width="25%"><font class="form">Корреспондент:</font></td>
    <td><input name="Korespondent" type="text" size="30" value="<?php echo echo_form('Korespondent'); ?>"></td>
    <td colspan="2"><font class="form">Срок исполисполнения:</font></td>
    <td colspan="2"><input name="Do" type="text" size="30" value="
<?php if ($row) echo date_form('Do'); else echo echo_form('Do');?>"></td>
  </tr>
  <tr>
    <td><font class="form">Дата поступления и индекс документа:</font></td>
    <td><font class="form">Id:</font><input name="IdPostDoc" type="text" size="5" value="<?php echo echo_form('IdPostDoc'); ?>"><font class="form">Date:</font><input name="DatePostDoc" type="text" size="10" value="
<?php if ($row) echo date_form('DatePostDoc'); else echo echo_form('DatePostDoc'); ?>
"></td>
    <td colspan="4"><font class="form">Количество листов документа:</font></td>
  </tr>
  <tr>
    <td><font class="form">Дата и индекс документа:</font></td>
    <td><font class="form">Id:</font><input name="IdDoc" type="text" size="5" value="<?php echo echo_form('IdDoc'); ?>"><font class="form">Date:</font><input name="DateDoc" type="text" size="10" value="
<?php if ($row) echo date_form('DateDoc');  else echo echo_form('DateDoc'); ?>"></td>
    <td><font class="form">Основного:</font></td>
    <td><input name="NumberOfMain" type="text" size="3" maxlength="3" value="<?php echo echo_form('NumberOfMain'); ?>"></td>
    <td><font class="form">Приложения:</font></td>
    <td><input name="NumberOfAppend" type="text" size="3"  maxlength="3" value="<?php echo echo_form('NumberOfAppend'); ?>"></td>
  </tr>
  <tr>
    <td><font class="form">Вид документа и его краткое содержание:</font></td>
    <td colspan="5"><textarea name="TypeOfDoc" cols="50" rows="3"><?php echo echo_form('TypeOfDoc'); ?></textarea></td>
  </tr>
  <tr>
    <td><font class="form">Резолюция или кому направлен документ:</font></td>
    <td colspan="5"><textarea name="Rezolution" cols="50" rows="3"><?php echo echo_form('Rezolution'); ?></textarea></td>
  </tr>
  <tr>
    <td><font class="form">Отметка об исполнении документа:</font></td>
    <td colspan="5"><input name="Note" type="text" size="50" value="<?php echo echo_form('Note'); ?>"></td>
  </tr>
  <tr>
    <td><font class="form">Поле для прикрепления документа:</font></td>
    <td colspan="3"><?php echo $PostFile; ?></td>
    <td colspan="2"><font class="form">Текущая дата, в скрытой форме:</font><input name="Kontrol" type="hidden" value="<?php echo $Date_Kontrol; ?>">
      </td>
  </tr>
  <tr><td align="right" colspan="6"><input name="goo" type="submit"></td>
  </tr>
</form>
</table>
</body>
</html>

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.