Предполагая, что записи для каждого $updateDate
уже существуют в базе данных, в противном случае вам потребуется выполнить запрос INSERT
вместо UPDATE
.
Основная проблема, которую я вижу с вашим кодом, заключается в цикле for
на $getSites
.
for ($x=0; $x < $getSites; $x++) {
$getSites[$x]['site_id'];
}
Что подразумевает, что $getSites
является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka
Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf
$l = count($getSites);
for ($x=0; $x < $l; $x++) {
$getSites[$x]['site_id'];
}
или, что еще лучше, используйте foreach
, пример: https://3v4l.org/FTOCI .
foreach ($getSites as $site) {
$site['site_id'];
}
Есть также несколько проблем с порядком операций, которые должны быть улучшены.
Сначала $dateImport
не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации.
Кроме того, поскольку $y
начинается с 0
, это создаст дату, подобную 2019-01-0
, которая будет интерпретироваться PHP как последний день предыдущего месяца; 2018-12-31
и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu .
Кроме того, кажется, что Предполагая, что записи для каждого [118] уже существуют в базе данных, в противном случае вам потребуется выполнить запрос [119] вместо [1110]. Основная проблема, которую я вижу с вашим кодом, заключается в цикле [1111] на [1112]. Что подразумевает, что [1113] является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте [1114], пример: https://3v4l.org/FTOCI . Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала [1115] не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. Кроме того, поскольку [1116] начинается с [1117], это создаст дату, подобную [1118], которая будет интерпретироваться PHP как последний день предыдущего месяца; [1119] и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . Кроме того, кажется, что [1120] может не быть определено, если не установлено [1121], что приведет к созданию даты, подобной Предполагая, что записи для каждого Основная проблема, которую я вижу с вашим кодом, заключается в цикле Что подразумевает, что Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала Кроме того, поскольку Кроме того, кажется, что Предполагая, что записи для каждого [118] уже существуют в базе данных, в противном случае вам потребуется выполнить запрос [119] вместо [1110]. Основная проблема, которую я вижу с вашим кодом, заключается в цикле [1111] на [1112]. Что подразумевает, что [1113] является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте [1114], пример: https://3v4l.org/FTOCI . Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала [1115] не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. Кроме того, поскольку [1116] начинается с [1117], это создаст дату, подобную [1118], которая будет интерпретироваться PHP как последний день предыдущего месяца; [1119] и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . Кроме того, кажется, что [1120] может не быть определено, если не установлено [1121], что приведет к созданию даты, подобной Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Предполагая, что записи для каждого Основная проблема, которую я вижу с вашим кодом, заключается в цикле Что подразумевает, что Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала Кроме того, поскольку Кроме того, кажется, что Предполагая, что записи для каждого [118] уже существуют в базе данных, в противном случае вам потребуется выполнить запрос [119] вместо [1110]. Основная проблема, которую я вижу с вашим кодом, заключается в цикле [1111] на [1112]. Что подразумевает, что [1113] является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте [1114], пример: https://3v4l.org/FTOCI . Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала [1115] не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. Кроме того, поскольку [1116] начинается с [1117], это создаст дату, подобную [1118], которая будет интерпретироваться PHP как последний день предыдущего месяца; [1119] и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . Кроме того, кажется, что [1120] может не быть определено, если не установлено [1121], что приведет к созданию даты, подобной Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Хочу отметить, что понятия не имею, где Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Хочу отметить, что понятия не имею, где Предполагая, что записи для каждого Основная проблема, которую я вижу с вашим кодом, заключается в цикле Что подразумевает, что Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала Кроме того, поскольку Кроме того, кажется, что Предполагая, что записи для каждого [118] уже существуют в базе данных, в противном случае вам потребуется выполнить запрос [119] вместо [1110]. Основная проблема, которую я вижу с вашим кодом, заключается в цикле [1111] на [1112]. Что подразумевает, что [1113] является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте [1114], пример: https://3v4l.org/FTOCI . Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала [1115] не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. Кроме того, поскольку [1116] начинается с [1117], это создаст дату, подобную [1118], которая будет интерпретироваться PHP как последний день предыдущего месяца; [1119] и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . Кроме того, кажется, что [1120] может не быть определено, если не установлено [1121], что приведет к созданию даты, подобной Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Хочу отметить, что понятия не имею, где Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Хочу отметить, что понятия не имею, где Хочу отметить, что понятия не имею, где Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Хочу отметить, что понятия не имею, где Предполагая, что записи для каждого Основная проблема, которую я вижу с вашим кодом, заключается в цикле Что подразумевает, что Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала Кроме того, поскольку Кроме того, кажется, что Предполагая, что записи для каждого [118] уже существуют в базе данных, в противном случае вам потребуется выполнить запрос [119] вместо [1110]. Основная проблема, которую я вижу с вашим кодом, заключается в цикле [1111] на [1112]. Что подразумевает, что [1113] является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте [1114], пример: https://3v4l.org/FTOCI . Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала [1115] не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. Кроме того, поскольку [1116] начинается с [1117], это создаст дату, подобную [1118], которая будет интерпретироваться PHP как последний день предыдущего месяца; [1119] и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . Кроме того, кажется, что [1120] может не быть определено, если не установлено [1121], что приведет к созданию даты, подобной Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Предполагая, что записи для каждого Основная проблема, которую я вижу с вашим кодом, заключается в цикле Что подразумевает, что Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала Кроме того, поскольку Кроме того, кажется, что Предполагая, что записи для каждого [118] уже существуют в базе данных, в противном случае вам потребуется выполнить запрос [119] вместо [1110]. Основная проблема, которую я вижу с вашим кодом, заключается в цикле [1111] на [1112]. Что подразумевает, что [1113] является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka Вы хотели бы изменить его на Пример: https://3v4l.org/0qbWf или, что еще лучше, используйте [1114], пример: https://3v4l.org/FTOCI . Есть также несколько проблем с порядком операций, которые должны быть улучшены. Сначала [1115] не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. Кроме того, поскольку [1116] начинается с [1117], это создаст дату, подобную [1118], которая будет интерпретироваться PHP как последний день предыдущего месяца; [1119] и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . Кроме того, кажется, что [1120] может не быть определено, если не установлено [1121], что приведет к созданию даты, подобной Во-вторых, вам нужно вызывать Например, обратите внимание на порядок примененных операций, который вызывается Тогда вам просто нужно разделить проблемы в вашем методе Наконец, я настоятельно рекомендую вместо использования Редактировать: После более тщательного прочтения вашего вопроса я понял, что вы хотите импортировать весь данный месяц. Не только с указанной даты до текущей даты. Но также остановиться на максимуме текущей даты. Поэтому я обновил логику, чтобы отразить желаемое поведение. Хочу отметить, что понятия не имею, где $dexpl
может не быть определено, если не установлено --0
, которая будет интерпретироваться PHP как 1970-01-01
//consolidated conditional logic
$importTimestamp = strtotime(isset(
$updateDate
уже существуют в базе данных, в противном случае вам потребуется выполнить запрос INSERT
вместо UPDATE
. for
на $getSites
. $getSites
является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka foreach
, пример: https://3v4l.org/FTOCI . $dateImport
не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. $y
начинается с 0
, это создаст дату, подобную 2019-01-0
, которая будет интерпретироваться PHP как последний день предыдущего месяца; 2018-12-31
и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . $dexpl
может не быть определено, если не установлено
, что приведет к созданию даты, подобной --0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. $v = 1;
$stmt->bindParam(':v', $v);
$v = 2;
$stmt->execute(); //results in sending 2 to the DB as the `:v` placeholder value
updateStats
, чтобы подготовить утверждение, только если оно еще не было. protected function prepareStats()
{
if (!isset($this-statsStmt)) {
$this-statsStmt = $this->dbSt->prepare('UPDATE table SET sessions_wifi = :sessions, wifi_users = :wifiUsers, wifi_unique_users = :wifiUniqueUsers, wifi_time = :wifiTime
WHERE site_id = :siteId and circ_date = :statsDate');
}
return $this->statsStmt;
}
public function updateStats($hz_site_id,$total_sessions,$count_guests,$count_unique_guests,$total_minutes,$updateDate)
{
try {
$stm = $this->prepareStats();
$stm->bindValue(':sessions', $total_sessions);
$stm->bindValue(':wifiUsers', $count_guests);
$stm->bindValue(':wifiUniqueUsers', $count_unique_guests);
$stm->bindValue(':wifiTime', $total_minutes);
$stm->bindValue(':siteId', $hz_site_id);
$stm->bindValue(':statsDate', $updateDate);
if ($stm->execute()) {
return true;
}
//no need for else, since we return on success already
echo $stm->errorInfo();
}catch (PDOException $e) {
echo $e->getMessage();
}
return false;
}
date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
//use !empty to prevent conflict of from today to today
if (!$start = date_create(!empty(
$updateDate
уже существуют в базе данных, в противном случае вам потребуется выполнить запрос INSERT
вместо UPDATE
. for
на $getSites
. $getSites
является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka foreach
, пример: https://3v4l.org/FTOCI . $dateImport
не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. $y
начинается с 0
, это создаст дату, подобную 2019-01-0
, которая будет интерпретироваться PHP как последний день предыдущего месяца; 2018-12-31
и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . $dexpl
может не быть определено, если не установлено
, что приведет к созданию даты, подобной --0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. updateStats
, чтобы подготовить утверждение, только если оно еще не было. date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
[116]
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
GET['importDate']Import Dates: "2019-01-18"
Dates set in the future are not permitted
Import Dates: "2019-01-01" (current day)
2019-01-01
Import Dates: "2018-12-01", "2018-12-20", ""
2018-12-01
2018-12-02
2018-12-03
2018-12-04
2018-12-05
2018-12-06
2018-12-07
2018-12-08
2018-12-09
2018-12-10
2018-12-11
2018-12-12
2018-12-13
2018-12-14
2018-12-15
2018-12-16
2018-12-17
2018-12-18
2018-12-19
2018-12-20
2018-12-21
2018-12-22
2018-12-23
2018-12-24
2018-12-25
2018-12-26
2018-12-27
2018-12-28
2018-12-29
2018-12-30
2018-12-31
--0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. updateStats
, чтобы подготовить утверждение, только если оно еще не было. date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
[116]
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
[117]GET['importDate']) ? $updateDate
уже существуют в базе данных, в противном случае вам потребуется выполнить запрос INSERT
вместо UPDATE
. for
на $getSites
. $getSites
является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka foreach
, пример: https://3v4l.org/FTOCI . $dateImport
не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. $y
начинается с 0
, это создаст дату, подобную 2019-01-0
, которая будет интерпретироваться PHP как последний день предыдущего месяца; 2018-12-31
и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . $dexpl
может не быть определено, если не установлено
, что приведет к созданию даты, подобной --0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. updateStats
, чтобы подготовить утверждение, только если оно еще не было. date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
[116]
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
GET['importDate']Import Dates: "2019-01-18"
Dates set in the future are not permitted
Import Dates: "2019-01-01" (current day)
2019-01-01
Import Dates: "2018-12-01", "2018-12-20", ""
2018-12-01
2018-12-02
2018-12-03
2018-12-04
2018-12-05
2018-12-06
2018-12-07
2018-12-08
2018-12-09
2018-12-10
2018-12-11
2018-12-12
2018-12-13
2018-12-14
2018-12-15
2018-12-16
2018-12-17
2018-12-18
2018-12-19
2018-12-20
2018-12-21
2018-12-22
2018-12-23
2018-12-24
2018-12-25
2018-12-26
2018-12-27
2018-12-28
2018-12-29
2018-12-30
2018-12-31
--0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. updateStats
, чтобы подготовить утверждение, только если оно еще не было. date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
[116]
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
[117]GET['importDate'] : 'yesterday')) {
die('Invalid Date Supplied');
}
$today = date_create();
if ($start > $today) {
die('Dates set in the future are not permitted');
}
//start at the first day of the month
$start->modify('first day of this month')->setTime(0,0,0);
//validate the current year and month to prevent exceeding current date
if ($start->format('Y-m') === $today->format('Y-m')) {
$end = date_create('yesterday')->setTime(23,59,59);
if ($end < $start) {
//yesterday was previous month - use current start date
$end = clone $start;
}
} else {
$end = clone $start;
$end->modify('last day of this month');
}
//always end at end of day
$end->setTime(23,59,59);
$importDates = new \DatePeriod($start, new \DateInterval('P1D'), $end);
//we can use foreach on $getSites which is faster
//switched order of operations, since if there are no sites, we don't need to continue.
foreach ($getSites as $site) {
foreach ($importDates as $importDate) {
//logic to calculate site data to UPDATE...
//...
$statsDao->updateStats(
$site['site_id'],
$total_sessions,
$count_guests,
$count_unique_guests,
$total_minutes,
$importDate->format('Y-m-d')
);
}
}
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
GET['importDate']Import Dates: "2019-01-18"
Dates set in the future are not permitted
Import Dates: "2019-01-01" (current day)
2019-01-01
Import Dates: "2018-12-01", "2018-12-20", ""
2018-12-01
2018-12-02
2018-12-03
2018-12-04
2018-12-05
2018-12-06
2018-12-07
2018-12-08
2018-12-09
2018-12-10
2018-12-11
2018-12-12
2018-12-13
2018-12-14
2018-12-15
2018-12-16
2018-12-17
2018-12-18
2018-12-19
2018-12-20
2018-12-21
2018-12-22
2018-12-23
2018-12-24
2018-12-25
2018-12-26
2018-12-27
2018-12-28
2018-12-29
2018-12-30
2018-12-31
--0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. updateStats
, чтобы подготовить утверждение, только если оно еще не было. date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
[116]
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
[117]GET['importDate']) ? $updateDate
уже существуют в базе данных, в противном случае вам потребуется выполнить запрос INSERT
вместо UPDATE
. for
на $getSites
. $getSites
является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka foreach
, пример: https://3v4l.org/FTOCI . $dateImport
не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. $y
начинается с 0
, это создаст дату, подобную 2019-01-0
, которая будет интерпретироваться PHP как последний день предыдущего месяца; 2018-12-31
и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . $dexpl
может не быть определено, если не установлено --0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. $v = 1;
$stmt->bindParam(':v', $v);
$v = 2;
$stmt->execute(); //results in sending 2 to the DB as the `:v` placeholder value
updateStats
, чтобы подготовить утверждение, только если оно еще не было. protected function prepareStats()
{
if (!isset($this-statsStmt)) {
$this-statsStmt = $this->dbSt->prepare('UPDATE table SET sessions_wifi = :sessions, wifi_users = :wifiUsers, wifi_unique_users = :wifiUniqueUsers, wifi_time = :wifiTime
WHERE site_id = :siteId and circ_date = :statsDate');
}
return $this->statsStmt;
}
public function updateStats($hz_site_id,$total_sessions,$count_guests,$count_unique_guests,$total_minutes,$updateDate)
{
try {
$stm = $this->prepareStats();
$stm->bindValue(':sessions', $total_sessions);
$stm->bindValue(':wifiUsers', $count_guests);
$stm->bindValue(':wifiUniqueUsers', $count_unique_guests);
$stm->bindValue(':wifiTime', $total_minutes);
$stm->bindValue(':siteId', $hz_site_id);
$stm->bindValue(':statsDate', $updateDate);
if ($stm->execute()) {
return true;
}
//no need for else, since we return on success already
echo $stm->errorInfo();
}catch (PDOException $e) {
echo $e->getMessage();
}
return false;
}
date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
//use !empty to prevent conflict of from today to today
if (!$start = date_create(!empty(
$updateDate
уже существуют в базе данных, в противном случае вам потребуется выполнить запрос INSERT
вместо UPDATE
. for
на $getSites
. $getSites
является массивом, а не целым числом. Пример: https://3v4l.org/AK8ka foreach
, пример: https://3v4l.org/FTOCI . $dateImport
не определено до тех пор, пока после начального цикла это не приведет к отправке нулевого значения в базу данных на первой итерации. $y
начинается с 0
, это создаст дату, подобную 2019-01-0
, которая будет интерпретироваться PHP как последний день предыдущего месяца; 2018-12-31
и может привести к неожиданным результатам. Пример: https://3v4l.org/TiHtu . $dexpl
может не быть определено, если не установлено
, что приведет к созданию даты, подобной --0
, которая будет интерпретироваться PHP как 1970-01-01
prepare
и bindParam
только один раз для данной операции запроса. Я предлагаю объявить подготовленный оператор свойству объекта и переключиться на использование PDOStatement::bindValue()
. Это связано с тем, что PDOStatement::bindParam()
будет использовать ссылку на связанную переменную для извлечения значения, которое вы не используете в данном контексте updateStats()
. bindParam
до изменения значения $v
. updateStats
, чтобы подготовить утверждение, только если оно еще не было. date('t')
использовать DatePeriod()
. Что даст вам полное представление о днях, которые повторяются. В отличие от итерации по количеству дней указанного $importDate
, которое будет включать дни до указанного $importDate
и дни в будущем. Пример: https://3v4l.org/S0H6s
[116]
$total_sessions
,
[ 1149] $count_guests
, $count_unique_guests
, $total_minutes
, поэтому это может представлять дополнительные проблемы, которые, возможно, необходимо решить. Результаты текущей даты «2019-01-01»: https://3v4l.org/ddQG0
GET['importDate']Import Dates: "2019-01-18"
Dates set in the future are not permitted
Import Dates: "2019-01-01" (current day)
2019-01-01
Import Dates: "2018-12-01", "2018-12-20", ""
2018-12-01
2018-12-02
2018-12-03
2018-12-04
2018-12-05
2018-12-06
2018-12-07
2018-12-08
2018-12-09
2018-12-10
2018-12-11
2018-12-12
2018-12-13
2018-12-14
2018-12-15
2018-12-16
2018-12-17
2018-12-18
2018-12-19
2018-12-20
2018-12-21
2018-12-22
2018-12-23
2018-12-24
2018-12-25
2018-12-26
2018-12-27
2018-12-28
2018-12-29
2018-12-30
2018-12-31
--0
, которая будет интерпретировать
Я соглашаюсь с RichH, я думаю, что все популярные библиотеки JavaScript оставляют желать лучшего при попытке к созданным скругленным углам.
Я всегда использую cornershop: http://wigflip.com/cornershop/, это - изображение / генератор CSS, который вынимает боль из создания округленных краев вручную.
Вы могли бы хотеть попробовать этот плагин вместо этого jquery.curvycorners.js.
Мы используем его на нашем проекте без проблемы вообще - Вы, возможно, должны добавлять/предварительно ожидать с промежутками, но это очень просто.
Лучшая вещь-> сглаженный по умолчанию.
Я испытал только затруднения с библиотеками Javascript скругленных углов (особенно с IE6 и 7)
В конце я вернулся к более традиционным подходам, включающим изображения. Немного больше тяжелой работы для установки, но работает отлично.
Немного трудно визуализировать проблему, которую Вы имеете, ссылка была бы действительно полезна. Удостоверьтесь, что Ваши свойства height и width определяются для каждой ячейки Вашей таблицы. Это могла потенциально быть проблема hasLayout.
Я искал и не нашел решение скругленных углов на вкладках UI jQuery. JQuery themeroller поддерживает скругленные углы, но в документации говорится, что они не работают в IE.
Вот является хорошая страница с 25 различными методами скругленного угла http://www.cssjuice.com/25-rounded-corners-techniques-with-css/
У меня были похожие проблемы, даже в firefox, я обнаружил, что если вы примените «углы» к элементу, у которого есть класс, который устанавливает цвет фона, углы никогда не применяются. В моем случае я добавляю класс с именем selected, который дает другой цвет фона для выбранной «вкладки» в UL. Чтобы предотвратить это, я применяю цвет фона с помощью js вместо css после добавления углов:
$('.selected').css('background-color', '#3296C0');
Также вы добавляете: hover, который изменяет цвет фона, углы возвращаются в квадрат при наведении курсора. Решение, которое у меня есть до сих пор, - использовать событие onhover, которое повторно применяет углы (вы также можете установить цвет здесь).
$('#top-nav li a').hover(function(){
$(this).corners('top');
});
Что касается IE6 - кошмар - было бы не так уж плохо, если бы я мог обнаруживать IE6 и просто не добавлять углы, оставляя их квадратными. Даже IE 7 еще не пробовал ...
В IE результаты были лучше с библиотекой DD_Roundies . Но работает только в IE. Для Firefox вам нужно добавить стили -moz-border-radius.
curvycorners.js и jquery.curvycorners.js работают, только если вы не хотите использовать какие-либо переходы.
если у вас есть эффект вкладки «аккордеон» или эффект постепенного появления / исчезновения, элемент со скругленными углами не будет правильно отображаться после изменения.