On jäänyt tuo MySQL puoli hieman auki, miten saan tallennettua GET Formista tiedot Databaseen ja sieltä tulostettua pois?
http://tiituus.org/php/peli/
Ihan samalla tavalla kuin POST-formistakin, ja tästä on jo oppaissakin monta esimerkkiä. Voisitko vähän täsmentää ongelmaa?
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
No ota opas käteen ja ala lukea.
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."; ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.