Jostain syystä mulle ei nyt millään aukea seuraava juttu.
Kyseessä on siis lomakkeenkäsittelijä, joka lajittelee tiedot textareasta ja tallentaa ne tietokantaan. Nimi on tieto, joka täytyisi muuttaa id:ksi (sitä ei kuitenkaan ilmoiteta textareassa). Miten haen toisesta taulusta ensin id:n, joka vastaa tuota nimeä ja sitten tallennan sen tuonne toiseen tauluun HevosId:nä?
Taulu 1. HevosenNimi, Id
Taulu 2. Id, HevosId, Laji, Alaisuus, Paivamaara, Kutsu, Paikka, Luokka, Tulos, Sijoitus
Taulu kakkosessa Id on siis kilpailun id, ei hevosen.
Textareaan syötetään: Nimi, Laji, Alaisuus, Paivamaara, Kutsu, Paikka, Luokka, Tulos, Sijoitus
//syötetään tieto kantaan $rivit = explode("\n", $_POST['tiedot']); foreach ($rivit as $rivi) { list($nimi, $laji, $alaisuus, $paivamaara, $kutsu, $paikka, $luokka, $tulos, $sijoitus) = explode(', ',$rivi); mysql_query("INSERT INTO kilpailut (nimi, laji, alaisuus, paivamaara, kutsu, paikka, luokka, tulos, sijoitus) VALUES ($id, '".mysql_real_escape_string($nimi)."', '".mysql_real_escape_string($laji)."', '".mysql_real_escape_string($alaisuus)."', '".mysql_real_escape_string($paivamaara)."', '".mysql_real_escape_string($kutsu)."', '".mysql_real_escape_string($paikka)."', '".mysql_real_escape_string($luokka)."', '".mysql_real_escape_string($tulos)."', '".mysql_real_escape_string($sijoitus)."' )"); echo mysql_error(); } //siirretään käyttäjä etiäpäin header('Location: http://osoite.fi');
Sitten kysymys numero 2: Tuolla on tuo Tulos -kohta ja se syötetään muodossa 6/8 = sija/kokonaisosallistujamäärä. Miten sen saisi jaettua kahteen osaan arrayssa kun välimerkki on eri? Jos siis haluaisin muuttaa Tulos sarakkeen Sija ja OsallistujaMaara sarakkeiksi?
Kysymys 3: Edelleenohjaus ei toimi - mikä vikana?
Kysymys 1:
Henkilökotaisesti toteuttaisin homman niin että lomakkeen täyttämisen vaiheessa olisi jo nimi jollain muulla tavalla todennettu ja id tiedossa.
Mutta voithan aina käyttää kaksi kyselyä, tai lisätä INSERT kyselyyn SELECT lause: http://google.com.
Kysymys 2:
Käytä vain suosiolla useampaa input - kenttää, ja lisää sarakkeita tauluun.
Kysymys 3:
Ethän tulosta mitään ennen otsikoiden käpistelyä?
geijo,
1. Tuolla tavalla olen sitä hakenutkin - ongelmana mulla on se, että samalla kertaa saatetaan lähettää useamman hevosen tietoja - en vaan saa tota toimimaan niin, että se hakisi aluksi kaikille $id:t? Oon taas tällaisessa turhassa umpikujassa, johon on varmaan maailman helpoin ratkaisu :D
2. Nuo kaikki tiedot ovat textareassa siitä syystä, että ne kopioidaan toisesta paikasta piiiiitkänä listana - siksi en halua noita jakaa inputeihin = joutuisin käsin muokkaamaan sitä pirun pitkää listaa x( Ongelma on siis tuo array ja se, että muut kohdat erotellaan ", " mutta nuo kaksi lukua pitäisi erottaa "/":lla.
3. En ymmärrä kysymystä/ei aukea tuo käpistely -sana :D Tuo on siis ainoa koodi sivuilla. Välillä siellä on ollut alussa tuo nimi->id hakusysteemi, mutta ei toimi sen kanssa eikä tällaisenäkään.
Jos välttämättä haluat toteuttaa asian noin niin, esim:
//Ei testattu, idea varmaan selviää. Oletan että nimi - sarake on id:lle tarkoitettu? $sql = "INSERT INTO kilpailut (nimi, laji, alaisuus, paivamaara, kutsu, paikka, luokka, tulos, sijoitus) SELECT id, '" . mysql_real_escape_string($laji) . "', '" . mysql_real_escape_string($alaisuus) . "', '" . mysql_real_escape_string($paivamaara) . "', '" . mysql_real_escape_string($kutsu) . "', '" . mysql_real_escape_string($paikka) . "', '" . mysql_real_escape_string($luokka) . "', '" . mysql_real_escape_string($tulos) . "', '" . mysql_real_escape_string($sijoitus) . "' FROM hevoset WHERE nimi = '" . mysql_real_escape_string($nimi) . "'";
Jos nimeä ei löydy, ei lisätä mitään.
Tämä on vain mielestäni huono ratkaisu, monestakin eri syystä.
Ja niin kauan kun haluaa muokata otsikoita (header) ei saa tulostaa mitään, muuten tulee headers already sent efekti. Koska asiakkaalle on jo toimitettu jotkut otsikkotiedot etkä voi enään vaikuttaa niihin...
geijo, kiitokset, testailen tuota :) Ja kokeilen säätää tuota headeriakin ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.