Autor Zpráva
riddick
Profil
Zdravím, nějakou dobu hledám nápovědu jak udělat to, aby když si vytáhnu záznamy z tabulek v sql databázi byla možnost třídění. Momentálně mám na pevno nastaveno třídění dle datumu, chci ale umožnit uživateli aby po odkliknutí hypertextového odkazu se třídilo třeba i podle ceny aj. napadlo mě, že by se v odkazu odeslala hodnota proměnné do php souboru, kde mám funkci která se mi stará o tahání dat z tabulky. ale nevím jak předat hodnotu proměnné z hypertextového odkazu uvnitř index.php do cykl.php

Díky moc za rady - jsem začátečník
Taps
Profil
riddick
Tříděný můžeš provádět pomocí DESC resp. ASC
select * from tabulka order by cena DESC

pak už stačí aby jsi do do adresního řádku dostal např proměnnou razeni do které budeš dostavát desc nebo asc
riddick
Profil
jj to vím, nevím jak ale dostat tu proměnou do řádku a následně ji z toho řádku vytáhnout
Taps
Profil
riddick
<a href="neco.php?trideni=desc">dle nejvyšší ceny</a>
echo  $_GET['trideni'];

riddick
Profil
ok díky to funguje. akorat ještě mi to hlásí při prvním načtení Notice: Undefined index: trideni in C:\Program Files\EasyPHP3.1\www\nacist.php on line 3 - to je asi tím, že proměnná je prázdná. mám asi udělat podmínku že pokud je prázdná tak něco? nebo se to dá ošetřit jinak? díky zřejmě pro vás triviální. tak se omlouvám za lama dotazy
GeneralDv
Profil
<a href="neco.php?trideni=desc">sestupne</a>
<a href="neco.php?trideni=asc">vzestupne</a>

<?php
if (isset($_GET["trideni"]) AND $_GET["trideni"]=="asc" OR $_GET["trideni"]=="desc")){
    $dotaz = mysql_query("select * from tabulka order by cena ".$_GET["trideni"]);
	//nějaký další příkazy
}
?>

nebo by se to dalo ošetřit např. '@' před mysql_query..

PS: neporadil by mi někdo s http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=98512 ?
riddick
Profil
nějak mi to nejde. kod vypada takto - chyba je tehda, když neposílám žádnou hodnotu trideni (nechci posilat hodnotu trideni vždy. pri nactení uvodní stránky chci aby se to třídilo podle datumu)

<?php
if (isset($_GET["trideni"]) AND $_GET["trideni"]=="termin_od" OR $_GET["trideni"]=="cena")){

$spojeni = mysql_connect("localhost","root","" );
mysql_select_db("php1", $spojeni);
$vysledek = mysql_query( 
"SELECT * FROM bazar ORDER BY $_GET["trideni"] DESC", 
$spojeni);

}
else {

$spojeni = mysql_connect("localhost","root","" );
mysql_select_db("php1", $spojeni);
$vysledek = mysql_query( 
"SELECT * FROM bazar ORDER BY "datum" DESC", 
$spojeni);
}


//if ($zaznam["kategorie"]="1")
require "cykl_vypis.php";
//else echo "smůla";
?>
GeneralDv
Profil
<?php
if ($_GET["trideni"]=="termin_od" OR $_GET["trideni"]=="cena")){
    $_GET["trideni"] = "asc";
}
else {
    $_GET["trideni"] = "desc";
}

$spojeni = mysql_connect("localhost","root","" );
mysql_select_db("php1", $spojeni);
$vysledek = mysql_query("SELECT * FROM bazar ORDER BY ".$_GET["trideni"]."DESC", $spojeni);

require("cykl_vypis.php");
?>

Že by takhle ? Nevim jak to chceš kdy tak a kdy onak se to má vypisovat, stačí tam dát podmínku (dal sem ji tam) a dávat pozor na uvozovky...
riddick
Profil
hm asi si nerozumíme. mi vůbec nejde o třídění asc a desc. ale když uživatel na uvodní stránce index.php klikne na odkaz třídit dle ceny, tak se obsah setřídí dle ceny od nejnižší ceny. o výpis obsahu se mi stará nacist.php a o samotný cyklus který data načíta cykl_vypis.php . vše mi funguje, když kliknu na odkaz který tady byl napsán. ale ve chvíli kdy příjdu na uvodní stránku index.php a tedy nepředávám žádnou hodnotu "trideni" hlásí mi to chybu, že nezná "trideni"
GeneralDv
Profil
Nechápu, tak to skus ošetřit tim že před funkce dáš zavináč, např. @mysql_query to potlačí chyb. hlášky.. nebo už nvm..
Taps
Profil
riddick
napiš mi na icq, mám ho v profilu
riddick
Profil
takto to mám, chci mít na indexu odkaz, který po odkliknutí setřídí data dle ceny, termínu_od ale defaultne - bez předané hodnoty - podle datumu.

<?php

if (!isset($_GET["trideni"])){
$_GET["trideni"] = "datum";
}
elseif (isset($_GET["trideni"]=="cena")){
  $_GET["trideni"] = "cena";
}
elseif ((isset($_GET["trideni"]=="termin_od")) {
$_GET["trideni"] = "termin_od";
}

require "connect_db.php";
//$spojeni = mysql_connect("localhost","root","" );
//mysql_select_db("php1", $spojeni);
$vysledek = mysql_query( 
"SELECT * FROM bazar ORDER BY datum DESC", 
$spojeni);



//if ($zaznam["kategorie"]="1")
require "cykl_vypis.php";
//else echo "smůla";
?>





hlásí mi to tuto chybu: Parse error: parse error, expecting `'('' in C:\Program Files\EasyPHP3.1\www\nacist.php on line 6
Taps
Profil
riddick
elseif ((isset($_GET["trideni"]=="termin_od"))

V kodu ti přebývá jedna závorka
riddick
Profil
stále mi to hlásí Parse error: parse error, expecting `','' or `')'' in C:\Program Files\EasyPHP3.1\www\nacist.php on line 6
riddick
Profil
kod mám ted takto:
<?php

if (!isset($_GET["trideni"])){
$_GET["trideni"] = "datum";
}
elseif (isset($_GET["trideni"]=="cena")){
$_GET["trideni"] = "cena";
}
elseif (isset($_GET["trideni"]=="termin_od")) {
$_GET["trideni"] = "termin_od";
}

require "connect_db.php";
//$spojeni = mysql_connect("localhost","root","" );
//mysql_select_db("php1", $spojeni);
$vysledek = mysql_query(
"SELECT * FROM bazar ORDER BY datum DESC",
$spojeni);



//if ($zaznam["kategorie"]="1")
require "cykl_vypis.php";
//else echo "smůla";
?>
Alphard
Profil
riddick:
Je to nejen závorkou (ta by možná sama o sobě ani nevadila), nemůžete takto kombinovat isset a ==. Navíc bych nepřepisoval $_GET, ale vytvořil bych $order (na pojmenovaní nezáleží).

<?php
if (isset($_GET["trideni"]))
{
  switch ($_GET['trideni'])
  {
    case "cena": $order = "cena"; break;
    case "termin_od": $order = "termin_od"; break;
    default: $order = "datum";
  }
}
else
{
  $order = "datum";
}

mysql_query ("... order by $order desc ...");
riddick
Profil
je mi to líto, nějak to porad nejde, kod mam takto: hlásí to chybu -Parse error: parse error in C:\Program Files\EasyPHP3.1\www\nacist.php on line 5
---------------------
<?php

if (isset($_GET["trideni"]))
{
switch ($_GET['trideni']])
{
case "cena": $order = "cena"; break;
case "termin_od": $order = "termin_od"; break;
default: $order = "datum";
}
}
else
{
$order = "datum";
}

require "connect_db.php";
//$spojeni = mysql_connect("localhost","root","" );
//mysql_select_db("php1", $spojeni);
$vysledek = mysql_query(
"SELECT * FROM bazar ORDER BY $order DESC",
$spojeni);



//if ($zaznam["kategorie"]="1")
require "cykl_vypis.php";
//else echo "smůla";
?>
Alphard
Profil
riddick:
Jedna závorka navíc, psát něco v tomto editoru není žádná sranda. :-) Opravím původní kód.
riddick
Profil
jj uz to vidim :) díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: