Просмотр полной версии : отключение элементов (php)
root@localhost:~#
27.06.2022, 11:38
недавно начал учить php
есть функция которая парсит из базы итемы, я сделал условия которые будут отключать некоторые символы в случае если допустим итем 1 - у него отключается вывод количества, или если итем не точенный у него не выводится заточка
пример
так вот, хотелось бы узнать насколько это костыльно у меня это реализовано, можно ли так пускать на лайв, и как лучше в целом это сделать?
кусок кода:
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$before
=
'('
;
$after
=
')'
;
$plus
=
' +'
;
if
(
$row
-
>
enchant
==
0
)
{
unset
(
$row
-
>
enchant
)
;
unset
(
$plus
)
;
}
if
(
$row
-
>
amount
==
1
)
{
unset
(
$row
-
>
amount
)
;
unset
(
$before
)
;
unset
(
$after
)
;
}
echo
'
item_name
.
' '
.
$before
.
$row
-
>
amount
.
$after
.
$plus
.
$row
-
>
enchant
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Mex-Vision
27.06.2022, 12:17
недавно начал учить php
есть функция которая парсит из базы итемы, я сделал условия которые будут отключать некоторые символы в случае если допустим итем 1 - у него отключается вывод количества, или если итем не точенный у него не выводится заточка
пример
так вот, хотелось бы узнать насколько это костыльно у меня это реализовано, можно ли так пускать на лайв, и как лучше в целом это сделать?
кусок кода:
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$before
=
'('
;
$after
=
')'
;
$plus
=
' +'
;
if
(
$row
-
>
enchant
==
0
)
{
unset
(
$row
-
>
enchant
)
;
unset
(
$plus
)
;
}
if
(
$row
-
>
amount
==
1
)
{
unset
(
$row
-
>
amount
)
;
unset
(
$before
)
;
unset
(
$after
)
;
}
echo
'
item_name
.
' '
.
$before
.
$row
-
>
amount
.
$after
.
$plus
.
$row
-
>
enchant
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Я бы конечно сделал вот так.
Кода меньше и код гораздо читаемый, как мне кажется.
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$enchantStr
=
''
;
$amountStr
=
''
;
if
(
$row
-
>
enchant
>
0
)
$enchantStr
=
' +'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$amountStr
=
' ('
.
$row
-
>
amount
.
')'
;
echo
'
item_name
.
$amountStr
.
$enchantStr
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Да и как мне кажется, код более оптимизирован. Меньше временных переменных, меньше канкатинаций.
root@localhost:~#
27.06.2022, 12:19
Я бы конечно сделал вот так.
Кода меньше и код гораздо читаемый, как мне кажется.
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$enchantStr
=
''
;
$amountStr
=
''
;
if
(
$row
-
>
enchant
>
0
)
$enchantStr
=
' +'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$amountStr
=
' ('
.
$row
-
>
amount
.
')'
;
echo
'
item_name
.
$amountStr
.
$enchantStr
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Да и как мне кажется, код более оптимизирован. Меньше временных переменных, меньше канкатинаций.
хм, тоже неплохо, не додумался почему то
Mex-Vision
27.06.2022, 12:22
хм, тоже неплохо, не додумался почему то
Я просто уже не помню до конца, но если включить варнинги в php, скорее всего будет ругаться на обращение к перменной которая не установлена. А вы как раз обращаетесь к переменным которые удалили функцией unset
Попробуйте включить ошибки:
ini_set('display_errors', 1);
error_reporting(E_ALL);
и отработать свой код, будут ли варнинги.
òbiòbi верифицированный пользователь.
27.06.2022, 12:29
или так
PHP:
$items
=
$result
-
>
fetchAll
(
PDO
:
:
FETCH_OBJ
)
;
foreach
(
$items
as
$item
)
{
$title
=
$item
-
>
item_name
;
if
(
$item
-
>
enchant
>
0
)
$title
.
=
' +'
.
$item
-
>
enchant
;
if
(
$item
-
>
amount
>
0
)
$title
.
=
' ('
.
$item
-
>
amount
.
')'
;
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}
root@localhost:~#
27.06.2022, 12:34
или так
PHP:
$items
=
$result
-
>
fetchAll
(
PDO
:
:
FETCH_OBJ
)
;
foreach
(
$items
as
$item
)
{
$title
=
$item
-
>
item_name
;
if
(
$item
-
>
enchant
>
0
)
$title
.
=
' +'
.
$item
-
>
enchant
;
if
(
$item
-
>
amount
>
0
)
$title
.
=
' ('
.
$item
-
>
amount
.
')'
;
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}
а почему не while? просто из интереса спрашиваю
òbiòbi верифицированный пользователь.
27.06.2022, 12:37
а почему не while? просто из интереса спрашиваю
в данном случае не будет иметь значения, как больше нравится
Desquire
27.06.2022, 12:40
Сильно костьільно из-за чистого пхп).
У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?
Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант @Mex-Vision (https://forum.antichat.xyz/members/891564/), тоже самое, только для пхп 8 и в 1 строку)
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
echo
'
item_name
.
(
$row
-
>
enchant
>
0
?
' +'
.
$row
-
>
enchant
:
''
)
.
(
$row
-
>
amount
>
0
?
' ('
.
$row
-
>
amount
.
')'
:
''
)
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Может нужно будет добавлять какие-то еще лебльі или т.п.
То можно сделать вот так
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$data_titles
=
[
]
;
$data_titles
[
]
=
$row
-
>
item_name
;
if
(
$row
-
>
enchant
>
0
)
$data_titles
[
]
=
'+'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$data_titles
[
]
=
'('
.
$row
-
>
amount
.
')'
;
// Можно добавить еще что-то в $data_titles.
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}
root@localhost:~#
27.06.2022, 12:41
Сильно костбьіли.
У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?
Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант @Mex-Vision (https://forum.antichat.xyz/members/891564/), тоже самое, только для пхп 8 и в 1 строку)
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
echo
'
item_name
.
(
$row
-
>
enchant
>
0
?
' +'
.
$row
-
>
enchant
:
''
)
.
(
$row
-
>
amount
>
0
?
' ('
.
$row
-
>
amount
.
')'
:
''
)
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Может нужно будет добавлять какие-то еще лебльі или т.п.
То можно сделать вот так
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$data_titles
=
[
]
;
$data_titles
[
]
=
$row
-
>
item_name
;
if
(
$row
-
>
enchant
>
0
)
$data_titles
[
]
=
'+'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$data_titles
[
]
=
'('
.
$row
-
>
amount
.
')'
;
// Можно добавить еще что-то в $data_titles.
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}
я еще не пришел к тому, что бы делать по уму, я еще даже не весь базовый синтаксис выучил) поэтому и спросил как лучше
Desquire
27.06.2022, 12:42
я еще не пришел к тому, что бы делать по уму, я еще даже не весь базовый синтаксис выучил) поэтому и спросил как лучше
У тебя сразу идет вьівод.
Собери все в 1 и вьіведи в нужном месте еще)
GhgostCobalt
27.06.2022, 15:05
Сильно костьільно из-за чистого пхп).
У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?
Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант @Mex-Vision (https://forum.antichat.xyz/members/891564/), тоже самое, только для пхп 8 и в 1 строку)
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
echo
'
item_name
.
(
$row
-
>
enchant
>
0
?
' +'
.
$row
-
>
enchant
:
''
)
.
(
$row
-
>
amount
>
0
?
' ('
.
$row
-
>
amount
.
')'
:
''
)
.
'">
item_type
.
'.jpg" width="32" height ="32">'
;
}
Может нужно будет добавлять какие-то еще лебльі или т.п.
То можно сделать вот так
PHP:
while
(
$row
=
$result
-
>
fetch
(
PDO
:
:
FETCH_OBJ
)
)
{
$data_titles
=
[
]
;
$data_titles
[
]
=
$row
-
>
item_name
;
if
(
$row
-
>
enchant
>
0
)
$data_titles
[
]
=
'+'
.
$row
-
>
enchant
;
if
(
$row
-
>
amount
>
0
)
$data_titles
[
]
=
'('
.
$row
-
>
amount
.
')'
;
// Можно добавить еще что-то в $data_titles.
echo
'
item_type
.
'.jpg" width="32" height ="32">'
;
}
Вы принципиально отключили русский язык на телефоне?)
Desquire
27.06.2022, 16:48
Вы принципиально отключили русский язык на телефоне?)
Да, єтот портал единстенное место, где я общаюсь на єтом язьіке.
Можно каждый раз копировать букву от куда-то, но мне лень.
Посмотрите в сторону MVC , на таком подходе далеко не уедешь
root@localhost:~#
27.06.2022, 20:30
Посмотрите в сторону MVC , на таком подходе далеко не уедешь
пожалуй когда хотя бы месяца 3 опыта будет
Mex-Vision
27.06.2022, 20:44
пожалуй когда хотя бы месяца 3 опыта будет
Если синтаксис знаешь, то лучше не терять время, и сразу почитать про паттерны проектирования. MVC это некая база для небольшой веб разработки на PHP, которая не должна вызвать сложностей, так как очень проста в понимании.
root@localhost:~#
27.06.2022, 20:47
Если синтаксис знаешь, то лучше не терять время, и сразу почитать про паттерны проектирования. MVC это некая база для небольшой веб разработки на PHP, которая не должна вызвать сложностей, так как очень проста в понимании.
с синтаксисом пока проблемы, я начал пилить некое подобие статистики сервера для себя, пилил на mysqli, потом решил перекинуться на pdo, потом понял что лучше делать функциями
по сути я еще даже циклы толком не освоил, из того что я уже понял это работа с массивами, условия, работа с БД, сессии, функции и прочая мелочь
См. технический долг (https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D 0%BA%D0%B8%D0%B9_%D0%B4%D0%BE%D0%BB%D0%B3)
Mex-Vision
27.06.2022, 22:17
с синтаксисом пока проблемы, я начал пилить некое подобие статистики сервера для себя, пилил на mysqli, потом решил перекинуться на pdo, потом понял что лучше делать функциями
по сути я еще даже циклы толком не освоил, из того что я уже понял это работа с массивами, условия, работа с БД, сессии, функции и прочая мелочь
Тогда лучше всё такие основы выучить, и долго не задерживаться на функциональном программировании, изучайте ООП. Наступит переломный момент, когда вам покажется что перед вами открылся целый мир=) Потом конечно вы сломаете ноги и руки изучая паттерны, и запутаетесь еще сильнее чем вначале пути, но это уже совсем другая история.
root@localhost:~#
27.06.2022, 22:43
Тогда лучше всё такие основы выучить, и долго не задерживаться на функциональном программировании, изучайте ООП. Наступит переломный момент, когда вам покажется что перед вами открылся целый мир=) Потом конечно вы сломаете ноги и руки изучая паттерны, и запутаетесь еще сильнее чем вначале пути, но это уже совсем другая история.
пока еще не познал смысл ооп, работая с pdo примерно понимаю как это должно работать, но применения у себя еще не нашел, возможно когда процедурный стиль освою пойду ооп учить, а пока буду обучаться)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot