Diskuze: Zoradenie tabulky podla volby uzivatela
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
V prvom rade budes potrebovat nejake linky nad tabulkou v html. Napr.
Zorad podla:
<a href="stranka.php?sort=name" >mena</a>
<a href="stranka.php?sort=surname" >priezviska</a>
<a href="stranka.php?sort=birthday" >narodenin</a>
Tieto linky ti budu posielat parameter sort ku php scriptu. Potom v php scripte das podmienku kde budes pripravovat myslq dotazy podla parametra. Zhruba takto:
<?php
// ziskaj sort parameter, defaultna hodnota je name.
$sort = (isset($_GET['sort']) ? $_GET['sort'] : "name";
if ($sort = "name") {
$query = "SELECT *, TIMESTAMPDIFF(YEAR,narodeniny,CURDATE()) AS vek FROM tabulka ORDER BY meno ASC";
} elseif($sort = "surname") {
$query = "SELECT *, TIMESTAMPDIFF(YEAR,narodeniny,CURDATE()) AS vek FROM tabulka ORDER BY priezvisko ASC";
} else {
$query = "SELECT *, TIMESTAMPDIFF(YEAR,narodeniny,CURDATE()) AS vek FROM tabulka ORDER BY vek ASC";
}
K tvojej druhej otazke, zobrazit taku vetu vies, udaje si vytiahnes asi takto
$query = "SELECT *, datediff(CURDATE(), narodeniny) AS dniDoNarodenin, TIMESTAMPDIFF(YEAR,narodeniny,CURDATE()) AS vek FROM tabulka ORDER BY dniDoNarodenin ASC"
// spust query a uloz si ich do pola.
foreach($riadok as $zamestnanec) {
echo "Za $zamestnanec['dniDoNarodenin'] dni bude mat ".$zamestnanec['vek']+1."-te narodeniny $zamestnanec['meno'] $zamestnanec['priezvisko']";
}
PS: Ak mas v tabulke pole narodeniny ako datum (1992-12-12) tak pouzi CURDATE(). Ak pouzivas timestamp (2014-11-22 12:45:34) pouzi timestampdiff(NOW(), narodeniny)
Zobrazeno 2 zpráv z 2.