Etusivulle

Sivun PHP-lähdekoodin näyttäminen

Alla on sivun katakanahiragana.php PHP-lähdekoodi.


<?PHP include ("_funktiot.php"); ?>
<?PHP NaytaSivunAlku ("Ohjelma katakana- ja hiragana-merkkien harjoitteluun"); ?>

<?PHP

$merkisto = "katakana";
if ($_GET["merkisto"] == "h") $merkisto = "hiragana";

// Taulukko merkeistä.
// array(latinalaisen vastineen alkuosa => array(latinalaisen vastineen loppuosa => japanilainen merkki, ...
// Alkuosissa "x" ja "_" eivät tarkoita mitään.

if ($merkisto == "katakana") {
	// Katakanat
	$merkit = array(
	"x" => array("a" => "&#12450;", "i" => "&#12452;", "u" => "&#12454;", "e" => "&#12456;", "o" => "&#12458;"),
	"k" => array("a" => "&#12459;", "i" => "&#12461;", "u" => "&#12463;", "e" => "&#12465;", "o" => "&#12467;"),
	"s" => array("a" => "&#12469;", "i" => "&#12471;", "u" => "&#12473;", "e" => "&#12475;", "o" => "&#12477;"),
	"t" => array("a" => "&#12479;", "i" => "&#12481;", "u" => "&#12484;", "e" => "&#12486;", "o" => "&#12488;"),
	"n" => array("a" => "&#12490;", "i" => "&#12491;", "u" => "&#12492;", "e" => "&#12493;", "o" => "&#12494;"),
	"h" => array("a" => "&#12495;", "i" => "&#12498;", "u" => "&#12501;", "e" => "&#12504;", "o" => "&#12507;"),
	"m" => array("a" => "&#12510;", "i" => "&#12511;", "u" => "&#12512;", "e" => "&#12513;", "o" => "&#12514;"),
	"y" => array("a" => "&#12516;", "u" => "&#12518;", "o" => "&#12520;"),
	"r" => array("a" => "&#12521;", "i" => "&#12522;", "u" => "&#12523;", "e" => "&#12524;", "o" => "&#12525;"),
	"w" => array("a" => "&#12527;", "o" => "&#12530;"),
	"_" => array("-n" => "&#12531;", "vokaalin pidennys" => "&#12540;"),
	);

} else {
	// Hiraganat
	$merkit = array(
	"x" => array("a" => "&#12354;", "i" => "&#12356;", "u" => "&#12358;", "e" => "&#12360;", "o" => "&#12362;"),
	"k" => array("a" => "&#12363;", "i" => "&#12365;", "u" => "&#12367;", "e" => "&#12369;", "o" => "&#12371;"),
	"s" => array("a" => "&#12373;", "i" => "&#12375;", "u" => "&#12377;", "e" => "&#12379;", "o" => "&#12381;"),
	"t" => array("a" => "&#12383;", "i" => "&#12385;", "u" => "&#12388;", "e" => "&#12390;", "o" => "&#12392;"),
	"n" => array("a" => "&#12394;", "i" => "&#12395;", "u" => "&#12396;", "e" => "&#12397;", "o" => "&#12398;"),
	"h" => array("a" => "&#12399;", "i" => "&#12402;", "u" => "&#12405;", "e" => "&#12408;", "o" => "&#12411;"),
	"m" => array("a" => "&#12414;", "i" => "&#12415;", "u" => "&#12416;", "e" => "&#12417;", "o" => "&#12418;"),
	"y" => array("a" => "&#12420;", "u" => "&#12422;", "o" => "&#12424;"),
	"r" => array("a" => "&#12425;", "i" => "&#12426;", "u" => "&#12427;", "e" => "&#12428;", "o" => "&#12429;"),
	"w" => array("a" => "&#12431;", "o" => "&#12434;"),
	"_" => array("-n" => "&#12435;"),
	);
}

function MuotoileNaytettavaksi($alku, $loppu) {
	// Merkkien latinalaiset nimet ohjelman sisäisestä esitysmuodosta käyttäjälle näytettäväksi

	if ($alku == "x" || $alku == "_") $alku = "";
	$tavu = $alku . $loppu;

	if ($tavu == "si") return "shi";
	if ($tavu == "ti") return "chi";
	if ($tavu == "tu") return "tsu";
	if ($tavu == "hu") return "fu";

	return $tavu;
}

?>

Katakana ja hiragana ovat japanin kielessä käytettävät tavumerkistöt. Tällä ohjelmalla voit harjoitella joidenkin niihin kuuluvien merkkien tunnistamista. Ohjelma näyttää valitut merkit satunnaisessa järjestyksessä. Mukana ei ole mm. &#12443;- ja &#12444;-tarkkeilla varustettuja merkkejä eikä kahden merkin yhdistelmiä, koska ne muodostuvat lähes säännöllisesti perusmerkeistä. Puuttuvat merkit kannattaa opetella esim. Wikipedian <A HREF="http://en.wikipedia.org/wiki/Katakana">katakana</A>- ja <A HREF="http://en.wikipedia.org/wiki/Hiragana">hiragana</A>-sivuilta, joita olen käyttänyt lähteinä.

<P><HR><P>

<FORM NAME="asetuslomake" METHOD="get" ACTION="katakanahiragana.php">

<?PHP

echo "<INPUT TYPE=\"hidden\" NAME=\"merkisto\" VALUE=\"";
if ($merkisto == "katakana") echo "k"; else echo "h";
echo "\">\r\n";

