
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
V HTML se parametry v odkaze oddělují znakem &.
Např.:
http://pc.poradna.net/q/view/606879-banalita-phpxm ysqlxjavascript?from=2011-01-18-22.41.24&page=r607 184#r607184
název stránky Za ? následují proměnné oddělené &
Takže např.: www.nejakyWeb.cz/skript.php?promenna1=hodnota1&pro menna2=hodnota2
jo to já chápu, jen jevím, jak je z té adresy znovu načíst do formuláře
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.
Nevím, jestli se to bude zrovna tady hodit, ale podívej se na Tablesorter plugin (pro jQuery).
Používá se snadno a (po stažení minimodulu) má i stránkování.
tak jsem to stáhl, vyzkoušel pomocí http://www.webhall.cz/clanky/cist/20081230/jquery- a-tablesorter-tabulkovy-luxus.aspx a nepovedlo se mi to zprovoznit :(