Mam stronę z jakimś PHP, która wygląda tak:
<table>
<thead>
<tr>
<th class="wheniwant">Date</th>
<th class="wheniwant">Income Amount</th>
<th class="wheniwant">Expense Amount</th>
</tr>
</thead>
<?php
//DB CONNECTION
$varDatePaid = ""; $varIncomePaid =""; $varExpensePaid = "";
$sql = mysql_query(
"
SELECT DATE_FORMAT(`date_paid`, '%Y-%m') `date_paid`,
SUM(CASE WHEN `categoryType` = 'Income' THEN `amount_paid` END) `IncomeAmount`,
SUM(CASE WHEN `categoryType` = 'Expense' THEN `amount_paid` END) `ExpenseAmount`
FROM `accounting`
GROUP BY DATE_FORMAT(`date_paid`, '%Y-%m')
"
);
while($row = mysql_fetch_array($sql))
{
$varDatePaid = $row['date_paid'];
$varIncomePaid = $row['IncomeAmount'];
$varExpensePaid = $row['ExpenseAmount'];
?>
<tr>
<td><?php echo $varDatePaid; ?></td>
<td><?php echo $varIncomePaid; ?></td>
<td><?php echo $varExpensePaid; ?></td>
</tr>
<?php
}
?>
</table>
Zwraca tabelę taką jak:
Chcę wtedy coś dodać:
$sql_query = "SELECT id, DATE_FORMAT(`date_paid`, '%Y') AS year FROM accounting GROUP BY year ORDER BY year DESC";
$result = mysql_query($sql_query) or die(mysql_error());
while ($row = mysql_fetch_array($result)){
echo '<option value='. $row['year'] . '>'. $row['year'] . '</option>';
Stworzyć jakiś filtr ograniczający wynik do konkretnego roku. Jak to zrobić bez opuszczania strony?
2 odpowiedzi
Najpierw definiujesz menu rozwijane w html i przesyłasz je, gdy zmieni się wybrana wartość:
<form id="myForm" action="samePage.php" method="post">
<select id="mySelection" name="mySelection" onChange="$('#myForm').submit();">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</form>
I modyfikujesz zapytanie w php, aby filtrować według wybranej wartości:
$sql = mysql_query(
"
SELECT *
FROM TableName
where ColumnName like '%" . mysql_real_escape_string($_POST['mySelection']) . "%'
ORDER BY something ASC
"
);
Nie testowałem kodu, ale powinieneś zacząć od tego pomysłu. I założyłem, że używasz jquery dla skryptu $('#myForm').submit().
Tak naprawdę nie podałeś wystarczającej ilości informacji lub czegokolwiek, czego próbowałeś.
Będziesz potrzebował formularza HTML z polami <select>
, które mają unikalny identyfikator, dzięki czemu możesz pobrać wartości w PHP przez $_POST, a następnie wprowadzić je do SQL w instrukcji „WHERE” .
Na przykład.
<form action="script.php" method="post">
<select id="filter">
<option value="value1">Value 1</option>
<option value="value2">Value 2</option>
<option value="value3">Value 3</option>
</select>
<input type="submit" value="Filter">
</form>
W script.php:
<?php
// DB connect
$filter = $_POST['filter'];
$query = "
SELECT *
FROM TableName
WHERE field_to_filter = '$filter'
ORDER BY something ASC
"
//etc
?>
Uwaga, to bardzo krótki przykład z mojej głowy. Będzie się bardzo różnić w zależności od tego, co dokładnie chcesz zrobić. Dodatkowo nie uwzględnia to żadnych problemów bezpieczeństwa związanych z przyjmowaniem danych wejściowych użytkownika z formularzy i przekazywaniem ich do SQL.
Jeśli bieżąca strona to script.php, naciśnięcie przycisku przesyłania spowoduje po prostu odświeżenie strony z zainstalowanym filtrem. Trochę więcej kodu będzie potrzebne do takich rzeczy, jak upewnienie się, że pole wyboru ma nadal aktywne poprzednie zaznaczenie. Jeśli nie chcesz odświeżać strony, wymagane będzie coś takiego jak jQuery, które doda kolejny poziom złożoności, jeśli wcześniej go nie używałeś.
Podobne pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.