Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Anebo teda jednoduše : ze šipky odeslat odkaz s identifikací příslušného sloupce, přečíst pomocí $_G…
hynajs 18.01.2011 15:09
hynajs
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…
lukinpark 18.01.2011 16:10
lukinpark
Jedna buňka hlavičky tabulky např. takto : <th>Název sloupce<a href="?sloupec={$nazev_sloupce}&sme…
hynajs 18.01.2011 18:52
hynajs
Super... toto mi funguje teda takhle . . . $radit=$_GET["sloupec"]; $raditjak=$_GET["smer"]; . . .… nový
lukinpark 18.01.2011 22:41
lukinpark
V HTML se parametry v odkaze oddělují znakem &. Např.: http://pc.poradna.net/q/view/606879-banalit… nový
Flash_Gordon 18.01.2011 22:57
Flash_Gordon
jo to já chápu, jen jevím, jak je z té adresy znovu načíst do formuláře nový
lukinpark 19.01.2011 13:57
lukinpark
Aha, tak to musíš skloubit ještě s formulářem. Každopádně uživatel klikne buď na odkaz nebo na submi… nový
hynajs 18.01.2011 23:47
hynajs
Ranní dodatek : samozřejmě daleko lepší je udržovat si proměnné v $_SESSION . Jejich opětné odeslán… nový
hynajs 19.01.2011 08:12
hynajs
no toto vy nějak šlo to zapisovat do formuláře. Takže teoreticky odkazem u názvu sloupce (id) odešlu… nový
lukinpark 19.01.2011 14:02
lukinpark
Podle mě stačí <input type="hidden" value="{$hodnota_promenne_z_PHP}" name="{$nazev_promenne_z_PHP… poslední
hynajs 19.01.2011 14:18
hynajs
Nevím, jestli se to bude zrovna tady hodit, ale podívej se na Tablesorter plugin (pro jQuery). Použí… nový
hvězd 19.01.2011 10:57
hvězd
tak jsem to stáhl, vyzkoušel pomocí http://www.webhall.cz/clanky/cist/20081230/jquery- a-tablesorter… nový
lukinpark 19.01.2011 14:04
lukinpark

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.

Jedna buňka hlavičky tabulky např. takto :


<th>Název sloupce<a href="?sloupec={$nazev_sloupce}&smer=up" ><img src="img/up.png" height="10px" /></a></th>

a proměnné přečteš na začátku skriptu pomocí

$_GET['sloupec']
$_GET['smer']

Pokud nebudou ( test funkcí isset ), dotaz necháš ve stávající podobě.

Super... toto mi funguje teda takhle

.
.
.
$radit=$_GET["sloupec"];
$raditjak=$_GET["smer"];
.
.
.
<th>ID
<a href="?sloupec=id&smer=ASC" ><img src="img/up.png" height="10px" /></a>
<a href="?sloupec=id&smer=DESC" ><img src="img/down.png" height="10px" /></a>
</th>
.
.
.
$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);
.
.
.

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

Aha, tak to musíš skloubit ještě s formulářem. Každopádně uživatel klikne buď na odkaz nebo na submit ve formuláři. Snad by tedy stačilo, kdyby sis proměnné id a smer nacpal pomocí PHP do hidden polí ve formuláři. On je pak odešle se svými GET. Párkrát jsem to použil.
Už se klíží oči a nenapadá mě nic lepšího.

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čí


<input type="hidden" value="{$hodnota_promenne_z_PHP}" name="{$nazev_promenne_z_PHP}"/>

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.

Zpět do poradny Odpovědět na původní otázku Nahoru