Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Buttonin simulointi

Sivun loppuun

Rocceri [27.05.2009 16:18:23]

#

Terve

Putkassa onkin jo aihe tästä, mutta teinpä uuden.
Itselläni on lomake, jonka haluaisin toimivan näin:
Sivulla on radiobutton nimeltään suunta. Kun nappulaa painaa, tämä "valiintuu" ja lähetää tämän.

Toisessa aiheessa sanottiin, että näin:

<form name="lomake">
...
</form>
<div onmouseover="document.getElementById('lomake').submit()">moi</div>

Tämä on muuten hyvä, paitsi tuota hiirtä ei saa vedettyä tuosta moi sanan päältä ennen kuin tekee tämän uudelleen. Toinenkin juttu tässä on huono, että tämä toiminto siis pitäisi tapahtua kun nappia painetaan, eikä mennä siihen päälle. Tiedän, että tuo onmouseover tekee tuon, mutta en osaa javascriptiä niin paljon, että osaisin muokata.

EDIT: Sain toimimaan kun laitoin onmouseoverin tilalle onclick.
Mutta, kun tuota painaa, ja haen PHP:llä onko se true vai ei, niin miten saan laitettua niin, että jos lomake on lähetetty truena niin se näyttäisi buttonin vielä truena.

EDIT2: En koittanut loppun asti. Kun nappulaa painaa ekan karran, se toimii niin että arvo on truena. Mutta kun painaa uudelleen, sen pitäisi lähettää se falsena. Se vain ei toimi... :O Miten tehdään tämmöinen?

EDIT3: Lisäänpäs koodin selventääkseni tilannetta.

<?php
echo "<html>\n<head>\n<title>MySQL kyselyt</title>\n</head>\n<body>\n";
?>
<form action="" method="post" name="lomake">
Paina nappulaa kääntääksesi hintajärjestyksen.<br>
<div onclick="document.getElementById('lomake').submit()"><input type="radio" name="suunta">
<?php
$suunta2 = $_POST["suunta"];
if ($suunta2 == false) {
echo "Halvin ensimmäiseksi";
} elseif ($suunta2 == true) {
echo "Kallein ensimmäiseksi";
}
?>
</div>
</form>

<?php
$jarjestys = $_POST["suunta"];

//Luodaan yhteys...
$yhteys = mysql_connect("localhost", "", "") or die("Virhe yhdistämisessä");
//... tietokantaan test.
mysql_select_db("test") or die ("Virhe valittaessa tietokantaa");

//Luodaan taulu
mysql_query("CREATE TABLE varasto (nimi TEXT, hinta INT (6), maara INT (4))");

//Tarkistetaan, ettei ole tyhjä, jos mikään ei ole, niin kirjoitetaan tauluun
if(!empty($_GET['tuote'])) {
 if(!empty($_GET['hinta'])) {
  if(!empty($_GET['maara'])) {
   mysql_query("INSERT INTO varasto (nimi, hinta, maara) VALUES ('".$_GET['tuote']."', '".$_GET['hinta']."', '".$_GET['maara']."')");
  }
 }
}
//Järjestys listalle
if ($jarjestys == true) {
$kysely = "SELECT * FROM varasto ORDER BY hinta"; }
elseif ($jarjestys == false) {
$kysely = "SELECT * FROM varasto ORDER BY hinta DESC"; }


//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

echo "<table border>\n";
echo "<tr><td><b>Tuotteen nimi: </b></td><td><b>Hinta: </b></td><td><b>Myymälässä: </b></td></tr>";
//käydään tavarat läpi
for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   //haetaan nimi, hinta ja määrä muuttujiin
   $nimi = mysql_result($haku, $i, "nimi");
   $hinta = mysql_result($haku, $i, "hinta");
   $maara = mysql_result($haku, $i, "maara");

   //tulostetaan taulukon rivi
   echo "<tr><td>$nimi</td><td>$hinta €</td><td>$maara kpl</td></tr>";
}
echo "</table>\n";

echo "</body>\n</html>";
?>

Teuro [27.05.2009 17:12:25]

#

Itse saattaisin tehdä näin.

<?php
if(isset($_GET['jarjestys'])){
    $jarjestys = siivoaSyote($_GET['jarjestys']);
    /* Hiukka haastetta peliin */
    $suunta = isset($_GET['suunta']) ? "DESC" : "ASC";

    $kysely = "SELECT Nimi, Hinta, Maara FROM autot ORDER BY $jarjestys $suunta";

    if(mysql_query($kysely, $yhteys)){

    }else{
        echo mysql_error();
    }
}
?>

Rocceri [27.05.2009 17:24:45]

#

Mutta, jos käytetään tuota mitä aloitusviestissä mainitsin, niin miten tämä laitetaan toimimaan myös jälkeenpäin?
Eli, kun menee sivulle, järjestys on kallein ekana, ja kun painaa nappulaa niin järjestys kääntyy. Mutta kun uudelleen painaa, se ei tee mitään kun järjestyksen pitäisi kääntyä taas.

Tämä johtuu varmaankin siitä, että tuolla truella on vain yksi arvo, ja kun nappulaa painaa, niin se lähettää lomakkeen truena ja nollaa lomakkeen. Sitten seuraava painallus on taas true arvona. Miten voisi laittaa tuon lomakkeen niin, että buttonin painalluksen jälkeen se ei nollaantuisi? Tai, miten te tekisitte tällä tyylillä?

Teuro [27.05.2009 17:34:46]

#

Kuten edellä kerroin, joskaan tuo koodi ei ota kantaa siihen miten tuo data lähetetään. Tuo toimii esimerkiksi näin.

<?php
/* Hinnan mukaan laskevaan järjestykseen */
echo "<a href=\"tulos.php?jarjestys=Hinta&amp;suunta\">Hinta</a>";
/*Määrän mukaan nousevaan järjestykseen */
echo "<a href=\"tulos.php?jarjestys=Maara\">Määrä</a>
?>

Lomakkeella menisi seuraavasti.

<?php
echo "<form action=\"tulos.php\" method=\"get\">";
echo "<select name=\"jarjestys\">";
echo "<option value=\"Nimi\">Nimi</option>";
echo "<option value=\"Hinta\">Hinta</option>";
echo "<option value=\"Maara\">Määrä</option>";
echo "</select>";
echo "<input type=\"checkbox\" name=\"suunta\" value=\"\" />";
echo "<input type=\"submit\" />";
echo "</form>";
?>

Rocceri [27.05.2009 17:51:36]

#

Helpoiten saisin väsättyä, jos saisi tuolle radiobuttonille jonkun selected arvon. Onko siihen sellaista kuin select listoihin SELECTED?

Teuro [27.05.2009 17:57:08]

#

Mitähän ihmettä mahdat nyt tarkoittaa? Radiobuttonille on olemassa samanlainen checked atribuutti kuin checkboxillekin, mutta en nyt oikein ymmärrä miten se tähän liittyy.

Lisäys:
Luulen, että tajusin mitä ajat takaa, joten alla on runkoa, johon voit itse lisätä puuttuvat kohdat.

<?php
$kentta = "Hinta";
$suunta = isset($_GET['suunta']) ? "ASC" : "DESC";

if(isset($_GET['jarjestys'])){
    $kentta = /* Täytä itse */
}

$kysely = "SELECT ?, ?, ? FROM ? ORDER BY ? ?";

?>

Tuolta pohjalta ponnistamaan vaan.

Rocceri [27.05.2009 18:37:52]

#

Oho, tuli kirjoitusvirhe. Tarkoitin tuolla selected jutulla juuri tätä checked juttua. :D Niin, ajattelin, että jos koodi on lähettänyt tämän true arvon nappulasta, niin se lukuu PHP:llä sitten sen ja lisää tuon checked sanan sinne buttoniin.
Tuli pieni väärinkäsitys aivojeni ja tietämykseni kanssa. Ajattelin, että silloin tuo arvo pysyisi truena (niinhän se pysyykin) ja ajattelin, että kun tätä painaa uudelleen se pyyhkisi true arvon falseksi... Mutta ei mennytkään näin.