echo "Merkistö:\r\n";
if ($merkisto == "katakana") echo "<B>katakana</B>"; else echo "<A HREF=\"katakanahiragana.php?merkisto=k\">katakana</A>";
echo " | \r\n";
if ($merkisto == "hiragana") echo "<B>hiragana</B>"; else echo "<A HREF=\"katakanahiragana.php?merkisto=h\">hiragana</A>";
echo "\r\n";
echo "<P>\r\n";

echo "Harjoiteltavat merkit:\r\n";
echo "<BR>\r\n";

// Näytetään checkboxit
foreach ($merkit as $alkukons => $tavut) {
	echo "<INPUT TYPE=\"checkbox\" NAME=\"" . $alkukons . "\" VALUE=x";
	if (array_search($alkukons, array_keys($_GET)) !== false) echo " CHECKED";
	echo "> ";

	// Näytetään konsonantin tavut
	$tulostus = "";
	foreach (array_keys($tavut) as $loppuosa) {
		$tulostus .= MuotoileNaytettavaksi($alkukons, $loppuosa) . ", ";
	}
	echo substr($tulostus, 0, -2);   // Viimeinen pilkku ja välilyönti pois

	echo "<BR>\r\n";
}

?>

<P>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">

function Valitse(param) {
	// Merkintä tai sen poistaminen kaikkiin asetuslomakkeen checkboxeihin
	maara = document.asetuslomake.elements.length - 3;
	for (i = 0; i < maara; i++) {
		document.asetuslomake.elements[i].checked = param;
	}
}

function NaytaVastaus(kentta, teksti) {
	// Yhden vastauksen näyttäminen tehtävälomakkeella
	document.tehtavalomake.elements[2 + kentta * 2].value = teksti;
}

function KaikkiVastauksetPois() {
	// Kaikkien vastausten piilottaminen tehtävälomakkeelta
	maara = (document.tehtavalomake.elements.length - 2) / 2;
	for (i = 0; i < maara; i++) {
		document.tehtavalomake.elements[2 + i * 2].value = "";
	}
}

</SCRIPT>

<INPUT TYPE="button" VALUE="Valitse kaikki" onClick="Valitse(true);">
<INPUT TYPE="button" VALUE="Poista valinnat" onClick="Valitse(false);">
<P>
<INPUT TYPE="submit" VALUE="Päivitä sivu / arvo uusi järjestys">

</FORM>

<P><HR><P>

<FORM NAME="tehtavalomake" METHOD="get" ACTION="eimitaan.html">

<?PHP

// Tehdään taulukko, jossa on näytettävät tavut
$nayttavut = array();
foreach ($merkit as $alkukons => $tavut) {
	if (array_search($alkukons, array_keys($_GET)) !== false) {
		foreach (array_keys($tavut) as $loppuosa) {
			$nayttavut[] = array($alkukons, $loppuosa);
		}
	}
}

if (count($nayttavut) == 0) {
	echo "Yhtään merkkijoukkoa ei ole valittu.\r\n";

} else {
	shuffle ($nayttavut);

	// Ei tulosteta tehtävätaulukkoa heti, vaan varastoidaan se muuttujaan, jotta "näytä kaikki"- ja "piilota kaikki"
	// -napit voidaan näyttää ennen sitä.

	$laskuri = 0;
	$jskoodi = "";   // Tällä näytetään kaikki vastaukset
	$kaikkikoodi = "<TABLE>\r\n";

	foreach ($nayttavut as $tavunosat) {
		$kaikkikoodi .= "<TR>\r\n";
		$kaikkikoodi .= "<TD>\r\n";
		$kaikkikoodi .= "<FONT SIZE=\"+3\">" . $merkit[$tavunosat[0]][$tavunosat[1]] . "</FONT>\r\n";
		$kaikkikoodi .= "</TD>\r\n";
		$kaikkikoodi .= "<TD>\r\n";
		$kaikkikoodi .= "<INPUT TYPE=\"text\">\r\n";
		$kaikkikoodi .= "<INPUT TYPE=\"button\" VALUE=\"Näytä vastaus\" onClick=\"";

		// Yhden vastauksen näyttäminen
		$temp = "NaytaVastaus(" . $laskuri . ", '" . MuotoileNaytettavaksi($tavunosat[0], $tavunosat[1]) . "'); ";
		$jskoodi .= $temp;
		$kaikkikoodi .= $temp;

		$kaikkikoodi .= "\">\r\n";
		$kaikkikoodi .= "</TD>\r\n";
		$kaikkikoodi .= "</TR>\r\n";

		$laskuri++;
	}

	$kaikkikoodi .= "</TABLE>";
	$jskoodi = substr($jskoodi, 0, -1);

	echo "<INPUT TYPE=\"button\" VALUE=\"Näytä kaikki vastaukset\" onClick=\"" . $jskoodi . "\">\r\n";
	echo "<INPUT TYPE=\"button\" VALUE=\"Piilota kaikki vastaukset\" onClick=\"KaikkiVastauksetPois();\">\r\n";
	echo "<P>\r\n";
	echo $kaikkikoodi;
}

?>

</FORM>
<P>

<A HREF="_naytaphplahdekoodi.php?sivu=katakanahiragana.php">Tämän ohjelman PHP-lähdekoodi</A>

<?PHP NaytaSivunLoppu (); ?>


Takaisin sivulle katakanahiragana.php

Etusivulle