Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Правильность написания

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не нравится написание скрипта
vixa
Отправлено: 24 Сентября, 2011 - 11:32:34
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




Добрый день всем людям хотел узнать некую информацию
Вот есть код вывода информации
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $news = mysql_query('select * from news where news_id = "$id"') or die('Вывод не возможен');
  3. $row = mysql_fetch_array($news);
  4. do
  5. {
  6. <form action="index.php?id=%s" method="post">
  7. Название новости: <input name="title" type="text" value="%s" />
  8. Новость: <textarea name="text" cols="" rows="">%s</textarea>
  9. Автор новости: <input name="author" type="text" value="%s" />
  10. Дата добаваления: <input name="date" type="text" value="%s" />
  11. <input name="sub" type="submit" value="Редактировать" />
  12. </form>
  13.  
  14. ',$row['news_id'],$row['news_title'],$row['news_text'],$row['news_author'],$row['news_date']);
  15. }
  16. while($row = mysql_fetch_array($news));
  17. ?>


Все называют это Говнокодом!!! Как писать такие запросы по другому чтобы этот код не считался говнокодом

Через шаблон Smarty чтоли?
У кого есть примеры пожалуйста напишите хочу посмотреть и понять в чем отличие


-----
Vixa
 
 Top
DlTA
Отправлено: 24 Сентября, 2011 - 11:43:19
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




слегка через задницу

а вообще нельзя угодить своим кодом всем, кто нить отметит ...
vixa пишет:
шаблон Smarty
это шаблонизатор в шаблонизаторе,
ну или проще говоря смерь сайту под нагрузкой.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $news = mysql_query('select * from news where news_id = "$id"') or die('Вывод не возможен');
  3. while($row = mysql_fetch_array($news))
  4. {
  5. echo "
  6. <form action='index.php?id={$row['news_id']}' method='post'>
  7. ... ";
  8. }
  9. ?>
(обратить внимание на кавычки)
а еще лучше завернуть это все в функцию
так как конструкция die(...); неудобна тем что тупо прирывает скрипт , в итоге если это было где в средине страници то на выходе поучится некое уродство.

(Отредактировано автором: 24 Сентября, 2011 - 11:45:44)

 
 Top
vixa
Отправлено: 24 Сентября, 2011 - 11:46:25
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




В такую функцию типо этой?

PHP:
скопировать код в буфер обмена
  1. function query($query,$DB=0){
  2.         global $config;
  3.         if(isset($config['debug']) && $config['debug']){
  4.                 echo $query."<br>\n";
  5.         }
  6.         if($DB){
  7.                 $result=mysql_query($query,$DB);
  8.                 }else{
  9.                         $result=mysql_query($query);
  10.                 }
  11.         if(mysql_error()){
  12.                 echo mysql_error()."<br>\n";
  13.                 echo "<b>query:</b>".$query."<br>\n";
  14.                 return null;
  15.         }else{
  16.                 return $result;
  17.         }
  18. }
  19.  
  20. // Return array contained all query result
  21. function GetAll($query,$DB=0){
  22.         $ret=array();
  23.         $result=query($query,$DB);
  24.         if($result){
  25.                 $num=mysql_num_rows($result);
  26.                 for($n=0;$n<$num;$n++){
  27.                         $ret[]=mysql_fetch_assoc($result);
  28.                 }
  29.                 return $ret;
  30.         }else{
  31.                 return null;
  32.         }
  33. }


-----
Vixa
 
 Top
OrmaJever
Отправлено: 24 Сентября, 2011 - 11:53:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. function query($query,$config,$DB=0){
  2.         if(isset($config['debug'])) echo $query, "<br>\n";
  3.  
  4.         $result = ($DB) ? mysql_query($query,$DB) : mysql_query($query);
  5.        
  6.         return (mysql_error()) ? null : $result;
  7. }

1) $config передавать параметром (зделал вторым т.к. у 3 есть значение по умолчанию). Слово global замедляет скрипт и на мой взгляд это не професионально.
2) условие на присутствие $DB можно переделать в тернарный оператор
3) я бы очень не советовал выовдить информацию об ошибке в браузер, это может дать лишнюю информаицю для взлома. (Ну если очень хочется можите вернуть условие Улыбка )

(Отредактировано автором: 24 Сентября, 2011 - 11:54:33)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 24 Сентября, 2011 - 11:56:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




типа, но повторюс тупо выводить какие либо ошибки так просто в браузер.
PHP:
скопировать код в буфер обмена
  1. {
  2.   echo mysql_error()."<br>\n";
  3.   echo "<b>query:</b>".$query."<br>\n";
  4.   return null;
  5. }

зачем всем видеть где у вас бока, тем более что если сайт начнут ломать подставляя. всевозможные параметры то слоумышленики в итоге еще и увидят как на самом деле выглядит запрос, и в итоге их работа еще больше облегчится.
 
 Top
vixa
Отправлено: 24 Сентября, 2011 - 11:58:08
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




ок спс за функцию хороша проста и удобна

(Отредактировано автором: 24 Сентября, 2011 - 12:17:22)



-----
Vixa
 
 Top
OrmaJever
Отправлено: 24 Сентября, 2011 - 11:58:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. function GetAll($query, $DB=0){
  2.         $ret = array();
  3.         $result = query($query,$DB);
  4.         if($result !== null){
  5.  
  6.                 while($ret[]=mysql_fetch_assoc($result)) {}
  7.                 return $ret;
  8.          } else return null;
  9. }

(Отредактировано автором: 24 Сентября, 2011 - 11:59:28)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vixa
Отправлено: 24 Сентября, 2011 - 12:17:30
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




Ну а так в целом, тот код, который я написал, Сильно упростить не получится? и изменить на что-то другое тоже не получится?

Я могу его вывести в шаблонизаторе Smarty
это будет удобно для веб дизайнера но программист может голову сломать!


-----
Vixa
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB