Olen vasta-alkaja netti/php-ohjelmoinnissa. Olen tehnyt php:lla sivuja, joissa käyttäjä täyttää lomakkeen, joka tallennetaan mysql-tietokantaan. Eli systeemi on vastaavanlainen: sivulla LOMAKE.PHP on lomake joka täytetään ja lähetetään tallennettavaksi sivulle TALLENNA.PHP. Tallennuksen jälkeen käyttäjä ohjataan sivulle VALMIS.HTML.
Ongelma on seuraava; joskus (harvoin) tilanne pysähtyy sivulle TALLENNA.PHP (näkyviin jää tyhjä ikkuna), eikä tietokantaan tallennu mitään. Johtuuko tällaiset viat hitaasta serveristä? Sivut nimittäin sijaitsevat ilmaisella kotisivutilalla :) Entä pystyykö tallaisia virheitä huomioimaan php-koodissa? Kotikoneelle pystytetyllä serverillä sivut ovat toimineet täydellisesti.
Luultavasti virhe tulee, kun syötät jotain erikoismerkkejä, kuten ". Käytä mysql_real_escape_string()-funktiota, kun tallennat dataa.
$viesti = mysql_real_escape_string($_POST["viesti"]);
Yleensä koodi helpottaisi aika paljon.
Juu, mainitsemasi asiat on kyllä huomioitu. Tää kertomani ongelma on sattumanvarainen, eli samoilla tiedoilla voi toimia tai kaatua. Olen testannut kotipalvelimella sivuja paljon eikä mitään vikoja ilmene, joten en usko koodissa olevan varsinaisia vikoja. Viat ilmenee ainoastaan tällä nettisivutilalla (freevar.com). Lähinnä mietityttää että häviäiskö viat maksamalla paremmasta sivutilasta.
J.J. kirjoitti:
Lähinnä mietityttää että häviäiskö viat maksamalla paremmasta sivutilasta.
Laita tallenna.php
-tiedoston sisältö tänne, jos haluat asiaan varmistuksen.
Ei, vaan selvitä oikeasti, mitä tapahtuu. Laita tiedoston alussa virheilmoitukset käyttöön:
Testaa vielä varmuuden vuoksi, että kaikki virheet ja varoitukset nyt näkyvät:
<?php echo $olematon_muuttuja; // Nyt pitäisi tulla seuraava ilmoitus: // Notice: Undefined variable: olematon_muuttuja in jokin.php on line 123
Tämän jälkeen hankkiudu taas tilanteeseen, jossa tulee tyhjä sivu. Jos sivulle tulostuu jokin viesti, vika selvinnee siitä.
Jos mitään ei vieläkään näy, voi tosiaan olla, että ongelma on palvelimella. Hyviä ratkaisuja ei juuri ole. Yksi mahdollisuus on ilmoittaa käyttäjälle etukäteen ongelmista ja toteuttaa järjestelmä jotenkin niin, että mahdollisissa ongelmatilanteissakin järjestelmä toimii oikein. Esimerkiksi tietokantatauluun voi lisätä sarakkeen "kesken", josta otetaan merkintä pois vasta sivun lopussa, kun kaikki on valmista. Toisaalta käytännöllisempi ratkaisu on vain hankkia maksullista sivutilaa, jossa on automaattisesti edes jonkinlainen laatutakuu.
Kiitos vastauksista!
Ensimmäisenä tuli mieleen noista tiedoston nimistä kun ovat isolla, että muistathan että wintoosa ei erottele isoja ja pieniä kuten esimerkiksi linux tekee. (jos kerran kotikoneella toimii)
vph81 kirjoitti:
Ensimmäisenä tuli mieleen noista tiedoston nimistä kun ovat isolla...
Vika ei voi olla tässä, koska ongelma ilmenee kysyjän mukaan "joskus (harvoin)" eikä suinkaan aina.
Aihe on jo aika vanha, joten et voi enää vastata siihen.