Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP date-ongelma ja lomake-tietokanta kysymys

Sivun loppuun

merlin [14.12.2011 15:23:33]

#

En millään saa kehiteltyä scriptiä seuraavanlaiseen tapaukseen (uskokaa pois, tää amatööri on täällä koko päivän pyöritelly vaikka mitä koodeja tuon ratkaisemiseksi...):

Minulla on tietokannassa päivämäärä, esimerkiksi: 2011-01-12
Haluaisin saada sivuille esiin seuraavat päivämäärät:
2011-01-12 + 30pv
2011-01-12 + 60pv
2011-01-12 + 90pv jne.
Ja muotoon: j.m.Y

Sitten minulla olisi hieman haastavampi koodikysymys jonka toteutusmahdollisuuteen en ole edes vielä perehtynyt. Varmaankin aika hankalaksi koodiksi menee, mutta jos jollain olisi tähän joku mukailtava/esimerkkikoodi/-vinkki niin olisi aivan mahtavaa:

Minulla on lomakkeessa textarea johon syöttäisin useamman rivin tiedot samalla kertaa ja jokin skripti sitten erottelisi ne omikse riveikseen ja vieläpä jaottelisi oikeat tiedot oikeisiin sarakkeisiin, esimerkiksi:
2011-01-12 ++ http://google.fi ++ 9 ++ 100
2011-09-22 ++ http://google.fi ++ 9 ++ 100
++ erotin merkkinä sen takia, että tuolla on tuo http://. Onko tällaista mahdollista toteuttaa?

Grez [14.12.2011 15:41:02]

#

Molemmat kuulostaa aika helpoilta toteuttaa.

$date = strtotime('2011-01-12' . ' +30 days');
echo Date('j.m.Y',$date);
$rivit = explode("\n", $_POST['kenttä']);
foreach ($rivit as $rivi) {
    list($pv, $url, $luku1, $luku2) = explode('++',$rivi);
    //Tee muuttujissa olevilla tiedoilla jotain
}

merlin [14.12.2011 15:51:57]

#

Grez, herttileijaa - mää tolla sun aika-systeemillä ton jo kerran kokeilin, mutta ilmeisesti oli joku bitti vinksallaan kun herjas jotain epämäärästä. Kiitos molemmista, katsotaan miten mää nyt pääsen etiäpäin :)

merlin [15.12.2011 20:56:06]

#

Joo oon ihan peukku keskellä kättä tän lomakejutun kanssa. Jos mulla on siis textarea jonka nimi on "tiedot" ja lomake käsitellään tän tyyppisellä koodilla, niin miten mää nyt ton Grezin koodin tonne sovellan :D?

En osaa tehdä tämmösiä juttuja, missä tallennetaan monta eri tietoa samaan aikaan... Enkä kyllä käyttään muuttujiakaan tuolla insertissä. Haluaiskohan joku tooosi ystävällinen auttaa :)?

<?php
   //avataan yhteys kantaan
...
   //valitaan tietokanta
...

   //syötetään tieto kantaan
   mysql_query("INSERT INTO kilpailut (paivamaara, osoite, numero1, numero2) VALUES (
   '".mysql_real_escape_string($_POST['paivamaara'])."',
   '".mysql_real_escape_string($_POST['osoite'])."',
   '".mysql_real_escape_string($_POST['numero1'])."',
   '".mysql_real_escape_string($_POST['numero2'])."'
   )");

   //siirretään käyttäjä etiäpäin
   ...
?>

Macro [15.12.2011 21:33:16]

#

Laita kysely tuohon foreachiin ja käytä noita $url, $luku1 jne. muuttujia.

merlin [16.12.2011 10:49:49]

#

Macro, mulla ei oo mitään käsitystä miten saan ton kyselyn sinne. Yritin täältäkin: https://www.php.net/manual/en/control-structures.foreach.php jo etsiä vastausta mutta joo, mä oon liian avuton tähän :) Eikö kukaan haluais tehdä ihan lyhyttä kahden muuttuja esimerkkiä mulle ?

AkeMake [16.12.2011 11:55:54]

#

Yhdistämällä Macron neuvomalla tavalla Grezin ja Merlinin koodit saadaan:

$rivit = explode("\n", $_POST['tiedot']);
foreach ($rivit as $rivi) {
    list($pv, $url, $numero1, $numero2) = explode('++',$rivi);
    mysql_query("INSERT INTO kilpailut (paivamaara, osoite, numero1, numero2) VALUES (
    '".mysql_real_escape_string($pv)."',
    '".mysql_real_escape_string($url)."',
    '".mysql_real_escape_string($numero1)."',
    '".mysql_real_escape_string($numero2)."'
    )");
}

Edellyttäen siis, että se textareassa oleva tieto on tuossa aikaisemmin mainitsemassasi muodossa:
2011-01-12 ++ http://google.fi ++ 9 ++ 100
2011-09-22 ++ http://google.fi ++ 9 ++ 100

merlin [16.12.2011 12:09:18]

#

AkeMake, oi kiitos aivan kamalasti <3 Nyt testailemaan (ja opettelemaan tuota foreachin merkitystä/käyttöä) ->

merlin [16.12.2011 12:27:39]

#

Ei tee uusia rivejä tietokantaan vaikka syötän rivit:
1 ++ laji ++ alaisuus ++ 0000-00-00 ++ http://moi.fi ++ paikka ++ luokka ++ tulos ++ sijoitus
100 ++ laji ++ alaisuus ++ 0000-00-00 ++ http://moi.com ++ paikka ++ luokka ++ tulos ++ sijoitus

miksi :(?

form.html

<form method="post" action="tiedosto3.php" onSubmit="submitonce(this)" name="horseregistery">

   <p><textarea rows="30" cols="110" name="tiedot">id ++ laji ++ alaisuus ++ 0000-00-00 ++ http:// ++ paikka ++ luokka ++ tulos ++ sijoitus</textarea></p>

   <input type="submit" name="submit" value="Lähetä kisoja" />
</form>

tiedosto3.php

   //syötetään tieto kantaan
   $rivit = explode("\n", $_POST['tiedot']);
foreach ($rivit as $rivi) {
    list($id, $laji, $alaisuus, $paivamaara, $osoite, $paikka, $luokka, $tulos, $sijoitus) = explode('++',$rivi);
    mysql_query("INSERT INTO kilpailut (id, laji, alaisuus, paivamaara, osoite, paikka, luokka, tulos, sijoitus) VALUES (
    '".mysql_real_escape_string($id)."',
    '".mysql_real_escape_string($laji)."',
    '".mysql_real_escape_string($alaisuus)."',
	'".mysql_real_escape_string($paivamaara)."',
	'".mysql_real_escape_string($osoite)."',
	'".mysql_real_escape_string($paikka)."',
	'".mysql_real_escape_string($luokka)."',
	'".mysql_real_escape_string($tulos)."',
    '".mysql_real_escape_string($sijoitus)."'
    )");
}

Metabolix [16.12.2011 15:09:24]

#

Varmaan kannattaisi myös trimmata ne arvot, jos plussien ympärillä on kerran välejäkin. Ja taas kerran ongelma luultavasti selviäisi aivan suoraan, jos käyttäisit tietokantayhteyteen PDO:ta virheilmoitusten kera tai tarkistaisit kyselyn onnistumisen if-lauseella ja virheilmoituksen mysql_error-funktiolla.


Sivun alkuun

Vastaus

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

Tietoa sivustosta