
banalita PHPxMySQLxJavaScript?
Mám následující problém: soubor "hledat.php" mi vypíše všechny nalezené položky do tabulky z mysql databáze. V hlavičce tabulky mám veškeré popisky dat, které zobrazuju.
Problém: Vedle každého popisku chci dát obrázek šipek "up" a "down" tak, že se mi podle dané šipky seřadí data z daného sloupce, ale nevím jak na to
zde zdrojový kód "hledat.php":
<?php
// načtení souboru header.php
require_once "includes/header.php";
require_once "nav.menu.php";
require_once "menu.php";
?>
<form method="GET" action="hledat.php">
<table>
<tr><td>Hledat:</td><td>Hledaný text:</td><td>Řadit podle:</td><td></td><td></td></tr>
<tr>
<td><select name="co">
<option value="1">Uživatele</option>
<option value="2">Produkt</option>
</select></td>
<td><input type="text" name="hledat" /> </td>
<td><select name="podle">
<option value="id">ID</option>
<option value="username">už. jména</option>
<option value="firstname">jména</option>
<option value="lastname">příjmení</option>
<option value="Email">e-mailu</option>
<option value="lasttime">posl. aktivity</option>
<option value="Kraj">kraje</option>
</select> </td>
<td><select name="podlejak">
<option value="ASC">sestupně</option>
<option value="DESC">vzestupně</option>
</select></td>
<td><input type="submit" vaule="Hledat" /> </td>
</tr>
</table>
</form>
<?
$myhostName="localhost";
$mydbName="moje";
$myuserName="root";
$myPW="vertrigo";
$tb="users";
$db=mysql_connect($myhostName,$myuserName,$myPW);
mysql_select_db($mydbName,$db);
$kde="SELECT * From $tb";
$result=mysql_db_query($mydbName,$kde,$db);
//Tento kód vypíše názvy sloupců
//echo "<table border=\"1\" ><tr>";
//for ($i=0;$i<mysql_num_fields($result);$i++){
//echo "<td style=\"font-weight:bold \">".mysql_field_name($result,$i)."</td>";
//}
//echo "</tr>";
$co=$_GET["co"];
if ($co==0){$co=1;}
$radit=$_GET["podle"];
$raditjak=$_GET["podlejak"];
if ($co==1){
?>
<table id="TabulkaHledat"><strong>
<form action="hledat.php" method="get">
<thead><tr>
<td>ID
<img src="img/up.png" height="10px" />
<img src="img/down.png" height="10px" />
</td>
<td>Uživatelské jméno</td>
<td>Jméno</td>
<td>Příjmení</td>
<td>E-mail</td>
<td>Naposled aktivní</td>
<td>Kraj</td>
</tr></thead>
</form>
</strong>
<?
}
//Výpis odpovídajících položek
$hledat=$_GET["hledat"];
$vysledek2 = mysql_query("SELECT * FROM $mydbName.$tb WHERE `username` LIKE '%".$hledat."%' OR `firstname` LIKE '%".$hledat."%' OR `lastname` LIKE '%".$hledat."%' ORDER BY `".$tb."`.`".$radit."` ".$raditjak, $db);
while ($zaznam2 = mysql_fetch_array($vysledek2)){
echo "<tr><td>".$zaznam2["id"]."</td>";
echo "<td>".$zaznam2["username"]."</td>";
echo "<td>".$zaznam2["firstname"]."</td>";
echo "<td>".$zaznam2["lastname"]."</td>";
echo "<td>".$zaznam2["Email"]."</td>";
echo "<td>".$zaznam2["lasttime"]."</td>";
echo "<td>".$zaznam2["Kraj"]."</td></tr>";
}
echo "</table>";
?>
<?php
require_once "includes/zapati.php";
?>
Vysvětlivky:
$co - 2 různé tabulky (zatím je jen jedna, takže pro vás nepotřebná informace)
$radit - proměnná, která má obsahovat název sloupce v databáci
$raditjak - DESC / ASC
řádek 73,74 obsahuje obrázky šipek
Anebo teda jednoduše : ze šipky odeslat odkaz s identifikací příslušného sloupce, přečíst pomocí $_GET nebo $_POST a do dotazu $kde=... přidat order by ... .
Takhle by ses bez Javascriptu obešel, ale při každém požadavku voláš znova stránku i s mysql dotazem.
to by mi vyhovovalo nejlíp i s tím sql dotazem... jen nevím jak jak přesně to mám dát do odkazu i a uchovat předešlé proměnné
Jedna buňka hlavičky tabulky např. takto :
a proměnné přečteš na začátku skriptu pomocí
Pokud nebudou ( test funkcí isset ), dotaz necháš ve stávající podobě.
Super... toto mi funguje teda takhle
Teď bych ještě potřebovat do toho odkazu vložit i zbylé proměnné $co a $hledat, aby mi to řadilo jen filtrované věci
Ranní dodatek :
samozřejmě daleko lepší je udržovat si proměnné v $_SESSION .
Jejich opětné odeslání z hidden políček formuláře je sice funkční a jednoduché, ale totálně nepružné při dalším rozšiřování a údržbě.
no toto vy nějak šlo to zapisovat do formuláře. Takže teoreticky odkazem u názvu sloupce (id) odešlu do formuláře do skryténo inputu value="id" a do druhého hodnotu "ASC" nebo "DESC" a odeslat požadavek na odeslání formuláře... už toto nevím jak přesně udělat :D
a za druhé: když odešlu formulář, tak se mi ten formulář vymaže, tak ho mám automaticky naplnit těmi hodnotami z proměnných, které jsem zadal?
Podle mě stačí
a stejným způsobem se plní i hodnoty políček, která může uživatel měnit.
Poznámka : ale moc se přimlouvám za session .
Ještě poznámka : samozřejmě existují mnohá připravená řešení - sám v práci používám funkce a třídy Caché Intersystems ( tedy nikoli PHP - MySQL ). Ale je užitečné si vyzkoušet problém (nejenom tento) pěkně od podlahy.