Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: tietokanta ja tietojen tulostus

Sivun loppuun

merlin [13.11.2010 19:08:53]

#

Olen miettinyt, että onko mahdollista tehdä lomaketta, joka lisää ölähetysö nappia painaessa lomakkeen sisällön suoraa samalle sivulle hieman alemmaksi. Uskon ettei tuossa ole niinkään haastetta, mutta lomakkeen sisältö (vain yksi laatikko, johon teksti kirjoitetaan) tulisi jakaa erilaisten otsikoiden alle?
Kyseinen tietokanta tulisi virtuaalitallilleni kisojen järjestämistä helpottamaan. Leikitään tällä kertaa, että järjestän vaikka estekisat ja kisoissa on kolme eri luokkaa:

Lk 1. 100cm
Lk 2. 120cm
Lk 3. 150cm

Esimerkkikutsu http://korge.webs.com/toiminta/krj/krj28.htm
Sieltä ei löydy kyseisiä lomakkeita, koska kaikki osallistujat lisätään käsin sähköpostiin tulleista miljoonista viesteistä kopioiden.

Osallistujat saavat osallistua rajatulla hevosmäärällä vaikka kaikkiin luokkiin (max. 5 hevosta/omistaja). Lomakkeella tulee ilmoittaa seuraavat tiedot:
Luokan numero, johon alle listatut hevoset osallistuvat, sekä ratsastaja (ratsastajan tunnus) ja hevosen nimi. Yleinen ilmoitustapa kyseiselle litanjalle on seuraava:

Lk 1.
Heppu (VRL-0000) – Heppa Hoppunen
Heppu (VRL-0000) – Poni Poninen
Lk 2.
Heppu (VRL-0000) – Heppa Hoppunen
Heppu (VRL-0000) – Poni Poninen
Lk 3.
Heppu (VRL-0000) – Rautias Risto

Eli henkilö ilmoittaa jokaisen luokan osallistumisensa eri "luokkaotsikoiden" alle. Lisäksi tietokannan pitäisi tunnistaa, että yhden hevosen nimen voi kirjoittaa max. 2 kertaa ja vain kerran yhden luokkaotsikon alle. Myös 100 osallistujan rajoitus pitäisi olla mahdollista per/luokka.

Voiko jollakin koodilla määrittää, että tietyn "otsikon" alla oleva sisältö lisätään tiettyyn kohtaan, vai onko luotava esimerkiksi eri lomakelaatikot jokaiselle luokalle (se olisi ongelmallista, sillä luokkia voi olla vaikkapa 12). Lisäksi lisättyä sisältöä pitäisi pystyä poistamaan.

Kuten ehkä huomaatte, en ole mikään ohjelmoija-hirmu, hyvä kun edes olen tajunnut miten php-koodia yleensä muodostetaan. Eli helpointa olisi varmaankin joku kädestä pitäen -opastus tai vaikkapa linkki jollekkin sivulle mistä löytyisi sopiva koodi käyttööni. Kiitos tuhannesti sille, joka pystyy minua auttamaan :)

Jos et tajunnut mitä tarkoitin, kysy!

Teknkik [13.11.2010 22:04:34]

#

Olisiko ajax vastaus kysymykseesi?

merlin [14.11.2010 09:36:52]

#

ja sitten kun vielä kerrot tälle tyhmälle, että mikä/mitä se on, miten se eroaa esim. php:sta ja mitä se vaatii sivutilalta (kohta itse googlailemaan, nyt kuitenkin kännykällä)?

// löysinkin ohjelmointiputkan oman oppaan helposti parilla klikkauksella (yleensä kännykkäni simahtaa pidemmän selaamisen jälkeen), illemmalla sitten tarkemmin sitä tuijottamaan. Voin kyllä melkein luvata etten pysty sitä tarpeeksi sisäistämään, joten enköhän tarvitse varsinaisessa toteutuksessakin apua :)

Macro [14.11.2010 09:41:16]

#

Wikipedia kirjoitti:

Ajax (akronyymi sanoista Asynchronous JavaScript And XML) on joukko web-sovelluskehityksen tekniikoita, joiden avulla web-sovelluksista voi tehdä vuorovaikutteisempia. Alkuperäisessä merkityksessään AJAX:lla on alun perin viitattu tekniikkaan, jossa verkkosivulla JavaScript:llä asynkronisesti tehtävistä HTTP-pyynnöistä palautetaan XML-merkkausta. Nykyisin Ajax-tekniikoilla viitataan yleisesti samankaltaiseen toimintatapaan: Ajaxissa selainohjelma vaihtaa pieniä määriä dataa palvelimen kanssa taustalla niin, ettei koko verkkosivua tarvitse ladata uudelleen joka kerta käyttäjän tehdessä muutoksen [1]. Tekniikan päämääränä on siis lisätä verkkopalvelun vuorovaikutteisuutta, nopeutta ja käytettävyyttä.

merlin [14.11.2010 09:53:27]

#

macrolle kiitokset, tuokin auttoi :)

-tossu- [14.11.2010 20:48:38]

#

Teknkik kirjoitti:

Olisiko ajax vastaus kysymykseesi?

En käyttäisi ajaxia tuossa tilanteessa, koska siitä ei ole tässä tapauksessa oikeastaan mitään hyötyä ja koska se lisää tarvittavan koodin määrää aika paljon.

tsuriga [14.11.2010 21:09:41]

#

AJAXilla saataisiin aikaan sulavampi käyttäjäkokemus, mutta se on vain mukava lisä taustalla pyörivälle tallennussysteemille. Sanoisin, että ilman aiempaa kokemusta verkkopalveluiden toteuttamista voi olla iso projekti edessä, mutta jos aika ja innostus riittää, niin tutustu ihmeessä Putkan PHP- ja tietokantaoppaisiin ja kysy neuvoa ongelmatilanteissa.

Metabolix [14.11.2010 22:49:33]

#

Kaiken tiedon syöttäminen yhteen tekstilaatikkoon on useimmissa tapauksissa tuhoon tuomittu yritys. Ei ole mitään takeita, että käyttäjä syöttäisi tiedon edes suunnilleen oikeassa muodossa.

Erillisten laatikoiden tekeminen ei ole temppu eikä mikään, jos osaa kunnolla PHP:tä. Kuvauksesi perusteella järkevä muoto lomakkeelle voisi olla seuraava:

<form action="lahetys.php" method="post">
  <fieldset>
    <legend>Heppa 1</legend>
    <select name="heppa[1][luokka]">
      <option value="1">Lk 1</option>
      <option value="2">Lk 2</option>
      <option value="3">Lk 3</option>
    </select>
    <input type="text" name="heppa[1][ratsastaja]" />
    <input type="text" name="heppa[1][tunnus]" />
    <input type="text" name="heppa[1][hevonen]" />
  </fieldset>
  <!-- Ja sama muille. -->
</form>

Lomakkeen voisi käsitellä tähän tapaan:

<?php
if (empty($_POST["heppa"])) {
  die("Tiedot puuttuvat");
}
foreach ($_POST["heppa"] as $tiedot) {
  $lk = $tiedot["luokka"];
  $ratsastaja = $tiedot["ratsastaja"];
  $tunnus = $tiedot["tunnus"];
  $hevonen = $tiedot["hevonen"];
  // Tässä kohti pitää tallentaa tiedot oikeaan paikkaan.
}

merlin [17.11.2010 10:08:17]

#

Kiitos kaikille vastanneille :) Eiköhän tässä ole taas edessä googlailu ja ahkera opetteleminen ja harjoitteleminen. Edelleen jos joku vaan innostuu minua työssä auttamaan niin jotain minimalista korvausta on mahdollista saada :)

LaNu [18.11.2010 16:02:29]

#

Olisiko tarkoitus luoda yleiskäyttöinen lomake, jolla voidaan kysellä osallistujatiedot kilpailuun? Tarkoitan yleiskäyttöisellä lomaketta, jota voisi käyttää kaikkien järjestettävien kilpailuiden osanottajatietojen kyselyyn, ei pelkästään yhden.

Poimin ensimmäisestä viestistäsi muutamia käsitteitä:

merlin kirjoitti:

... estekisat... kisoissa... luokkaa... Osallistujat... hevosta... omistaja... ratsastaja (ratsastajan tunnus) ja hevosen nimi...

Jos tietokantaa lähtee tekemään, pitää ensimmäisenä tehdä käsiteanalyysi. Tuossa on jotain asioita poimittuna, mitä tietokannan varmaan pitäisi osata käsitellä/tallentaa.

lainaus:

Voiko jollakin koodilla määrittää, että tietyn "otsikon" alla oleva sisältö lisätään tiettyyn kohtaan, vai onko luotava esimerkiksi eri lomakelaatikot jokaiselle luokalle (se olisi ongelmallista, sillä luokkia voi olla vaikkapa 12). Lisäksi lisättyä sisältöä pitäisi pystyä poistamaan.

Minusta sinun kannattaa tallentaa kilpailun tiedot tietokantaan tai jotenkin muuten ja luoda lomake noiden tietojen perusteella. Tietokannassa pitäisi varmaan olla ainakin kilpailun nimi ja kilpailun luokat.

Metabolixin esimerkkilomake ei ihan vastaa minun käsitystäni esitetystä ongelmasta. Jos oikein ymmärsin, lomakkeella pitäisi pystyä lisäämään jokaiseen luokkaan 5 hevosta, joten olisi loogista luoda jokaiselle luokalle viisi riviä heppoja varten.

<?php
// nämä tiedot voitaisiin hakea esim. tietokannasta
$kilpailunNimi = 'Estekisa';
$kilpailunLuokat = array( 1 => '100cm', 2 => '120cm', 3 => '150cm' );
?>
<form action="lahetys.php" method="post">
  <fieldset>
	<h2><?php echo $kilpailunNimi; ?></h2>
	<?php // tulostetaan lomakekentät jokaista luokkaa varten
	foreach( $kilpailunLuokat as $luokkaNro => $luokkaNimi ) { ?>
		<h3>Luokka <?php echo $luokkaNro; ?>: <?php echo $luokkaNimi; ?></h3>
		<table>
			<thead>
				<tr>
					<th>Ratsastaja</th>
					<th>Tunnus</th>
					<th>Hevonen</th>
				</tr>
			</thead>
			<tbody>
			<?php // tulostetaan viisi riviä luokan ilmoittautumisia varten.
			for ( $riviNro = 0; $riviNro < 5; $riviNro++ ) { ?>
				<tr>
					<td><input type="text" name="<?php echo "kisa[$luokkaNro][$riviNro][ratsastaja]" ;?>" /></td>
					<td><input type="text" name="<?php echo "kisa[$luokkaNro][$riviNro][tunnus]" ;?>" /></td>
					<td><input type="text" name="<?php echo "kisa[$luokkaNro][$riviNro][hevonen]" ;?>" /></td>
				</tr>
			<?php } ?>
			</tbody>
		</table>
    <?php } ?>
  </fieldset>
</form>

Testasin, vieläkö osaan PHP:tä kirjoittaa.. Meni sellaisenaan tulkista läpi. Ajatusvirheitä tuossa tietysti voi olla :-)

Lomakkeen käsittely tapahtuisi samalla idealla kuin Metabolixin esimerkissä. Toki rakenne ei ole sama vaan nyt juurielementti on kisa, seuraava taso luokka, jonka alta sitten löytyy luokkaan ilmoitetut kilpailijat.

merlin [19.11.2010 15:32:32]

#

Oi kiitos :D Tässä jo pääsin jollekkin jyvälle tietokannoista kun ohjelmointiputkan oppaita lueskelin. Tuosta on varmasti paljon apua, kun jotkut pikkuseikat oli vielä kysymysmerkkinä. Katsotaan jos tuon pohjalta saisin jotain keksittyä :DD


Sivun alkuun

Vastaus

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

Tietoa sivustosta