sergeiss
Данный возвращает данные таблицы,
header('location: transactions.php'); после нажатие на кнопку фильтрации, должно перенаправить пользователя опять туда где он находился ранее.
И закрываем соединение с базой данных
return $transactions;не будет работать foreache
Цитата (rusline @ 18.12.2016 - 15:57) |
header('location: transactions.php'); после нажатие на кнопку фильтрации, должно перенаправить пользователя опять туда где он находился ранее. И закрываем соединение с базой данных |
<?php
//Отображение транзакции
function getTarget()
{
session_start();
$idUser=$_SESSION['id'];
$startCurrentMonth=date('Y-m-01');
$endCurrntMonth=date('Y-m-31');
$sqlTrans="
SELECT transactions.typ, transactions.data, transactions.Sum,transactions.comment, score.score, Categoria.category, subcategory.subcategory, organization.organization
FROM transactions
LEFT JOIN score ON score.idScore = transactions.idScore
LEFT JOIN Categoria ON Categoria.idCateg = transactions.idCateg
LEFT JOIN subcategory ON subcategory.idSubCat = transactions.idSubCat
LEFT JOIN organization ON organization.idOrg = transactions.idOrg
WHERE
transactions.idUser='$idUser' AND data BETWEEN '$startCurrentMonth' AND '$endCurrntMonth'
ORDER BY data DESC";
/*
Запрос в мускуль это треш капитальный !, кто называет таблицы и поля одним и тем же названием ???
пример: ( score.score, subcategory.subcategory, organization.organization ),
неужели трудно добавить символ куда нибудь?
пример: ( t_score.score, t_subcategory.subcategory, t_organization.organization ),
где: `t_score` - Таблица, `score` - ячейка, так понятнее и не будет путаницы чего куда и где
Далее, почему НЕ используем тильду ???, жалко места в блокноте? или на сервере?
$sqlTrans="
SELECT
`transactions`.`typ`, `transactions`.`data`, `transactions`.`Sum`, `transactions`.`comment`,
`score`.`score`, `Categoria`.`category`, `subcategory`.`subcategory`, `organization`.`organization`
FROM
`transactions`
LEFT JOIN
`score` ON `score`.`idScore` = `transactions`.`idScore`
LEFT JOIN
`Categoria` ON `Categoria`.`idCateg` = `transactions`.`idCateg`
LEFT JOIN
`subcategory` ON `subcategory`.`idSubCat` = `transactions`.`idSubCat`
LEFT JOIN
`organization` ON `organization`.`idOrg` = `transactions`.`idOrg`
WHERE
`transactions`.`idUser` = '" . $idUser . "'
AND
`data` BETWEEN '" . $startCurrentMonth . "' AND '" . $endCurrntMonth . "'
ORDER BY `data` DESC";
Да текста больше согласен, но понятнее где команды, где переменные и т.д.
*/
$queryTrans = mysql_query($sqlTrans) or die(mysql_error());
$transactions = array();
while($rowTrans = mysql_fetch_array($queryTrans))
{
$transactions[]=$rowTrans;
}
return $transactions;
}
$transactions = getTarget(); // получили результат $transactions по дефолту за текущий месяц из функции getTarget(), на сколько я понял...
// Начались проверки POST данных...
if (isset($_POST['week'])) {
$dateStart = new date("last monday");
$dateEnd = new date("next monday");
} elseif (isset($_POST['month'])) {
$dateStert = new date("mignight first day of this month");
$dateEnd = new date("mignight first day of next month");
} else {
$dateStart = new date("first day of january");
$dateEnd = new date("first day of january next year");
}
/*
И тут же запрашивается НОВЫЙ результат $transactions, согласно POST параметрам...
Назревает вопрос !, зачем делать это: $transactions = getTarget();, если все равно по условию "else", переменные $dateStart, $dateEnd,
получат..., кстати непонятно что они получат, ТАКОЕ: new date("first day of january") - работает? или все же какой то свой класс используется ?
в яндексе гуглил - ненашел ((...
так вот, после условия else, все равно выполнится функция filter..., в общем непонятно малость логика сего.
*/
$transactions = filter($dateStart, $dateEnd);
/*
код ниже - непонятно для чего используется переменная $i
*/
$i=1;
while ($row=mysql_fetch_assoc($query)) {
echo "<option value=".$row['idScore'].">".$row['score']."</option>";
$i++;
}
/*
Не стоит так писать - foreach ($transactions as $transact)
если нет воображения для генерации переменных, то для того что бы не "сливались" имена, пишите что оно есть на самом деле, т.е.
foreach ( $transactions as $transactions_key => $transactions_value )
Почему не ставим ; в конце ? тоже экономим место?
Пишите код "просторнее", самому же читать потом, а то выглядит как - "вырвиглаз"...
<td><?=$transact['typ']?></td> // bad boy
<td><?=$transact['typ']; ?></td> // good boy
*/
?>
<!-- Часть кода где ппц натыкано "открытий закрытий PHP", ИМХО - читать тяжело -->
<div id="organizationBox">
<select name="organization">
<?php foreach ($organization as $organ): ?>
<option value="<?=$organ['idOrg']?>"><?=$organ['organization']?></option>
<?php endforeach; ?>
</select>
</div>
<!-- Часть кода ИМХО - более читабельно, но на вкус и цвет как говорится... -->
<div id="organizationBox">
<select name="organization">
<?php
foreach ($organization as $organ){
echo '<option value="' . $organ['idOrg'] . '">' . $organ['organization'] .'</option>';
}
?>
</select>
</div>