Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Miten tallentaa tiedot formista?

tiituus [05.01.2014 20:54:46]

#

On jäänyt tuo MySQL puoli hieman auki, miten saan tallennettua GET Formista tiedot Databaseen ja sieltä tulostettua pois?
http://tiituus.org/php/peli/

Metabolix [05.01.2014 21:08:33]

#

Ihan samalla tavalla kuin POST-formistakin, ja tästä on jo oppaissakin monta esimerkkiä. Voisitko vähän täsmentää ongelmaa?

tiituus [06.01.2014 18:31:16]

#

Metabolix kirjoitti:

Ihan samalla tavalla kuin POST-formistakin, ja tästä on jo oppaissakin monta esimerkkiä. Voisitko vähän täsmentää ongelmaa?

En tajua miten tallennus toimii, hakeminen kannasta ja tulostaminen ei ole ongelma, mutta tallennus, oppaitakaan en ymmärrä.
Tarkoituksena olisi tehdä "Śuosituimmat haut" taulukko

The Alchemist [06.01.2014 19:12:02]

#

No ota opas käteen ja ala lukea.

PHP ja PDO / MySQL
INSERT- ja UPDATE-kyselyt

Hengilö [06.01.2014 19:16:41]

#

En tiedä miten opas ja toinen opas eivät neuvo sinua tarpeeksi, mutta selitetään sitten juurta jaksain.

PHP-kielessä MySQL:n käyttö on järkevintä PDO-kirjaston avulla. Koodin alussa luodaan uusi PDO-luokka:

<?php
try {
	// Luodaan uusi PDO-olio $yhteys, jota käytetään kyselyjen suoritukseen
	$yhteys = new PDO("mysql:host=localhost;dbname=nimi", "kayttajanimi", "salasana");
	// Virheet poikkeuksina
	$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	// Merkistöksi UTF-8, toinen yleinen latin-1
	// Python-oppaan liitteessä 2 lisää merkistöistä
	$yhteys->exec("SET NAMES utf8");
} catch(PDOException $p) {
	// Jos heitettiin virhe, tulostetaan se ja lopetetaan sivun käsittely
	die("Virhe PDO:n alustuksessa: " . $p->getMessage);
}
?>

Sitten kun halutaan lisätä tietokantaan lisää rivejä, käytetään INSERT-kyselyä.

<?php
$kysely = $yhteys->prepare("INSERT INTO haut (sana, maara) VALUES ('Helloworld', 5)");
$kysely->execute();
?>

Rakensin tuossa pienen hakusysteemin. Koodi:
Tietokannan rakenne:

+------+-------+
| haku | maara |
+------+-------+
| sana |   25  |
+------+-------+

index.php:

<!-- Kirjautumisformi -->
<form action="hae.php" method="get">
<input type="text" name="sana" /><br />
<button type="submit">Hae</button>
</form>

Suosituimmat haut:
<table border>
<tr><td>Sana</td><td>Määrä</td></tr>
<?php
// ks. yhdistysskripti yllä
include("connect.php");

// haetaan tietokannasta haut ja järjestetään ne hakumäärän mukaan
$kysely = $yhteys->prepare("SELECT * FROM haut ORDER BY maara");
$kysely->execute();

// Luupataan tulokset läpi ja tulostetaan ne taulukkoon
while($rivi = $kysely->fetch()) {
	echo "<tr><td>{$rivi["haku"]}</td><td>{$rivi["maara"]}</td></tr>";
}
?>
</table>

hae.php:

<?php
include("connect.php");

// Tarkistetaan onko tätä sanaa aiemmin haettu
$kysely = $yhteys->prepare("SELECT * FROM haut WHERE haku = '?'");
$kysely->execute(array($_GET["sana"]));

$tulos = $kysely->fetch();

if($tulos) { // Jos sana löytyy kannasta, muutetaan määrä-kentän arvoa 1 isommaksi
	$kysely = $yhteys->prepare("UPDATE haut SET maara = maara + 1 WHERE haku = '?'");
	$kysely->execute(array($_GET["sana"]));
} else { // Muuten lisätään uusi rivi tauluun
	$kysely = $yhteys->prepare("INSERT INTO haut (haku, maara) VALUES ('?', 0)");
	$kysely->execute(array($_GET["sana"]));
}

// Tulostetaan tiedot
echo "Sanaa " . $tulos["sana"] . " on haettu " . $tulos["maara"] . " kertaa.";
?>

Vastaus

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

Tietoa sivustosta