Suunnittelen sivustolleni kuvakokoelmaa, johon käyttäjät voivat lisätä kuvan ja siihen muutaman (noin 6) metatiedon. Sen jälkeen kuvat julkaistaan listoina, joissa metatiedoista osa (noin 3) toimii lajittelu- tai hakuperusteena. Klikkaamalla listasta avautuu kuva ja kaikki metatiedot tulevat näkyviin. Tällaisia ratkaisuja olen nähnyt muutamia, mutta valmiita koodi- ja koodausvinkkejä ottaisin mielihyvin vastaan, jotta saisi nopsasti alkuun. MySql ja php on käytettävissä + pari settiä innokaan aloittelijan sormia.
Lähde vaikka alkuun MySQL ja PHP -oppaalla. Googlea käyttämällä löydät myös muita hyviä koodipaikkoja. Katsopa vaikka esimerkiksi W3Schoolin sivuille.
Itselläni käytössä PHPMyAdmin, jolla pystyn helposti surffailemaan tietokannoissa ja tauluissa. Mikäli sinulla ei sitä vielä ole, ja kiinnostuit katso tänne.
Itse toteutukseen...
1. Luo tietokanta (mikäli vielä ei ole)
CREATE DATABASE database_name
2. Luo tietokannan sisään taulu (mikäli vielä ei ole)
3. Lisää tarvittavat sarakkeet, esimerkkejä: id,kuvanimi,kayttaja,aika,kuvaus,paikka,kamera.
CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... )
(koodissa vaiheet 2 ja 3)
4. Katso apukoodeja netistä. Avainsanoja: mysql,order by,limit,php,where
http://google.com/
5. Näytä toteutuksesi meille ja autamme lisää - tarvittaessa!
Minulla on MySql jo käytössä ja siinä yksi tietokanta ja phpBB3 keskustelu joka toimii "hienosti". Nuo onnistuin tekemään kun oli aika seikkaperäiset ohjeet. PHPMyAdmin on myös käytössä ja sitä osasin käyttää sen verran, että sain tuon tietokannan aakkostuksen vaihdettua...
Koodauskokemusta ohjelmointikielistä on , mutta tämä vaatii vielä ilmeisen paljon työtä.
Kuvakokoelman tietokanta ja taulut kannattaa ehdottomasti luoda phpMyAdminilla. Siinä ei pitäisi olla mitään ongelmaa, jos tietää jotain tietokannoista, koska PMA on melko helppokäyttöinen.
mercier kirjoitti:
Koodauskokemusta ohjelmointikielistä on , mutta tämä vaatii vielä ilmeisen paljon työtä.
Sivuston PHP-osuuden koodaaminen ei ole kovin vaikeaa; MySQL hoitaa kaikki vaikeat asiat. Ainoaksi tehtäväksi oikeastaan jää oikeiden parametrien laittaminen SQL-kyselyyn sekä tietojen tulostaminen sivulle. Jos sivulle tulee rekisteröitymismahdollisuus, aiheuttaa se vähän lisää työtä.
Minultapa löytyikin SQL Database Wizard; ilmeisesti se tekee elämästä vieläkin hälpompaa. Ainakin tietokanta syntyi. Nyt vaan pitää vielä ymmärtää mitä taulu ja sarakkeet tarkoittavat, ilmeisesti vähän niin kuin Excelin tietueita... Minun phpMyAdmin puhuu kentistä. Mutta homma etenee!
Sarakkeet ovat siis vaakasuoraan kulkevia kenttiä, joissa tieto säilytetään. Taulu taas on elementti, missä nämä kentät - eli sarakkeet ovat. Tässä vaiheessa tosiaankin suosittelen kurkkaamaan tuonne Ohjelmointiputkan MySQL ja PHP -oppaaseen, jonka linkin tuossa jo aiemmin annoinkin.
Perusasiat opittuasi, voit siirtyä tutustumaan SQL-injektioon, joka on ollut tälläkin foorumilla viimeaikoina aika kovana aiheena.
No jops, tuo kurssi tuli kahlattua ja perusjuttu hoituu. Kuvista luin muualta, täältä en saanut siitä tajunnanvirtaa. BLOB tai hakemisto, kas siinä pulma. Kokeilin BLOBia, mutta sain taulukkoon vain bittipuuroa... Olisiko tässä mitään järkeä: http://www.wellho.net/solutions/php-example-php-form-image-upload-store-in-mysql-database-retreive.html
Kuvaa ei kannata tallentaa tietokantaan vaan pitää se tavallisena tiedostona.
-tossu- kirjoitti:
Kuvaa ei kannata tallentaa tietokantaan vaan pitää se tavallisena tiedostona.
Ja tallentaa kantaan tiedoston nimi ja polku.
Petja, liehän nuo sarakkeet pystysuorassa yleensä?
Lebe80 kirjoitti:
Ja tallentaa kantaan tiedoston nimi ja polku.
Harvoin kylläkään polkua, paitsi siltä osin, kuin tiedostoja on hajautettu eri hakemistoihin. Eli jos kaikki käsiteltävät tiedostot ovat hakemistossa data/upload/kuvat, tätä yhteistä alkuosaa on ihan turha tunkea kantaan, puhumattakaan, että edessä olisi vielä jokin palvelimesta riippuvainen /var/www/omasaitti/public_html.
Jos kuvat on hajautettu alihakemistoihin, niin todennäköisesti näillä hakemistoilla on jokin järkevä riippuvuussuhde siihen, miten ne on käyttöliittymän puolella järjestelty. Tällöin polun päättelemiseen riittävät tiedot on väistämättäkin jo tallennettu kantaan esim. ryhmän nimen tai jonkin muun datan muodossa.
Kyllä useissa julkaisujärjestelmissäkin tiedostot sijoitetaan eri hakemistoihin, esim. vuosittaista "arkistointia" varten.
Edistun japanilaiseen tyyliin - kopioimalla. Tällä koodilla
http://www.w3schools.com/PHP/php_file_upload.asp sain kuvan siirtymään hakemistoon. Se on pieni alku, nyt pitäisi harjoitella siirtämistä niin, että MySql pysyy mukana, vaikka täältä: http://php.about.com/od/phpwithmysql/ss/
Netti on niin ihmeellinen, että asiasta lähes tietämätönkin voi tehdä "ihmeitä" - niin tosiaan ihmeitä, joita kauhistelee vielä kauan...
Olen jo toosi pitkällä. Tällä koodilla saan tiedot tietokantaan, mutta en kuvaa hakemistoon. Tulee tuo "sori, kuvan..."
<?php //Kuvahakemisto $target = "images/"; $target = $target . basename( $_FILES['photo']['n']); //Tiedot html-lomakkeelta $k=$_POST['k']; $h=$_POST['h']; $p=$_POST['p']; $n=$_POST['n']; $o=$_POST['o']; $p=$_POST['p']; $pic=($_FILES['photo']['n']); // Yhteys tietokantaan mysql_connect("localhost", "xxx_yyy", "salasana") or die(mysql_error()) ; mysql_select_db("aaaa_bbbb") or die(mysql_error()) ; //Tiedot tietokantaan mysql_query("INSERT INTO `kuvataulu` VALUES ('$k', '$h', '$p', '$n', '$o', '$p', '$pic')") ; //Kuva palvelimen hakemistoon TÄMÄ EI TOIMI if(move_uploaded_file($_FILES['photo']['tmp_n'], $target)) { //Menikö hyvin... echo "Kuva ". basename( $_FILES['uploadedfile']['n']). " on siirretty ja tiedot lisätty"; } else { //... no ei mennyt echo "Sori, kuvan siirron kanssa oli ongelmia."; } ?>
ja tässä se html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>l_k</title> </head> <body> <form enctype="multipart/form-data" action="lisaa.php" method="post"> <br> K: <input name="k" type="text"><br> H: <input name="h" type="text"><br> P: <input name="p" type="text"><br> N: <input name="n" type="text"><br> O: <input name="o" type="text"><br> P: <input name="p" type="text"><br> Photo: <input name="photo" type="file"><br> <input value="Add" type="submit"> </form> </body></html>
Mod. lisäsi kooditagit.
Kyselysi on rikki laita perään echo mysql_error() ja korjaa virhe kyselyyn. Sitten mitä ihmettä seuraavassa tapahtuu mielestäsi? Tulkin pitäisi nostaa tuosta ainakin E_NOTICE tason huomautus, koska yrität käyttää määrittelemätöntä muuttujaa. funktio move_uploaded_file() ei suinkaan muuta taulukon nimeä.
mercier kirjoitti:
Tuossa koodin osassa (on ainakin tarkoitus) siirretään kuva hakemistoon images/. Ei tule mitään tulkin virheilmoituksia, vain tuo oma virheilmoitus. Aluksi ajattelin, että vika johtuu salasanasuojatusta hakemistosta, mutta ei toimi muuallakaan. MySQL-kantaan tulee tiedot hienosti, mutta kuva ei ilmesty hakemistoon. Kun sen saisikin talteen, niin voisi jatkaa ehtojen lisäämistä.
'uploadedfile'
on ilmiselvästi väärin, kun muualla on 'photo'
. Ja mikähän tuo 'n'
yrittää olla? Pitäisi varmaan olla 'name'
.
PHP-ohjelmoinnin sääntö numero yksi: laita tiedoston alkuun nämä rivit ja korjaa kaikki ongelmat:
Taisin tosiaan puhua puuta heinää tuon kyselyn kanssa, mutta ei siitä silti oikein tolkkua tahdo saada. Itse tykkään kirjoittaa kyselyn siten, että ensin luetellaan ne kentät, joihin lisätään ja sitten annetaan valituille kentille arvot. Yhden kirjaimen muuttujat ovat potentiaalisia virhelähteitä.
Nyt tämä toimii! Kiitos ohjauksesta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.