Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Taulukon tietojen -järjestelijä

Triton [15.08.2008 16:59:46]

#

Tämä skripti siis luo yksinkertaisen taulukon, johon tulostetaan MySQL:stä haetut tiedot, ja sen lisäksi jokaisen sarakkeen otsikosta painamalla pystyy järjestelemään taulukon tiedot sen sarakkeen mukaan nousevassa järjestyksessä. Skripti sopii esim. joihinkin vertailuihin...

Koodi on varsin yksinkertainen ja kommenttien avulla sitä pitäisi olla helppo muokata sopivaksi. Sen toiminta siis vaaitii MySQL:llän ja PHP-tuen, jotta sitä pystyy pyörittämään sen lisäksi taulukon muotoilu kannattaa hoitaa CSS-tiedostolla...

jarjestelija.php

<?php

	# Code by Triton

	//Avataan  muodostetaan yhteydet kantaan
	$connect = mysql_connect("localhost","tunnus","salasana");
	mysql_select_db("esim");

	//Kyselyt
	$main = mysql_query("SELECT * FROM taulukko");
	$auto = mysql_query("SELECT * FROM taulukko ORDER BY auto ASC");
	$malli = mysql_query("SELECT * FROM taulukko ORDER BY vuosimalli ASC");
	$hinta = mysql_query("SELECT * FROM taulukko ORDER BY hinta ASC");

	//Aloitetaan taulukko
	echo "<table border = '1'>";
	echo "<tr bgcolor = '#00FF00'><td bgcolor = '#00FF00'><center><b><a href='?order=auto'>Auto</a></b></center>";
	echo "</td><td bgcolor = '#00FF00'><center><b><a href='?order=malli'>Vuosimalli</a></b></center></td>";
	echo "<td bgcolor = '#00FF00'><center><b><a href='?order=hinta'>Hinta</a></b></center></td>";

	//Tarkistetaan, missä järjestyksessä tiedot järjestellään
	if (isset($_GET['order'])) $order(${$order});

	//Päätetään taulukko
	echo "</table>";

	//Funktiot
	function main($search)
	{
		//Hakee tiedot taulusta
		for ($i = 0; $i < mysql_num_rows($search); $i++)
		{
			//Tallentaan taulun tiedot muuttujiin
			$db_auto = mysql_result($search,$i,"auto");
			$db_vuosimalli = mysql_result($search,$i,"vuosimalli");
			$db_hinta = mysql_result($search,$i,"hinta");

			//Tulostaa rivit
			echo "<tr><td><center>$db_auto</center></td><td><center>$db_vuosimalli</center></td>";
			echo "<td>$db_hinta €</td>";

		}

	}

	function auto($search)
	{
		//Hakee tiedot taulusta
		for ($i = 0; $i < mysql_num_rows($search); $i++)
		{
			//Tallentaan taulun tiedot muuttujiin
			$db_auto = mysql_result($search,$i,"auto");
			$db_vuosimalli = mysql_result($search,$i,"vuosimalli");
			$db_hinta = mysql_result($search,$i,"hinta");

			//Tulostaa rivit
			echo "<tr><td><center>$db_auto</center></td><td><center>$db_vuosimalli</center></td>";
			echo "<td>$db_hinta €</td>";

		}

	}

	function malli($search)
	{
		//Hakee tiedot taulusta
		for ($i = 0; $i < mysql_num_rows($search); $i++)
		{
			//Tallentaan taulun tiedot muuttujiin
 			$db_auto = mysql_result($search,$i,"auto");
			$db_vuosimalli = mysql_result($search,$i,"vuosimalli");
			$db_hinta = mysql_result($search,$i,"hinta");

			//Tulostaa rivit
			echo "<tr><td><center>$db_auto</center></td><td><center>$db_vuosimalli</center></td>";
			echo "<td>$db_hinta €</td>";

		}

	}

	function hinta($search)
	{
		//Hakee tiedot taulusta
		for ($i = 0; $i < mysql_num_rows($search); $i++)
		{
			//Tallentaan taulun tiedot muuttujiin
			$db_auto = mysql_result($search,$i,"auto");
			$db_vuosimalli = mysql_result($search,$i,"vuosimalli");
			$db_hinta = mysql_result($search,$i,"hinta");

			//Tulostaa rivit
			echo "<tr><td><center>$db_auto</center></td><td><center>$db_vuosimalli</center></td>";
			echo "<td>$db_hinta €</td>";

		}

	}


?>

Metabolix [25.08.2008 13:50:59]

#

vinkki kirjoitti:

if (isset($_GET['order'])) $order(${$order});

Register globals päällä, vai? Unohdit nimittäin hakea sen muuttujan taulukosta. Voisit myös miettiä itse uudestaan tuota koodin ajatusta, sinulla on neljä identtistä funktiota. Taulukoistasi puuttuvat rivien lopetukset (</tr>). Kaiken kukkuraksi teet aivan turhaan kaikki neljä hakua joka kerta.

Katselepa tätä:

<?php
// Sallitut järjestelytavat
$orders = array(
  "hinta_asc" => "ORDER BY hinta ASC",
  "hinta_desc" => "ORDER BY hinta DESC",
  "auto_asc" => "ORDER BY auto ASC",
  "auto_desc" => "ORDER BY auto DESC",
);
// Haetaan syöte
$order = "";
if (isset($_GET["order"])) {
  $order = $_GET["order"];
}

// Linkit
$link_orders = array(
  "auto" => $order == "auto_asc" ? "auto_desc" : "auto_asc",
  "hinta" => $order == "hinta_asc" ? "hinta_desc" : "hinta_asc",
);
echo "<tr><td><a href='?order={$link_orders["auto"]}'>Auto</a></td><td><a href='?order={$link_orders["hinta"]}'>Hinta</a></td></tr>";

// Valitaan taulukosta sallittu MySQL-pätkä
if (isset($orders[$order])) {
  $order = $orders[$order];
} else {
  $order = "";
}
// Haetaan tuotteet
$tulos = mysql_query("SELECT * FROM taulu $order");
while ($rivi = mysql_fetch_assoc($tulos)) {
  echo "<tr><td>{$rivi["auto"]}</td><td>{$rivi["hinta"]}</td></tr>\n";
}
?>

Vastaus

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

Tietoa sivustosta