$mysql = mysql_connect("xxxxx", "xxxxx", "xxxxx"); mysql_select_db("xxxxx"); if ($_POST['alue'] == "php") { $alue = "php"; } else { $alue = "muut"; } $pva = date("d.m.Y"); $aika = date("d:M"); $query = "INSERT INTO artikkelit(id, otsikko, teksti, by, pva, aika, alue, ip) VALUES ('', '" . $_POST['otsikko'] . "', '" . $_POST['teksti'] . "', '" . $_COOKIE['loginid'] . "', '$pva', '$aika', '$alue', '" . $_SERVER['REMOTE_ADDR'] . "')"; mysql_query($query); mysql_close($mysql);
Olen antanut mm. seuraavia arvoja MySQL-kannalle:
» id - auto_increment
» kaikissa "not null"
Itse olen miettinyt ja testannut kaikkea reilun kahden tunnin ajan tuloksetta. Kertokaas joku mikä tossa mättää :)
Testasin myös, että lomake lähettää kaikki $_POST muuttujat scriptalle.
kokeile vaikka ensin laittaa muuttujiin nuo jutut:
$alue = $_POST['alue']; $pva = date("d.m.Y"); $aika = date("d:M"); $otsikko = $_POST['otsikko']; $teksti = $_POST['teksti']; $keksi = $_COOKIE['loginid']; $ip = $_SERVER['REMOTE_ADDR']; $query = "INSERT INTO artikkelit(otsikko, teksti, by, pva, aika, alue, ip) VALUES('$otsikko', '$teksti', '$keksi', '$pva', '$aika', '$alue','$ip')";
jos tuo ei mene kantaan niin sitten varmaan jotain muuta mätää. Jos id on kannassa auto_increment niin sitä tietoa ei tarvi sinne erikseen laittaa.
niin ja testausvaiheessa kannattaa muistaa mysql_error();
kasetti kirjoitti:
Jos id on kannassa auto_increment niin sitä tietoa ei tarvi sinne erikseen laittaa.
Mikä on auto_increment :)
auto_increment toimii ID-tyylisissä sarakkeissa. Tietoa lisättäessä MySQL tarkistaa tämänhetkisen suurimman arvon, korottaa sitä yhdellä ja asettaa sen lisättävään riviin. Tällöin ei joka kerta tarvitse itse hakea suurinta arvoa ja korottaa sitä yhdellä. Suuri helpotus toi auto_increment :)
Kannattaa käyttää mysql_error() - funktiota queryn perässä, jolloin mahdolliset virheet on helpompi saada selville. En nyt ihan tältä istumalta huomaa mitään mullistavaa, mut voi olla että taulun nimen jälkeen tulee laittaa välilyönti. Mut sehän selviää varmaanki sit ku mahdolliset virheilmoitukset näkyy.
Oon testannu kaikkea eikä toimi siltikään :(
Yksi mikä pistää silmään on se, että jos sinulla on ID kentässä auto_increment, niin jätä se pois silloin insert & values osioista. Siihen EI TARVITSE antaa mitään, ei edes tyhjää. Monesti se aiheuttaa myös virheen. Voisiko MySQL olla nyt sitten sellainen, että kun yrität syöttää null arvoa ID kenttään, niin virhe johtuu siitä?
Sitten tulee mieleen myös se, että olet määritellyt jollekin kentälle väärän tyypin eli yrität syöttää tekstiä numeraalisiin kenttiin tms.
Eikö muuten tuo
$aika = date("d:M"); pitäisi olla => $aika = date("h:i:s", time()); ???
Itse käyttäisin kyllä ehkä unix aikaa jos kaikki ajat olisivat unix ajan 0 jälkeisiä...
Teme kirjoitti:
» kaikissa "not null"
Hieman haiskahtaisi siltä, että et täytä kaikkia kenttiä. Riippuen myslin asetuksista jonkun 'not null'-kentän tyhjäksi jättäminen saattaa estää tiedon lisäämisen.
echota query sivulle ja pastee se esim. phpmyadminiin ja siellä kikkailet kyselyn kuntoon.
Aihe on jo aika vanha, joten et voi enää vastata siihen.