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 :: Вопросы от новичков [3]

 PHP.SU

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


 Страниц (5): « 1 2 [3] 4 5 »   

> Без описания
sKaa
Отправлено: 11 Мая, 2012 - 23:34:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Symby пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $link = db_conn();
  3. $insert = "INSERT INTO `Discipline` VALUES ('$kod', '$spec', '$name', '$cutName', '$hoursOne', '$hoursTwo', '$hoursAll', '$vidZach')";
  4. mysql_query($insert);
  5. mysql_close($link);

Полнейший бред конечно, типичный представитель "индусского кода", основателями которого собственно и являются хитрые индусы, которые в свое время быстро смекнули, что их зарплата прямо пропорциональна зависит от кол-ва строк кода... В те далекие времена когда только-только вышел ie 5.0(если мне память не изменяет) не было у рядовых граждан такого слова-паразита как "выйти в интернет" итп, в те времена в моде было словосочетание "Пойду, поброжу по Nescape Communicator", в этот момент Биллу и пришла в головы навязчивая идея сделать свой клиент(браузер) для работы в интернет, а самой главной фишкой было то, что он был "намертво" впаян в винду, в те времена знаете не так просто было с дискетками громандыми бегать Nescap'ы всякие таскать. Это сейчас люди на улице смотрят косо от такого форса, а тогда было просто лень, да я как сейчас помню как на 1.44 мортал комбаты таскали "из рук в руки" Улыбка Примечательно что разработчиками IE 6, 7, 8 являются почти все поголовно индусы Улыбка


Команда разработчиков IE7. Вглядитесь в эти лица.
И на количество пальцев, что показывает нижний-правый программист, их сумма явно не стакается с "7 версией осла" да и надпись на майке seven, для этих людей тоже пустой звук Улыбка - это имхо!

В таком коде не редко можно встретить такие вещи как :
PHP:
скопировать код в буфер обмена
  1. $i = TRUE;
  2. if($i == TRUE){
  3.    // Какой-нибудь код, который нам в любом случае придется выполнить и без этого убогого условия..
  4. }
  5. else {
  6.   // Внимание! Тут чистые деньги! Причем писать можно практически всё что угодно, код никогда не выполниться, главное чтоб компилятор не ругался :)
  7.   $array = array('qwe', 'asd');
  8.   $toStr = implode(' ', $array);
  9.   $backToArray = explode(' ', $toStr);
  10. }
  11.  


Сложно конечно воздержаться от высказывания, что твой код отчасти - говнокод, в традиции которого "на века" вбиты такие вещи как название функций\методов\классов\переменных русскими словами, но написанные на транслите. Сюда можно отнести и комменты на русском или вообще полное отсутствие комментов. - имхо дурной тон!
Ну что за $kod, $numCab, $spec, $hoursOne, $hoursTwo и $vidZach в названиях переменных, которые плавно берут истоки из аргумента функции. Я вот не пониманию, что такое $hoursOne/Two, $vidZach и думаю никто тут без "стакана" не разберет. Да и вообще зачем плодить кучу функций с огромным количеством аргументов? Хотяб добавь к ним $kod = 0, чтоб дефолты какие-то были, дабы меньше заморачиваться пытаясь в очередной раз освежить в памяти что там за аргументы нужны истерично пытаясь найти эту функции в громадном инклуде который лежит в папке libs и называется func.php - утрирую.
Конечно идеальным вариантом на мой взгляд будет передавать в аргумент массив. Конечно можно и некий модуль под это дело подогнать, но тут вопрос проф пригодности встает очень остро, к примеру я попробую в общих чертах показать что нам нужно от модели "teachers", очень поверхностно я ее рассмотрю :

Спойлер (Отобразить)


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

Решения давно есть, нужно смотреть в сторону ООП. Серьезных приложений в которых все больше и больше разных вещей нужно как-то хранить в пределах жизни скрипта и получать из любого места кода не бывает в процедурном стиле!
Нужно строго контролировать текущее подключение к базе данных и хранить ссылку на него как-нибудь экзотическим для процедурного стиля понимания способом, ну как вариант использовать паттерн Singleton, а вообще можно при желании и паттерн Registry под это дело приспособить.
Подключение к базе должно быть (*опционально) инициировано автоматически при первом обращении к методу класса который должен будет заниматься собственно связью с этой базой (это должен контролировать какой нибудь класс, опять-же синглтон вполне справляется, но можно некий класс-прослойку написать, исчезнут лишние строки Singleton::getInstance(); в каждом методе который как-то работает с базой, но с другой стороны не самая лучшая идея плодить классы ради класса. Риторический вопрос конечно. )
Нужно как-то ловить ошибки (конструкция : try - catch), а чтоб их ловить нужен класс который собственно будет плеваться этими самыми ошибками, в этом плане PDO прекрасно справляется, но опять же без синглтона никуда ! К тому-же нету необходимости заморачиваться со всякими mysql_real_escape_string, в PDO своя система которая зачищает некоторые запросы от sql-инъекций, шансов нет!)

(Отредактировано автором: 12 Мая, 2012 - 01:31:20)

 
 Top
Symby
Отправлено: 12 Мая, 2012 - 08:46:57
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2012  
Откуда: Пермь


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




sKaa Спасибо за развернутый ответ!) Большое спасибо! Насчет говно кода понимаю!) Я учусь в техникуме, и мне диплом лишь сдать, потому что сроки подходят, после этого я этот проект полностью буду переписывать для себя. И во вторых не со школой связано, вы немного ошиблись Улыбка Тема "Аттестация техникума".

Цитата:
Сюда можно отнести и комменты на русском или вообще полное отсутствие комментов. - имхо дурной тон!
Ну что за $kod, $numCab, $spec, $hoursOne, $hoursTwo и $vidZach

Знаю, знаю. Пишу тороплюсь, про коменты забываю.
$hoursOne, $hoursTwo - поле из таблицы дисциплин.
$numCab - поле из таблицы преподавателей.

Честно спасибо за развернутые комментарии вам, я не любитель говнокода и осознаю что сейчас у меня такой, но если я сейчас займусь еще и ООП то я не в сроки сдам))а к осени.
А насчет функции той я из трех сделал одну, передаю неизвестное количество параметров,название таблицы, и добавляю.

Насчет альтернативного синтаксиса, я понимаю что он делает, так что так подробно может и не надо было. Но зато другие почитают. Мне проще писать {}

Входной порог - пускай входят, говнокод пишут, дальше этого не уедут.

P.S. Не забывайте, вы когда тоже были в касте "Индусского кода", скажете не были, не поверю. Улыбка

(Отредактировано автором: 12 Мая, 2012 - 09:08:08)



-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Мая, 2012 - 09:11:40
Post Id



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


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


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




sKaa пишет:
Важно не путать с continue; который в свою очередь призван прервать только текущую итерацию!
Да?
PHP:
скопировать код в буфер обмена
  1. for ($x = 0; $x < 1000; $x++) {
  2.   for ($y = 1000; $y > 0; $y--) {
  3.     echo "x = $x - y = $y\n";
  4.     if ($y > $x) {
  5.       continue 2;
  6.     }
  7.   }
  8. }

(Отредактировано автором: 12 Мая, 2012 - 09:14:51)

 
 Top
Леди_Мари
Отправлено: 12 Мая, 2012 - 13:20:36
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012  


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




Всем привет))) Помогите пожалуйста. Постоянно выдает FALSE . Что не так???
PHP:
скопировать код в буфер обмена
  1.  
  2. $db = mysql_connect("localhost", "root", "");
  3.  mysql_select_db("school", $db);
  4. $result=mysql_query("select ID_class from class where  nomer_class = $class and letter_class = $letter ");
  5.  
  6. if ($result == 'true'){
  7. while ($myrow = mysql_fetch_row($result)){
  8.  
  9. $id_class = $myrow[0];}
  10. }else {echo 'Класс введен неправильно. Вы ошиблись. Попробуйте снова!!!';}
  11.  
  12.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Мая, 2012 - 13:23:58
Post Id



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


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


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




Леди_Мари пишет:
if ($result == 'true')
булевое != строка
Леди_Мари пишет:
выдает FALSE
Кто выдает?
PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect("localhost", "root", "");
  2. mysql_select_db("school", $db);
  3. $query = "select ID_class from class where  nomer_class = $class and letter_class = $letter";
  4. $result = mysql_query($query);
  5.  
  6. if ($result) {
  7.   while ($myrow = mysql_fetch_row($result)) {
  8.     $id_class = $myrow[0];
  9.   }
  10. } else {
  11.   echo 'Класс введен неправильно. Вы ошиблись. Попробуйте снова!!!';
  12. }
 
 Top
LIME
Отправлено: 12 Мая, 2012 - 13:27:41
Post Id


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


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


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




а еще возможно переменные в запросе надо в кавычки взять если тип поля не числовой

(Отредактировано автором: 12 Мая, 2012 - 13:29:48)

 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Мая, 2012 - 13:28:52
Post Id



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


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


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




nomer_class
По смыслу, скорее всего числовой.
 
 Top
LIME
Отправлено: 12 Мая, 2012 - 13:29:02
Post Id


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


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


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




а еще возможно переменные в запросе надо в кавычки взять если тип поля не числовой

(Отредактировано автором: 12 Мая, 2012 - 13:29:30)

 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Мая, 2012 - 13:29:42
Post Id



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


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


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




А вот letter_class да - надо бы закавычить )
 
 Top
Леди_Мари
Отправлено: 12 Мая, 2012 - 13:35:26
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012  


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




Все ровно принимает значение false
 
 Top
LIME
Отправлено: 12 Мая, 2012 - 13:36:46
Post Id


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


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


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





клиент принял значение фальс ))
 
 Top
Леди_Мари
Отправлено: 12 Мая, 2012 - 13:55:27
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012  


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




что делать??
(Добавление)
в чем еще может быть проблема? я не знаю((
 
 Top
EuGen Администратор
Отправлено: 12 Мая, 2012 - 14:08:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Леди_Мари
Приведенный Вами код не делает вывод ничего, кроме "Класс введен неправильно. Вы ошиблись. Попробуйте снова!!!" (это единственное echo в коде) - и то в случае наступления некоторого условия.
Приведите код программы полностью, не отрезок (проблема, подозреваю, не в нем).
И убедитесь, что Вы ознакомились с материалами http://phpfaq[dot]ru/debug


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Леди_Мари
Отправлено: 12 Мая, 2012 - 14:33:19
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012  


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




вот полный код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.   $class = $_POST['class'];
  4.   $letter = $_POST['letter'];
  5.   $data_zan = $_POST['data_zan'];
  6.   if ($data_zan == ""){
  7.   echo "Внесите дату занятий";
  8.   }
  9.   {
  10.   echo $data_zan;
  11.  }
  12.  ?><p><?
  13.   echo 'Класс №', $class, ' ' , $letter;
  14.  
  15.   ?>
  16.  
  17.  <table border=1 width=60%   bgcolor = FFCC99  align="center">
  18. <tr><td align="center">Урок</td><td align="center">Предмет</td></tr>
  19.  
  20. <?PHP
  21.  
  22. $db = mysql_connect("localhost", "root", "");
  23.  mysql_select_db("school", $db);
  24. $result=mysql_query("select ID_class from class where  nomer_class = $class and letter_class = '$letter' ");
  25.  
  26. if ($result == 'true'){
  27. while ($myrow = mysql_fetch_row($result)){
  28.  
  29. $id_class = $myrow[0];}
  30. }else {echo 'Класс введен неправильно. Вы ошиблись. Попробуйте снова!!!';}
  31.  
  32. $r=mysql_query ("select schedule_student.data, schedule_student.nomber_lesson, lesson.name from schedule_student, lesson where schedule_student.IS_lesson = lesson.ID_lesson and schedule_student.ID_class= '$id_class' order by  schedule_student.nomber_lesson ASC");
  33.  
  34. if ($r == 'true'){
  35. while ($myrow = mysql_fetch_row($r)) //????????? ??????
  36. {
  37. if ($myrow[0] == $data_zan){
  38. echo "<tr><td>".$myrow[1]."</td>";
  39. echo "<td>".$myrow[2]."</td></tr>";}
  40. else {echo 'Расписание еще не составлено!!!';}
  41. }
  42. } else{ echo 'Данных нет!!!';}
  43. ?>
  44.  
  45.  


Я знаю что проблема в sql запросе, но в каком месте я ошиблась???
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Мая, 2012 - 14:45:01
Post Id



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


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


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




 
 Top
Страниц (5): « 1 2 [3] 4 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB