| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Keskustelut - PHP - Tietojen päivitys tekstitiedostosta tietokantaan käyttäen PHP:tä sekä MySQL:ääeditoitu: 09:56 26.6.12 Kameleontti 09:48 26.6.12 Tilanne on siis se, että pitäisi saada päivitettyä tekstitiedostosta tiedot tietokantaan. Olen saanut ohjelman sellaiseen vaiheeseen, että tiedon parserointi tekstitiedostosta onnistuu, mutta päivittäminen ei onnistu. Tavoitteena on, että tekstitiedostosta saadut hinnat joko päivitetään olemassa oleviin tietueisiin, tehdään kokonaan uusi tietue tai ohitetaan tietue kokonaan. Ongelma on se, että en ole saanut MySQL:n UPDATE-lauseketta toimimaan oikein. Vaikka tietokannassa ja tekstitiedostossa on saman nimisiä tuotteita, päivitys ei onnistu. Minun SQL-lauseke on seuraavanlainen: PHP $lause = "UPDATE testitaulu3 SET hinta1 = $hinnatfloat[0], hinta2 = $hinnatfloat[1], hinta3 = $hinnatfloat[2], hinta4 = $hinnatfloat[3], hinta5 = $hinnatfloat[4], hinta6 = $hinnatfloat[5], hinta7 = $hinnatfloat[6] WHERE yhtio = '$Yhtio' AND tuote = '$Tuote'"; mysql_query($lause, $tietokantayhteys) or die(mysql_error()); // Viedaan tiedot kantaan Samalle tuotteelle on siis useita eri hintoja. Tuo SQL-lause on koodissani for-silmukan sisällä, jossa tietot luetaan ja poimitaan tekstitiedostosta ja aseteaan taulukoihin tai muuttujiin. Tuotteille ja yhtiöille ei ole tekstitiedostossa ID-numeroita, joka tekee asiasta hankalan. Silti tietueiden ID-numeroiden pitää eri tauluissa täsmätä, jotta systeemi toimisi. Aluksi tein homman siten, että kaikki tiedot poistetaan ja sen jälkeen kaikki tiedot lisätään tiedostosta, mutta minua ohjeistettiin tekemään homma edellä kuvatulla tavalla. Voisiko joku auttaa... Lisättäköön, että tietueita on tekstitiedostossa noin 200, ja tavoitteena on päivittää kaikki samalla kertaa. editoitu: 10:46 26.6.12 Chrysalid 10:01 26.6.12 Nuo muuttujan nimet tulkitaan nyt tavalliseksi tekstiksi. Haluat varmaankin tehdä tällä tavalla: PHP $lause = "UPDATE testitaulu3 SET kentta = " . $muuttuja . ", kentta2 = " . $muuttuja2; Tällä tavalla joudut kuitenkin tarkistamaan että muuttujissa on ylipäätänsä tallennettuna tietoa, muuten seurauksena on SQL - syntaksivirheitä. Lauseiden käsin vääntämisen sijasta järkevintä olisi varmaankin tehdä kokonaan oma SQL - lausekkeen luontiin käytettävä luokka, tai käyttää apuna esim. PDO - rajapintaa (PHP Data Objects, http://php.net/manual/en/book.pdo.php ), jolla saat luotua helpommin ja turvallisemmin monimutkaisia kyselyitä. Aikaa saattaa implementointiin kulua enemmän, mutta vältyt myöhemmin hiusten repimiseltä jos tietokantaan tehdään suuria muutoksia. Kameleontti 13:46 26.6.12 Kiitos vastauksesta. Varmasti molemmat ehdottamasi tavat olisivat järkeviä ratkaisuja, mutta olen aika aloittelija PHP:n kanssa joten aika vaikealta tuo PDO-toteuttaminen ainakin kuulostaa. Minua vaan kiinnostaisi tietää, miten saisin ohjelmani käymään läpi kaikki tietokannassa valmiina olevat tiedot, ja päivittämään ne tiedot jos sekä tietokannassa että tekstitiedostossa havaitaan täsmälleen samanniminen yhtiö ja tuote. Loput tulisivat sitten joko niin, että txt-tiedostosta löytyvä tieto skipataan, lisätään erikseen omaksi uudeksi tietueeksi tai päivitetään olemassa olevaan tietueeseen, jos on joku yhdyssana eri tavalla kirjoitettu toisessa päässä. |
![]() Haku
|