<?php
echo "<html>\n<head>\n<title>MySQL kyselyt</title>\n</head>\n<body>\n";
?>
<form action="" method="post" name="lomake">
Paina nappulaa kääntääksesi hintajärjestyksen.<br>
<div onclick="document.getElementById('lomake').submit()"><input type="radio" name="suunta"<?php $gg = $_POST["suunta"]; if ($gg == true) echo "checked";?>>
<?php
$suunta2 = $_POST["suunta"];
if ($suunta2 == false) {
echo "Halvin ensimmäiseksi";
} elseif ($suunta2 == true) {
echo "Kallein ensimmäiseksi";
}
?>
</div>
</form>

<?php
$jarjestys = $_POST["suunta"];

//Luodaan yhteys...
$yhteys = mysql_connect("localhost", "", "") or die("Virhe yhdistämisessä");
//... tietokantaan test.
mysql_select_db("") or die ("Virhe valittaessa tietokantaa");

//Luodaan taulu
mysql_query("CREATE TABLE varasto2 (nimi TEXT, hinta INT (6), maara INT (4))");

//Tarkistetaan, ettei ole tyhjä, jos mikään ei ole, niin kirjoitetaan tauluun
if(!empty($_GET['tuote'])) {
if(!empty($_GET['hinta'])) {
  if(!empty($_GET['maara'])) {
   mysql_query("INSERT INTO varasto2 (nimi, hinta, maara) VALUES ('".$_GET['tuote']."', '".$_GET['hinta']."', '".$_GET['maara']."')");
  }
}
}
//Järjestys listalle
if ($jarjestys == true) {
$kysely = "SELECT * FROM varasto2 ORDER BY hinta"; }
elseif ($jarjestys == false) {
$kysely = "SELECT * FROM varasto2 ORDER BY hinta DESC"; }


//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

echo "<table border>\n";
echo "<tr><td><b>Tuotteen nimi: </b></td><td><b>Hinta: </b></td><td><b>Myymälässä: </b></td></tr>";
//käydään tavarat läpi
for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   //haetaan nimi, hinta ja määrä muuttujiin
   $nimi = mysql_result($haku, $i, "nimi");
   $hinta = mysql_result($haku, $i, "hinta");
   $maara = mysql_result($haku, $i, "maara");

   //tulostetaan taulukon rivi
   echo "<tr><td>$nimi</td><td>$hinta €</td><td>$maara kpl</td></tr>";
}
echo "</table>\n";

echo "</body>\n</html>";
?>

Ajattelin näin sen.. Mutta eihän tuo tietenkään ole oikein ajatukseni kannalta... :S

TeNDoLLA [27.05.2009 18:46:00]

#

Hieman ehkä offtopic, mutta tein tuossa pikaisesti tämmöisen, tyylillä jonka olen todennut itse mukavaksi käyttää. Eli Kolumnin tiedot järjestetään otsikossa olevan linkin avulla joko ASC tai DESC riippuen siitä mikä valinta oli viimeksi. Eli linkkiä uudelleen klikkaamalla vaihtuu järjestys aina.

HUOM: Tämä on vain nopeasti sipaistu raakile, jossa ei ole järjestetty dataa eri kolumnien perusteella (jos olisi useampia kolumneja), vaan pelkästään yksi testi kolumni joko ASC tai DESC. Myös tietoturvaan ei ole kiinnitetty sen enemmin huomiota. Jos kiinnostaa niin tuosta voi soveltaa omaan systeemiin jotain. Koodi voi myös sisältää virheitä / ajatuskatkoksia.

<?php
session_start(); // Aloitetaan session
$link = mysql_connect('localhost', 'test', 'test') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());

// Jos käyttäjältä tulee sorttaus pyyntö
if (isset($_GET['order']) && isset($_SESSION['lastOrder']))
{
	// Jos käyttäjä on sortannu jo aikaisemmin, tarkistetaan viimeisin sorttaus järjestys
	if (isset($_SESSION['lastOrder']))
	{
		// Jos viimeisin oli ASC niin, silloin tämän hetkisen pitää olla DESC, jolloin
		if ($_SESSION['lastOrder'] === 'ASC' && $_GET['order'] === 'DESC')
		{
			$order = "DESC"; // order laitetaan DESCiksi, käytetään SQL kyselyn muodostamiseen
			$_SESSION['lastOrder'] = 'DESC'; // tätä käytetään muutoksen havaitsemiseen
			$nextOrder = 'ASC'; // ja määritetään linkille seuraavaksi järjestykseksi päinvastainen
		}
		// Jos viimeisin oli DESC, niin tehdään ylläolevat päinvastoin
		else if ($_SESSION['lastOrder'] === 'DESC' && $_GET['order'] === 'ASC')
		{
			$order = 'ASC';
			$_SESSION['lastOrder'] = 'ASC';
			$nextOrder = 'DESC';
		}
		else
		{
			// Muussa taoauksessa laitetaan defaultit aina
			// Esim. käyttäjä syöttää jotain epämääräistä sorttiin osoite riviltä
			$order = 'ASC';
			$_SESSION['lastOrder'] = 'ASC';
			$nextOrder = 'DESC';
		}
	}
}
else
{
	// Tämä ajetaan ekan kerran sivulle tullessa ja laitetaan defaultit alussa.
	$order = 'ASC';
	$_SESSION['lastOrder'] = 'ASC';
	$nextOrder = 'DESC';
}

$query = "SELECT data FROM testi ORDER BY data $order";
$r = mysql_query($query, $link) or die(mysql_error());

echo '<table border="1"><tr><td><a href="?&sortBy=data&order='. $nextOrder. '">Sort data</a></td></tr>';
while ($row = mysql_fetch_row($r))
{
	echo '<tr><td>'. $row[0] .'</td></tr>';
}
echo '</table>';
?>

Rocceri [27.05.2009 19:55:23]

#

Tein nyt sitten tällä tavalla kun ei millään muuten onnistu:

<?php
echo "<html>\n<head>\n<title>MySQL kyselyt</title>\n</head>\n<body>\n";
?>
<form action="" method="post" name="lomake">
Paina nappulaa kääntääksesi hintajärjestyksen.<br>
<div onclick="document.getElementById('lomake').submit()"><input type="radio" name="suunta"> Halvin ensin</div>
<div onclick="document.getElementById('lomake').submit()"><input type="radio" name="suunta2"> Kallein ensin</div>
</form>

<?php
$jarjestys = $_POST["suunta"];
$jarjestys2 = $_POST["suunta2"];

//Luodaan yhteys...
$yhteys = mysql_connect("localhost", "yllapito", "aaa123") or die("Virhe yhdistämisessä");
//... tietokantaan test.
mysql_select_db("yllapito") or die ("Virhe valittaessa tietokantaa");

//Luodaan taulu
mysql_query("CREATE TABLE varasto (nimi TEXT, hinta INT (6), maara INT (4))");

//Tarkistetaan, ettei ole tyhjä, jos mikään ei ole, niin kirjoitetaan tauluun
if(!empty($_GET['tuote'])) {
if(!empty($_GET['hinta'])) {
  if(!empty($_GET['maara'])) {
   mysql_query("INSERT INTO varasto (nimi, hinta, maara) VALUES ('".$_GET['tuote']."', '".$_GET['hinta']."', '".$_GET['maara']."')");
  }
}
}
//Järjestys listalle
if ($jarjestys == true) {
$kysely = "SELECT * FROM varasto ORDER BY hinta"; }
elseif ($jarjestys == false) {
$kysely = "SELECT * FROM varasto ORDER BY hinta DESC"; }


//suoritetaan kysely
$haku = mysql_query($kysely, $yhteys) or die("Virhe kyselyssä!");

echo "<table border>\n";
echo "<tr><td><b>Tuotteen nimi: </b></td><td><b>Hinta: </b></td><td><b>Myymälässä: </b></td></tr>";
//käydään tavarat läpi
for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   //haetaan nimi, hinta ja määrä muuttujiin
   $nimi = mysql_result($haku, $i, "nimi");
   $hinta = mysql_result($haku, $i, "hinta");
   $maara = mysql_result($haku, $i, "maara");

   //tulostetaan taulukon rivi
   echo "<tr><td>$nimi</td><td>$hinta €</td><td>$maara kpl</td></tr>";
}
echo "</table>\n";

echo "</body>\n</html>";
?>

Mutta, haluisin laitettua nuo kaksi nappia näin: Jos sivulle tulee, niin name on suunta. Kun tätä klikkaa niin name muuttuukin suunta2:ksi (Sitä kun klikkaa, se muuttuu suunta:ksi jne...). Miten tämä onnistuu?
Ja, että olisi siis yksi nappi mistä tämä siis tapahtuu. Voisi kumpaankin suuntaan säätää järjestystä.

TeNDoLLA [27.05.2009 20:58:48]

#

Tuossa mun ylemmässä esimerkissä on just se periaate, että on yks nappi ja sitä aina uudelleen painamalla suunta vaihtuu vastakkaiseksi. Pystyt testaamaan tuota helposti copy&paste johonkin php filuun ja vaihtamalla vain mysqliä koskevat tiedot omiksesi sekä muuttamalla queryä niin, että se hakee kentän tiedot, joka sulla on olemassa. Testaamalla käytännössä ja tutkimalla koodia kun ymmärrät periaatteen miten se yhden napin suunnan vaihto tehdään voit sen myös tehdä tuohon omaan koodiisi. Periaate lyhyesti: sun pitää tietää mikä suunta oli viimeksi kun suuntaa vaihdettiin ja sen mukaan sitten päättää mihin päin suuntaa vaihdetaan seuraavalla kerralla kun sitä nappia klikataan.

Teuro [27.05.2009 21:19:38]

#

Loogisesti kaiketi kuitenkin sarakkeiden otsikoita klikkaamalla järjestyksen tulisi muuttua. Eikä tuota tarvitse ihan oikeasti tehdä noin hankalasti, koska tuo mun esittämä tapa toimii aivan niin hyvin kuin on tarpeellista.

Tässä vielä toimivaksi todettu koodipätkä.

<?php
$kentta = "nimi";
$suunta = isset($_GET['suunta']) ? "ASC" : "DESC";

if(isset($_GET['jarjestys'])){
    $kentta = $_GET['jarjestys'];
}

$kysely = "
SELECT
  koirat.id AS id,
  CONCAT(etunimi, ' ', sukunimi) AS omistaja,
  nimi,
  email,
  rekisteri
FROM
  koirat,
  henkilot
WHERE
  koirat.omistaja = henkilot.id
AND
  koirat.jalostus = 1
ORDER BY
  $kentta $suunta";

$urokset = mysql_query($kysely);

for($a = 1; $a < mysql_num_fields($urokset); $a++){
	$th = $sivu->createElement( "th");
	$otsikko = mysql_field_name($urokset, $a);
	$linkki = $sivu->createElement("a", $otsikko);
	$osoite = isset($_GET['suunta']) ? "?$otsikko" : "?jarjestys=$otsikko&suunta";
	$linkki->setAttribute("href", $osoite);
	$th->appendChild($linkki);
	$tr->appendChild( $th );
}
?>

Rocceri [27.05.2009 22:16:07]

#

Tuo sun postaamas koosi Tendolla.. Voinko heittää koodiini vain tuon session systeemin, ja sitten tulostaa noilla sen linkin + laittaa omat kselyt tuon sun tilalle? Vai pitääkö noi olla kaikki, ja heittää niiden perään sitten omat? Jos sulla on aikaa, niin voitko yhdistää nuo koodit ´keskenään, niin hoksaisin.. Esimerkistä oppii.. :)

TeNDoLLA [27.05.2009 22:59:20]

#

Todellakin, tuo Teuron esittämä tekee saman minkä aikaisemmin tein vaikeamman kautta. Tässä olisi siis yksinkertaisuudessaan samaan tyyliin kuin Teurolla tehty tuo mun aikaisempi pätkä (hieman lyhyempi ja selvempi nyt).

