Autor Zpráva
akali
Profil *
Ahoj, potřebuju na web vypsat několik řádku a potřebuju je seřadit podle id, ceny, názvu ap..

Takže tady mám select

<form action="./" method=POST>
    <select name="select">
      <option value="id">id</option>
      <option value="cena">cena</option>
    </select>
    <input type="submit" value="ok">    
</form>


a tady php

<?php
// Správné nastavení češtiny.
$objekt_vysledku = mysqli_query($db_spojeni,"SET NAMES 'UTF8'");

// zjištění počtu řádků v tabulce:
$radku=MySQLi_Fetch_Row(MySQLi_Query($db_spojeni,"SELECT COUNT(0) FROM Nabytek"));$radku=$radku[0];

// Zaslání SQL příkazu do databáze.
$strana=IntVal($_GET['strana'])*3; //číselná hodnota ?strana=
$radit=Empty($_POST['select']) ? "cena" : MySQL_Escape_String($_POST['select']);
echo "radit:$radit<br>strana:$strana";
$objekt_vysledku = mysqli_query($db_spojeni,"SELECT * FROM Nabytek ORDER BY $radit") Or Die(MySQLi_Error());


  echo '<h1>',$radek['nazev'],'</h1>';
  echo '<table><tr><td>',$radek['img'],'</td><td>';
  /*oříznutí textu*/ 
  $rest = substr($radek['text'], 0, 500);
  echo $rest;
  /*konec - oříznutí textu*/ 
  echo '<br>Cena <b>',$radek['cena'],'</b> </td></table>';
  $id = $radek['ID'];
 ?>


Když vlezu na stránku, tak je to seřazené podle ID, ale když zvolím cenu, tak se to ani za boha neseřadí, kouknul by mi tu na to někdo? Děkuji mockrát
blazej44800
Profil
tam ako mas..radio 12 pridaj za ORDER BY $radit ASC alebo DESC (to ti zabezpeci ze ti to zoradi zostupne alebo vzostupne) ... dufam ze si myslel to
akali
Profil *
Ne, to jsem nemyslel. Tady je stránka http://kamil.velkyberanov-fotbal.cz/
A když vyberu ID nebo cenu, tak je to pořád stejné a neseřadí se to tak, jak má (teda tak jak chci)
Taps
Profil
akali:
zkus si pomocí echo vypsat sql dotaz a uvidíš co se ti vypíše
blazej44800
Profil
nevem ale mne sa ten kod zda byt zbytocne dlhy.
akali
Profil *
Taps: Jak to vypíšu? Co si tím pomůžu?

blazej44800: A jak by si to zkrátil? Chyba bude jinde, než v délce..
panther
Profil
akali:
Jak to vypíšu?
echo

Co si tím pomůžu?
uvidíš, kde je chyba a mohl sis ušetřit tohle vlákno. Případně si do výpisu přidej i mysql_error().
akali
Profil *
Vím, že pomocí echo, ale jak dál.. Nikdy jsem sql dotaz nevypisoval
panther
Profil
akali:
že by
echo "SELECT * FROM Nabytek ORDER BY $radit"
akali
Profil *
Aha, tak to vypíše přesně toto

SELECT * FROM Nabytek ORDER BY id
nebo
SELECT * FROM Nabytek ORDER BY cena
akali
Profil *
Toto echo "SELECT * FROM Nabytek ORDER BY $radit ASC LIMIT $strana,30"; vypíše

SELECT * FROM Nabytek ORDER BY id ASC LIMIT 0,30
panther
Profil
akali:
už to vidím. Dotaz se provede, ale nikde dál s jeho výsledkem nepracuješ, musíš si nově seřazená data taky vypsat.
akali
Profil *
Vypisuji je o kousek níž, myslel jsem, že tento kód k rozřešení potřebovat nebudete..

Jestli myslíš tohle:

  echo '<h1>',$radek['nazev'],'</h1>';
  echo '<table><tr><td>',$radek['img'],'</td><td>';
  /*oříznutí textu*/ 
  $rest = substr($radek['text'], 0, 500);
  echo $rest;
  /*konec - oříznutí textu*/ 
  echo '<br>Cena <b>',$radek['cena'],'</b> </td></table>';
  $id = $radek['ID'];
panther
Profil
akali:
a proměnnou $radek naplňuješ kde? Po nově vzniklém dotazu skrze cyklus vypiš data z DB znovu, budou nově seřazená, čiliže
while ($radek = mysql_fetch_assoc($objekt_vysledku)) {
//vypis tabulky
}


Co se samotného řazení týče, všimni si, že po změně stránky se vrátí hodnota selektu na empty, POST se napříč stránkami nepřenáší. Výsledek řadícího formuláře si buď někam ulož, nebo řaď parametrem v URL.
akali
Profil *
proměnou $radek mám naplněnou takto

while ($radek = mysqli_fetch_array($objekt_vysledku))
{
echo '<h1>',$radek['nazev'],'</h1>';
echo '<table><tr><td>',$radek['img'],'</td><td>';
/*oříznutí textu*/
$rest = substr($radek['text'], 0, 500);
echo $rest;
/*konec - oříznutí textu*/
echo '<br>Cena <b>',$radek['cena'],'</b> </td></table>';
$id = $radek['ID'];
}

Takže to mám pochopit tak, že musím použít přesměrování, při změně z ID na cenu?
akali
Profil *
Fíha, tak jsem na to přišel.. Nebyla chyba v php kódu, ale v struktuře tabulky.. Byl jsem zoufalej tak jsem prohradával aji DB a přišel jsem an to, že sloupec 'cena' je VARCHAR :(
Achjo, bybý chybičky.. Děkuji vám, pánové!!

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:

0