PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (2): [1] 2 »
Найдено сообщений: 16
Mandalorian
Отправлено: 01 Июля, 2022 - 16:24:03 • Тема: SQLSTATE[HY000] [2002] Permission denied • Форум: Вопросы новичков
Ответов: 1 Просмотров: 1154
Здравствуйте, помогите пожалуйста с ошибкой.
Пытаюсь подружить Laravel с mysql и после команды 'php artisan migrate' вылетает эта ошибка:
SQLSTATE[HY000] [2002] Permission denied (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
файл .env:
APP_NAME=laravel.local
APP_ENV=local
APP_KEY=base64:uO+00ua2t4V+T21hdsyzPQQ6aLDfBxgOpgT7CnWwDLs=
APP_DEBUG=true
APP_URL=http://127[dot]0[dot]0[dot]1
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
файл config/database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
Уже что только не делал. Менял 127.0.0.1 на localhost и обратно.
На этой ссылке у меня PHPMyAdmin: http://127[dot]0[dot]0[dot]1:3000/openserver[dot][dot][dot]yadmin/index.php
Через эту домашняя страница моего сайта: http://127[dot]0[dot]0[dot]1:8000/
Что я не так делаю? Ктото сталкивался? Куда еще смотреть?
Mandalorian
Отправлено: 24 Декабря, 2021 - 16:10:21 • Тема: Проблемы с xdebug • Форум: Вопросы новичков
Ответов: 1 Просмотров: 195
Вобщем проблему решил. В моем случае, после обновления на php 8.0 слетел phpunit.
Установил phpunit и с помощью команды
XDEBUG_MODE=coverage composer exec --verbose phpunit tests -- --coverage-text
тесты прошли.
Mandalorian
Отправлено: 24 Декабря, 2021 - 11:45:36 • Тема: Проблемы с xdebug • Форум: Вопросы новичков
Ответов: 1 Просмотров: 195
Здравствуйте! Сейчас работаю в WSL на Windows 10 - Ubuntu 20.04.
Поставил php 8.0.
Есть папка в которой одна папка с кодом а другая с тестами.
Хотел посмотреть покрытие тестами.
Запускаю команду
composer exec --verbose phpunit tests -- --coverage-text
В ответ получаю
> __exec_command: phpunit 'tests' '--coverage-text'
PHPUnit 9.5.10 by Sebastian Bergmann and contributors.
Warning: XDEBUG_MODE=coverage or xdebug.mode=coverage has to be set
..... 5 / 5 (100%)
Time: 00:00.032, Memory: 6.00 MB
OK (5 tests, 10 assertions)
Расскажите что к чему. Где мне прописывать XDEBUG_MODE=coverage?
Mandalorian
Отправлено: 13 Декабря, 2021 - 16:04:41 • Тема: Реализация функции • Форум: Вопросы новичков
Ответов: 2 Просмотров: 301
Вобщем, вроде, решил.
PHP:
скопировать код в буфер обмена
function getIn( $data , $keys )
{
$current = $data ;
$result = null ;
foreach ( $keys as $k => $key ) {
$result = $current [ $key ] ;
$result = getIn( $result , $keys ) ;
}
}
}
return $result ;
}
Если у кого есть варианты получше, было бы интерестно посмотреть.
Mandalorian
Отправлено: 12 Декабря, 2021 - 12:47:38 • Тема: Реализация функции • Форум: Вопросы новичков
Ответов: 2 Просмотров: 301
Здравствуйте! Стоит вот такая задача.
Реализуйте функцию getIn, которая извлекает из массива (который может быть любой глубины вложенности) значение по указанным ключам. Аргументы:
Исходный массив
Массив ключей, по которым ведется поиск значения
В случае, когда добраться до значения невозможно, возвращается null.
PHP:
скопировать код в буфер обмена
<?PHP
$data = [
'user' => 'ubuntu' ,
'hosts' => [
[ 'name' => 'web1' ] ,
[ 'name' => 'web2' , null => 3 , 'active' => false ]
]
] ;
getIn( $data , [ 'undefined' ] ) ; // null
getIn( $data , [ 'user' ] ) ; // 'ubuntu'
getIn( $data , [ 'user' , 'ubuntu' ] ) ; // null
getIn( $data , [ 'hosts' , 1 , 'name' ] ) ; // 'web2'
getIn( $data , [ 'hosts' , 0] ) ; // ['name' => 'web1']
getIn( $data , [ 'hosts' , 1, null ] ) ; // 3
getIn( $data , [ 'hosts' , 1 , 'active' ] ) ; // false
Вроде как решил ее через рекурсию.
Интересует решение через foreach, чето не могу додуматься...
Mandalorian
Отправлено: 25 Ноября, 2021 - 09:20:56 • Тема: Реализация функции • Форум: Вопросы новичков
Ответов: 7 Просмотров: 628
Всем большое спасибо!
don.bidon пишет: $opened = 0;
don.bidon , понравилось Ваше решение со счетчиком $opened
Mandalorian
Отправлено: 24 Ноября, 2021 - 14:10:17 • Тема: Реализация функции • Форум: Вопросы новичков
Ответов: 7 Просмотров: 628
Здравствуйте! Стоит вот такая задача.
Реализуйте функцию isBalanced, которая принимает на вход строку, состоящую только из открывающих и закрывающих круглых скобок, и проверяет, является ли эта строка корректной. Пустая строка (отсутствие скобок) считается корректной.
Строка считается корректной (сбалансированной), если содержащаяся в ней скобочная структура соответствует требованиям:
Скобки — это парные структуры. У каждой открывающей скобки должна быть соответствующая ей закрывающая скобка.
Закрывающая скобка не должна идти впереди открывающей. Такой вариант недопустим )(, а вот такой допустим ()().
Написал решение такого плана:
PHP:
скопировать код в буфер обмена
function isBalanced( $str ) {
$resLeft = [ ] ;
$resRight = [ ] ;
for ( $i = 0 ; $i < $length ; $i ++ ) {
if ( $str [ $i ] === '(' ) {
$resLeft [ ] = $i ;
} elseif ( $str [ $i ] === ')' ) {
$resRight [ ] = $i ;
}
}
for ( $i = 0 ; $i < $length ; $i ++ ) {
if ( $resLeft [ $i ] > $resRight [ $i ] ) {
return false ;
}
}
return true ;
}
Вроде выдает правильные ответы.
Вопрос: может можно както упростить? Или на что-то не обратил внимания.
Mandalorian
Отправлено: 11 Ноября, 2021 - 19:44:56 • Тема: Проблема с кодировкой • Форум: Вопросы новичков
Ответов: 2 Просмотров: 364
Здравствуйте! Есть такое задание:
Допишите реализацию функции invertCase(), которая инвертирует регистр каждого символа в переданной строке.
Я написал решение такого плана:
PHP:
скопировать код в буфер обмена
function invertCase( $text )
{
// BEGIN (write your solution here)
$result = '' ;
} else {
}
}
return $result ;
// END
}
echo invertCase( 'пРивет' ) ; // выдаст ???????
при этом правильный ответ такой:
PHP:
скопировать код в буфер обмена
function invertCase( $text )
{
$result = '' ;
for ( $i = 0 ; $i < $len ; $i ++ ) {
if ( $symbol === $lowerSymbol ) {
} else {
$result .= $lowerSymbol ;
}
}
return $result ;
}
Вопрос: в чем принципиальная разница, что первый вариант не выдает правильную кодировку, а второй вариант отрабатывает все правильно?
На что мне обратить внимание?
Mandalorian
Отправлено: 20 Сентября, 2021 - 12:59:27 • Тема: Скрипт-гороскоп • Форум: Вопросы новичков
Ответов: 3 Просмотров: 472
Я кстати вспомнил. В функцию mktime можно не передавать последним параметром год date('Y'), так как функция берет автоматически год, который сейчас.
По поводу первого вопроса с датами $today и $tommorow нашел еще такой вариант записи:
Тут уже будет учитываться смена месяца и года.
Mandalorian
Отправлено: 17 Сентября, 2021 - 17:30:48 • Тема: Скрипт-гороскоп • Форум: Вопросы новичков
Ответов: 3 Просмотров: 472
Здравствуйте! Занимаюсь по онлайн учебнику Трепачев Д.П.
Задача.
Сделайте скрипт-гороскоп. Внутри него хранится массив гороскопов на несколько дней вперед для каждого знака зодиака. По заходу на страницу спросите у пользователя дату рождения, определите его знак зодиака и выведите предсказание для этого знака зодиака на текущий день.
Написал код такого плана.
PHP:
скопировать код в буфер обмена
<?PHP
ini_set ( 'display_startup_errors' , 1
) ;
?>
<form action="" method="GET">
<input name="birth" placeholder="dd.mm.yyyy">
<input type="submit">
</form>
<?PHP
} else {
$date = $_GET [ 'birth' ] ;
$dateStamp = mktime ( 0
, 0
, 0
, $arrDate [ 1
] , $arrDate [ 0
] , date ( 'Y' ) ) ;
$horoscope = [
'Овен' => [ $today => 'гороскоп Овна на Сегодня' , $tommorow => 'гороскоп Овна на Завтра' ] ,
'Телец' => [ $today => 'гороскоп Тельца на Сегодня' , $tommorow => 'гороскоп Тельца на Завтра' ] ,
'Близнецы' => [ $today => 'гороскоп Близнецов на Сегодня' , $tommorow => 'гороскоп Близнецов на Завтра' ] ,
'Рак' => [ $today => 'гороскоп Рака на Сегодня' , $tommorow => 'гороскоп Рака на Завтра' ] ,
'Лев' => [ $today => 'гороскоп Льва на Сегодня' , $tommorow => 'гороскоп Льва на Завтра' ] ,
'Дева' => [ $today => 'гороскоп Девы на Сегодня' , $tommorow => 'гороскоп Девы на Завтра' ] ,
'Весы' => [ $today => 'гороскоп Весов на Сегодня' , $tommorow => 'гороскоп Весов на Завтра' ] ,
'Скорпион' => [ $today => 'гороскоп Скорпиона на Сегодня' , $tommorow => 'гороскоп Скорпиона на Завтра' ] ,
'Стрелец' => [ $today => 'гороскоп Стрельца на Сегодня' , $tommorow => 'гороскоп Стрельца на Завтра' ] ,
'Козерог' => [ $today => 'гороскоп Козерога на Сегодня' , $tommorow => 'гороскоп Козерога на Завтра' ] ,
'Водолей' => [ $today => 'гороскоп Водолея на Сегодня' , $tommorow => 'гороскоп Водолея на Завтра' ] ,
'Рыбы' => [ $today => 'гороскоп Рыб на Сегодня' , $tommorow => 'гороскоп Рыб на Завтра' ] ,
] ;
$zodiacs = [
'Овен' => [ 2103 , 1904 ] ,
'Телец' => [ 2004 , 2005 ] ,
'Близнецы' => [ 2105 , 2006 ] ,
'Рак' => [ 2106 , 2207 ] ,
'Лев' => [ 2307 , 2208 ] ,
'Дева' => [ 2308 , 2209 ] ,
'Весы' => [ 2309 , 2210 ] ,
'Скорпион' => [ 2310 , 2111 ] ,
'Стрелец' => [ 2211 , 2112 ] ,
'Козерог' => [ 2212 , 1901 ] ,
'Водолей' => [ 2001 , 1802 ] ,
'Рыбы' => [ 1902, 2003] ,
] ;
foreach ( $zodiacs as $key => $sign ) {
foreach ( $sign as $date ) {
$zodiacs [ $key ] [ ] = mktime ( 0
, 0
, 0
, $res [ 1
] , $res [ 0
] , date ( 'Y' ) ) ; // третьим и четвертым элементом массива записываю временные рамки знака в формате Timestamp }
if ( $dateStamp > $zodiacs [ $key ] [ 2] && $dateStamp < $zodiacs [ $key ] [ 3 ] ) { // здесь соответственно сравниваю дату рождения и временные рамки знака
print_r ( "$horoscope [$key ][$today ]<br>" ) ; }
}
}
?>
Старался делать с учетом уже пройденного материала, чтоб не слишком сложно было.
Интерестно услышать мнения на счет кода. Может можно что-то улучшить? Или проще написать. Или вобще по другому надо... По интернету посмотрел решения другие, и чего-то не легли на душу. Решил по своей логике попробовать.
Страниц (2): [1] 2 »
Powered by ExBB FM 1.0 RC1. InvisionExBB