<?php
$link = mysql_connect('localhost', 'test', 'test') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());

$order = isset($_GET['order']) ? 'ASC' : 'DESC'; // Rivi 1
$url = isset($_GET['order']) ? '?' : '?order'; // Rivi 2

$query = "SELECT data FROM testi ORDER BY data $order"; // Rivi 3
$r = mysql_query($query, $link) or die(mysql_error());

echo '<table border="1"><tr><td><a href="'. $url .'">Sort data</a></td></tr>'; // Rivi 4
while ($row = mysql_fetch_row($r))
{
	echo '<tr><td>'. $row[0] .'</td></tr>';
}
echo '</table>';
?>

Roccerin kannattaisi sisäistää tämä käytäntö näillä esimerkeillä mitä tässä threadissa on tullut jo enemmänkin esille. Eli ei ole mitään järkeä mun mielestä tehdä erikseen napeilla noita sorttauksia, koska se käy tuolla otsikossa olevalla linkillä todella kätevästi.

Tuossa on käytännössä 4 riviä, jotka vaikuttaa tuohon sorttaukseen. Sen läpi käyminen ajatuksella ei varmaan mahdotonta.
Rivi 1: Asetetaan sorttaus järjestys SQL kyselyä varten.
Rivi 2: Luodaan linkille osoite.
Rivi 3: Lisätty vain SQL lauseeseen järjestys, joka tulee $_GET['order'] muuttujan perusteella.
Rivi 4: Tulostetaan linkki.

Edit: Jos haluaa hifistellä, niin kannattaa eka saada yksinkertaisesti asia toimimaan. Kun tuo linkki toimii, niin linkinhän saa muotoilta vaikka millaseks CSS:llä myöhemmin (myös napiksi/kuvaksi) sekä siirrettyä mihin kohtaa sivua vain.

Edit2: Tuossa alla on nyt tuo tapa yhdistettynä sinun aikaisempaan koodiin.

<?php
$yhteys = mysql_connect('localhost', 'test', 'test') or die('Virhe yhdistämisessä');
mysql_select_db("test") or die ('Virhe valittaessa tietokantaa');

$suunta = isset($_GET['suunta']) ? 'ASC' : 'DESC';
$linkki = isset($_GET['suunta']) ? '' : '&suunta';
$otsikko = isset($_GET['otsikko']) ? $_GET['otsikko'] : 'nimi';

$kysely = "SELECT * FROM varasto ORDER BY $otsikko $suunta";
$haku = mysql_query($kysely, $yhteys) or die('Virhe kyselyssä!');

echo '<table border>';
echo '<tr><td><b><a href="?otsikko=nimi'. $linkki .'">Tuotteen nimi:</a></b></td>
      <td><b><a href="?otsikko=hinta'. $linkki .'">Hinta: </a></b></td>
      <td><b><a href="?otsikko=maara'. $linkki .'">Myymälässä: </a></b></td></tr>';

for ($i = 0; $i < mysql_num_rows($haku); $i++) {
   $nimi = mysql_result($haku, $i, 'nimi');
   $hinta = mysql_result($haku, $i, 'hinta');
   $maara = mysql_result($haku, $i, 'maara');
   echo '<tr><td>'. $nimi .'</td><td>'. $hinta .'€</td><td>'. $maara .'kpl</td></tr>';
}
echo '</table>';
?>

Rocceri [28.05.2009 08:26:24]

#

Hienoa TeNDoLLA! Tuolta pohjalta saan väännettyä tarvittavat toiminnot. :)

TeNDoLLA [14.06.2009 04:08:14]

#

Teurolle (ja muillekin) kysymys: kun käyttää tuolla tavalla sortingia, että aina kun tulee $_GET['suunta'] niin tehdään suunnan muutos. Ja kuljetetaan tuota suuntaa urlissa, niin mitenkäs sitten kun lyödään siihen kaveriksi sivutus kulkemaan urlissa myös?

Eli silloinhan kun sivua vaihdetaan, niin vaihdetaan myös suuntaakin. Ja tämähän ei ole tarkoitus silloin, vaan suunnan pitäisi pysyä samana aina kun sivua vaihdetaan.

Teuro [14.06.2009 08:04:45]

#

Eihän suuntaa vaihdeta aina, kun tulee $_GET['suunta']. Mikäli $_GET['suunta'] on asetettu tulee sorting olemaan ASC ja vastaavasti, jos se ei ole asetettu tulee sorting olemaan DESC. Sivutuksen parametriä voi kuljettaa ihan samalla tavalla urlin mukana. Sivutuksen tuottavassa rakenteessa pitää vain huomioida minkälaiset parametrit on ohjelmalle lähetetty.

<?php
require_once("liita/ylaosa.php");
$sivu = new DOMDocument("1.0", "ISO-8859-1");
$sivu -> formatOutput = true;

$html = $sivu -> createElement("html");
$sivu -> appendChild($html);

$head = $sivu -> createElement("head");
$html -> appendChild($head);

$title = $sivu -> createElement("title", "manssi.net :: koiralista");
$head -> appendChild($title);

$body = $sivu -> createElement("body");
$html -> appendChild($body);

$con = $sivu -> createElement("div");
$con -> setAttribute("id", "content");
$body -> appendChild($con);

/**
	* Haetaan kannasta kaikki koirat
*/

$kentta = isset($_GET['jarjestys']) ? $_GET['jarjestys'] : "nimi";
$suunta = isset($_GET['suunta']) ? "ASC" : "DESC";
$maara = isset($_GET['maara']) ? $_GET['maara'] : 10;
$alku = isset($_GET['alku']) ? $_GET['alku'] : 0;

$kysely = "SELECT nimi, rekisteri FROM koirat ORDER BY $kentta $suunta LIMIT $alku, $maara";

$koiria = mysql_result(mysql_query("SELECT COUNT(*) AS maara FROM koirat"), 0, 0);

$kpl = $sivu -> createElement("p", $kysely);
$con -> appendChild($kpl);

$koirat = mysql_query($kysely);

$kpl = $sivu -> createElement("p", mysql_error());
$con -> appendChild($kpl);

$table = $sivu -> createElement("table");
$con -> appendChild($table);

$tr = $sivu -> createElement("tr");
$table -> appendChild($tr);

for($a = 0; $a < mysql_num_fields($koirat); $a++){
    $th = $sivu->createElement("th");
    $otsikko = mysql_field_name($koirat, $a);
    $linkki = $sivu->createElement("a", $otsikko);
	$osoite = isset($_GET['suunta']) ? "?jarjestys=$otsikko" : "?jarjestys=$otsikko&suunta";
    $linkki->setAttribute("href", $osoite);
    $th->appendChild($linkki);
    $tr->appendChild($th);
}

for($a = 0; $a < mysql_num_rows($koirat); $a++){
	$rivi = mysql_fetch_array($koirat);
	$tr = $sivu -> createElement("tr");
	$table -> appendChild($tr);

	$td = $sivu->createElement("td", utf8_encode($rivi['nimi']));
	$tr->appendChild($td);

	$td = $sivu->createElement("td", $rivi['rekisteri']);
	$tr->appendChild($td);
}

$ul = $sivu->createElement("ul");
$con->appendChild($ul);

for($a = 0; $a < ($koiria / $maara); $a++){
	if($a == ($alku / $maara)){
		$li = $sivu -> createElement("li", $a+1);
		$li->setAttribute("style", "font-weight: bold;");
	}else{
		$li = $sivu -> createElement("li");
		$li->setAttribute("style", "font-weight: none;");
		$linkki = $sivu->createElement("a", $a+1);
		$suunta = isset($_GET['suunta']) ? "&suunta" : "";
		$osoite = "?jarjestys=$kentta$suunta";
		$linkki->setAttribute("href", $osoite . "&alku=" . $a * $maara);
		$li->appendChild($linkki);
	}
	$ul->appendChild($li);
}

echo $sivu -> saveXML();
?>

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta