Autor Zpráva
michal28
Profil *
Zdravím, mám udělaný v php řazení že kliknu na tlačítko třeba město nebo ip a na to co kliknu se mi to seřadí sestupně ale potřeboval bych po dalším kliknutí aby se mi to seřadilo naopak. Nemužu přijit jak na to

<php?

if (isset ($_REQUEST["razeni"])) {

if ($_REQUEST["razeni"]=="id_herna"){

$_SESSION["radit"]="ORDER BY id_herna ";

}
}


$sql='SELECT * FROM herny WHERE del=0 '.$_SESSION["radit"].' ';

a na tlačitko to mám takto <td><a href="?razeni=id_herna">IP herny</a></td>

dik moc za radu
preca1
Profil
Zdravim,
ORDER BY umožňuje řadit sestupně a vzestupně pomocí slovíček DESC a ASC.
michal28
Profil *
to vím ale potřebuji aby mě to po kliknutí na ten odkaz se seřadilo pomoci desc a po dalším kliknuti pomoci asc
Tori
Profil
Tak si přidejte do URL ještě jeden nepovinný parametr pro směr řazení. Pak budete podle toho měnit i URL odkazu.
peta
Profil
A? V cem je problem? Neumis do session ulozit ASC a pripade, ze $_REQUEST['key'] je stejny jako $_SESSION['key'] zmenit $_SESSION['type'] na ASC nebo DESC, podle toho jestli se type=ASC ano, ne?
Sir Tom
Profil
michal28:
https://developers.google.com/chart/interactive/docs/gallery/table - vypiš data do google tabulky a pak si s tím hraj už na úrovni googlu...
michal28
Profil *
peta:
a jak provedu aby mi to reagovalo na další kliknutí na odkaz?
ts_istudio
Profil
michal28:
a jak provedu aby mi to reagovalo na další kliknutí na odkaz?

Kliknutí na odkaz způsobí přechod na stránku, v tomto případě na stejnou stránku. Do odkazu si kromě razeni přidej ještě poradi a při vypsání tabulky dej do odkazu jeho opačnou hodnotu, tzn. třeba jednou "asc" a potom "desc". Nebo jakékoliv jiné dva řetězce, třeba "" a "d".
michal28
Profil *
ts_istudio mohl bych názorný příklad s tím odkazem prosím?
ts_istudio
Profil
michal28:

<?php

  $sloupec = "jmeno";
  $radit = "";

  if ($_GET["sloupec"] != "") { $sloupec = $_GET["sloupec"];};
  if ($_GET["radit"] == "") { $radit = "desc";};

  $q = "SELECT * FROM lidi ORDER BY ".$sloupec." ".$radit;

  echo $q;

  $res = mysql_query($q);
  $cnt = mysql_num_rows($res);

  if ($cnt) {
    echo "<table>";
    echo "<tr>";
    echo "<th><a href='?sloupec=jmeno&radit=".$radit."'>Jméno</th>";
    echo "<th><a href='?sloupec=prijmeni&radit=".$radit."'>Příjmení</th>";
    echo "</tr>";

    while ($ret=MySQL_Fetch_Array($res)):
      echo "<tr>";
      echo "<td>".$ret["jmeno"]."</td>";
      echo "<td>".$ret["prijmeni"]."</td>";
      echo "</tr>";
    endwhile;

    echo "</table>";
  }
?>
juriad
Profil
michal28:
POZOR, ts_istudiův kód je děravý a nebezpečný a nefunguje změna řazení, chápej ho jen jako ukázku, jakým směrem se vydat.
ts_istudio
Profil
juriad:
Neřeším tam zabezpečení, protože by to ubralo na přehlednosti. Změna řazení nefunguje?
juriad
Profil
ts_istudio:
Do odkazu v hlavičce tabulky vypisuješ to, co ti přijde GETem, nikde neprovádíš inverzi.

fragmenty kódu:
if(isset($_GET['radit']) && $_GET['radit'] == 'desc') {
$radit = 'desc';
$opak = 'asc';
} else {
$radit = 'asc';
$opak = 'desc';
}

if(isset($_GET['sloupec']) && $_GET['sloupec'] == 'prijmeni') {
$sloupec = 'prijmeni';
} else {
$sloupec = 'jmeno';
}

$q = "SELECT * FROM lidi ORDER BY ".$sloupec." ".$radit;

#dotaz do databáze stejně

# výpis hlavičky stejně s upravenými následujícími řádky
echo "<th><a href='?sloupec=jmeno&radit=" . ($sloupec =='jmeno' ? $opak : 'asc') . "'>Jméno</th>";
echo "<th><a href='?sloupec=prijmeni&radit=" . ($sloupec=='prijmeni' ? $opak : 'asc') . "'>Příjmení</th>";

#výpis těla tabulky stejně

Chová se to tak, že pokud budeš klikat na jeden sloupec, tak se bude řazení pořád otáčet. Pokud klikneš na jiný sloupec, tak se řadit bude podle něj a vždy začíná vzestupně.
peta
Profil
Tohle neumis napsat?
<?php
session_start();
$a = isset($_SESSION['serad']) ? $_SESSION['serad'] : 'ASC';
$b = isset($_GET['serad']) ? ($a=='ASC' ? 'DESC' : 'ASC') : $a;
$_SESSION['serad'] = $b;
echo $b;
?>
<a href="?serad">serad</a>
juriad
Profil
peta:
Nemáš stabilní url, s (skoro) každým refreshem stránky se ti změní směr řazení v tabulce.
ts_istudio
Profil
juriad:
Do odkazu v hlavičce tabulky vypisuješ to, co ti přijde GETem, nikde neprovádíš inverzi.

Inverze je na 7. řádku. Přepínání při každém kliknutí na sloupec byl záměr.
Nechci se ale dohadovat o detailech, michal28 už myslím dostatek informací dostal.
juriad
Profil
ts_istudio:

Inverze je na 7. řádku. Přepínání při každém kliknutí na sloupec byl záměr.
Aha, nevšiml jsem si. (Dostatečně jsem si nerozebral případy.)

Nechci se ale dohadovat o detailech, michal28 už myslím dostatek informací dostal.
Souhlasím. Počkáme, až se ozve s nějakým problémem.
peta
Profil
juriad: Serad se zmeni, pokud ho odesles getem. Pokud das refresh, kdyz mas v url serad, tak se to logicky zmeni. Vychazim z podminek zadani, nevim, proc mi to vycitas.
Sir Tom
Profil
michal28:
Kdybys použil moje navrhované řešení, tak bys nemusel řešit takové komplikovanosti... :)

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: