Ga naar inhoud

Album artwork in database (phpmyadmin)


Anoniem2

Aanbevolen berichten

Beste lezers,\n\nIk heb een leuke muziekdatabase gemaakt met phpmyadmin en een website met php scriptje om die uit te lezen. Alles wordt netjes in tabellen gezet.\nMaarrr, is het ook mogelijk om album artwork in die database te zetten? En is het mogelijk om album artwork in de tag (ID3v2) van de muziek te zetten en op die manier naar xml of csv te exporteren? Bestandsformaat is FLAC en mp3. Ik heb tot nu toe het programma [URL=\"http://mp3bookhelper.sourceforge.net/\"]mp3 book helper[/URL] gebruikt voor het exporteren van de tags.
Link naar reactie
Met KTaglib zou je een plaatje van en naar de ID3 tag van een mp3 moeten kunnen schrijven: [url]http://php.net/manual/en/book.ktaglib.php[/url]\nIs object georiënteerd en slecht gedocumenteerd, dus kan een uitdaging worden.\n\nOpslaan van plaatjes (of andere bestanden) in een database is mogelijk. Een mogelijkheid is het bestand te coderen ([url]http://nl3.php.net/manual/en/function.base64-encode.php[/url]) en op te slaan in een tekstveld (BIGTEXT). Beter zou zijn om de binaire inhoud in een veld van het type BLOB te zetten. Dus met fread() inlezen en dan direct de database in.
Link naar reactie
Ik was ook al eventjes met BLOB bezig geweest. Op verschillende fora is te lezen dat het handiger is om het relatieve pad naar het bestand hierin te zetten. Hoe dit precies in zijn werk gaat ben ik nog niet achter. Krijg ik dan namelijk niet als ik de database opvraag niet het plaatje te zien maar gewoon tekst (de verwijzing)?
Link naar reactie
[QUOTE=FooBar;630225]Met KTaglib zou je een plaatje van en naar de ID3 tag van een mp3 moeten kunnen schrijven: [url]http://php.net/manual/en/book.ktaglib.php[/url]\r\nIs object georiënteerd en slecht gedocumenteerd, dus kan een uitdaging worden.\r\n[/QUOTE]\r\n\r\nHmm, ik heb er even naar gekeken, maar als het inderdaad alleen maar voor mp3 is heb ik er niets aan. Zo\'n beetje mijn hele muziekbibliotheek is FLAC, wat AAC (uit het oude iTunes tijdperk :D ) en hier en daar een mp3\'tje.\r\n\r\n[QUOTE=FooBar;630225]\r\nOpslaan van plaatjes (of andere bestanden) in een database is mogelijk. Een mogelijkheid is het bestand te coderen ([url]http://nl3.php.net/manual/en/function.base64-encode.php[/url]) en op te slaan in een tekstveld (BIGTEXT). Beter zou zijn om de binaire inhoud in een veld van het type BLOB te zetten. Dus met fread() inlezen en dan direct de database in.[/QUOTE]\r\n\r\nIk was ook al eventjes met BLOB bezig geweest. Op verschillende fora is te lezen dat het handiger is om het relatieve pad naar het bestand hierin te zetten. Hoe dit precies in zijn werk gaat ben ik nog niet achter. Krijg ik dan namelijk niet als ik de database opvraag niet het plaatje te zien maar gewoon tekst (de verwijzing)?\r\n\r\n[IMG]http://i50.tinypic.com/zu5m69.jpg[/IMG]\r\n\r\nHier kan ik dan het bestand aanwijzen, maar alleen één voor één. Ik heb meer dan 2000 nummers... Dat gaat niet gebeuren! Ik moet dan een scriptje maken, maar daar zit ik niet zo in.\r\nProbleem is dat de album art allemaal \'folder.jpg\' heet. Allemaal in een andere folder, die van de artiest en album. Relatieve paden voel ik wel wat voor...\r\n\r\n[url]http://www.dreamincode.net/forums/topic/178435-help-in-uploading-image-in-phpmyadmin-database/[/url] [COLOR=\"green\"]<--Link doet het niet-->[/COLOR]\r\n[url]http://www.vbforums.com/showthread.php?376767-Database-How-can-I-store-images-%28or-other-files%29-in-a-database[/url]\r\n[url]http://serverfault.com/questions/249836/storing-pictures-in-a-database-on-phpmyadmin[/url]\r\n[url]https://dev.mysql.com/doc/refman/5.5/en/blob.html[/url]
Link naar reactie
[QUOTE=Jeroentje94;630231]Ik was ook al eventjes met BLOB bezig geweest. Op verschillende fora is te lezen dat het handiger is om het relatieve pad naar het bestand hierin te zetten. Hoe dit precies in zijn werk gaat ben ik nog niet achter. Krijg ik dan namelijk niet als ik de database opvraag niet het plaatje te zien maar gewoon tekst (de verwijzing)?\r\n[/QUOTE]\r\nKlopt; het opslaan van afbeeldingen in een database is doorgaans niet de 1e keus.\r\nZeker niet als het eenvoudiger kan door het opslaan van het pad naar het bestand.\r\nAfbeeldingen laat je in html zien met Zie bv [url]http://www.w3schools.com/tags/tag_img.asp[/url] voor meer info.
Link naar reactie
[QUOTE=Obelix71;630237]Klopt; het opslaan van afbeeldingen in een database is doorgaans niet de 1e keus.\r\nZeker niet als het eenvoudiger kan door het opslaan van het pad naar het bestand.\r\nAfbeeldingen laat je in html zien met Zie bv [url]http://www.w3schools.com/tags/tag_img.asp[/url] voor meer info.[/QUOTE]\r\n\r\nGeprobeerd, gelukt (deels). Waarschijnlijk moet ik het toch op een andere manier gaan doen:\r\n\r\n[IMG]http://i48.tinypic.com/3354eab.jpg[/IMG]\r\n\r\nHet plaatje is zoals je ziet niet zichtbaar, het pad is niet goed.\r\n\r\nIeder bestand moet natuurlijk een afbeelding hebben, voor als je gaat zoeken en maar 1 nummer uit het album getoond wordt. Aan de andere kant moet er maar één afbeelding per album worden getoond. Dat wordt wat ingewikkeld.
Link naar reactie
Zodra je het plaatje toont (in je script) zet je het pad ervan in een variabele. Bij het volgende plaatje vergelijk je het nieuwe pad met het pad in die variabele, om te zien of deze gelijk aan elkaar zijn. Zo ja, dan geen afbeelding tonen. Zo nee, dan wel afbeelding tonen en het nieuwe pad in de variabele zetten.\nDan heb je één generieke oplossing die ook werkt voor de zoekresultaten.
Link naar reactie
[QUOTE=FooBar;630247]Zodra je het plaatje toont (in je script) zet je het pad ervan in een variabele. Bij het volgende plaatje vergelijk je het nieuwe pad met het pad in die variabele, om te zien of deze gelijk aan elkaar zijn. Zo ja, dan geen afbeelding tonen. Zo nee, dan wel afbeelding tonen en het nieuwe pad in de variabele zetten.\r\nDan heb je één generieke oplossing die ook werkt voor de zoekresultaten.[/QUOTE]\r\n\r\nKlinkt goed, en logisch. Moet dit dan in mijn PHP script komen of in een apart javascript bestand? Dat inzicht moet nog groeien ;) Of in de kolom artwork, zie hieronder:\r\n\r\n[IMG]http://i50.tinypic.com/3r2qg.jpg[/IMG]
Link naar reactie
In je PHP script.\r\n\r\nKlein voorbeeldje:\r\n[php]\r\n$qry = \"SELECT * FROM `table`\";\r\n$res = mysqli_query($link, $qry);\r\nif (mysqli_num_rows($res)) {\r\n echo \'\';\r\n while ($data = mysqli_fetch_assoc($res)) {\r\n echo \'\';\r\n }\r\n echo \'
\';\r\n echo htmlspecialchars($data[\'title\']);\r\n echo \'\';\r\n if ($vorigepad != $data[\'artwork\']) {\r\n echo \'\';\r\n $vorigepad = $data[\'artwork\'];\r\n }\r\n echo \'
\';\r\n}\r\n[/php]\r\n\r\n$vorigepad wordt steeds weer hergebruikt. Hierdoor wordt dus alleen een plaatje getoond als het anders is dan het vorige getoonde plaatje.
Link naar reactie
Super!\r\n\r\nKrijg nu één error, $artworkP is niet gedefineerd. Dat is nog simpel op te lossen. Kan ik ook makkelijk in het PHP script zetten dat alle bestanden (artwork) folder.jpg heet? Zoiets:\r\n\r\n[PHP]\r\n$artworkP = 1;\r\n\r\nwhile($row = mysql_fetch_array($result))\r\n {\r\n echo \"\";\r\n echo \"\" . $row[\'indexnr\'] . \"\";\r\n echo \"\" . $row[\'tracknr\'] . \"\";\r\n echo \"\" . $row[\'title\'] . \"\";\r\n echo \"\" . $row[\'artist\'] . \"\";\r\n echo \"\" . $row[\'album\'] . \"\";\r\n echo \"\" . $row[\'year\'] . \"\";\r\n echo \"\" . $row[\'genre\'] . \"\";\r\n if ($artworkP != $row[\'artwork\'] ) {\r\n echo \'\';\r\n $artworkP = $row[\'artwork\']; \r\n }\r\n echo \"\";\r\n }\r\necho \"\";\r\n[/PHP]\r\n\r\n[IMG]http://i48.tinypic.com/idazcz.jpg[/IMG]\r\n\r\n[IMG]http://i50.tinypic.com/eog3q.jpg[/IMG]
Link naar reactie
Er worden wel net zo veel afbeeldingen getoond als albums, dus de if-statement werkt!\r\n\r\n-edit- Ze staan nu ook in de tabel bij het eerste nummer, dus niet helemaal bovenaan de pagina.\r\n\r\n[PHP]\r\nif ($artworkP != $row[\'artwork\'] ) {\r\n echo \"\" . \'\' . \"\";\r\n $artworkP = $row[\'artwork\'];\r\n[/PHP]
Link naar reactie
Dat van $artworkP is denk ik een waarschuwing en geen error?\nDat heeft dan te maken met je error_reporting instelling in php.ini. Als je die wijzigt naar [B]E_ALL & ~E_NOTICE[/B] ben je daar van af (zal nu op E_ALL staan). Het niet declareren van variabelen is op zich geen fout en juist een van de krachten van PHP, maar met E_ALL laat \'ie je dat toch weten als je het niet doet.\nJe kunt dit ook in je PHP bestand zelf wijzigen, door ergens bovenaan [B]error_reporting(E_ALL ^ E_NOTICE);[/B] toe te voegen.\n\nWat betreft de plaatjes: als je een keiharde verwijzing naar een bestand op je harde schijf wilt gebruiken, dan moet je [B]file:///[/B] voor het pad zetten. Dan zou het moeten werken. Dus[B] echo \"\" . \'\' . \"\"; [/B]
Link naar reactie
Oke, de waarschuwing geeft hij nu niet meer, bedankt!\r\n\r\nHet plaatje is een beetje raar:\r\n[IMG]http://i46.tinypic.com/349crv8.jpg[/IMG]\r\n\r\nHet pad klopt dus, toch laat hij hem niet zien. Mij code:\r\n[PHP]\r\nif ($artworkP != $row[\'artwork\'] ) {\r\n echo \"\" . \'\' . \"\";\r\n $artworkP = $row[\'artwork\']; \r\n }\r\n[/PHP]
Link naar reactie
[QUOTE=FooBar;630302]Da\'s wel gek.\r\nIk zie dat je https gebruikt. Misschien dat het daar iets mee te maken heeft, aangezien de plaatjes niet over https gaan. Ik denk dan aan de mogelijkheid van de browser om niet-https inhoud te weigeren als een https pagina geladen wordt.[/QUOTE]\r\n\r\nHeb even ssl uitgezet, mag helaas niet baten. Mis ik hier nog iets in?\r\n[PHP]\r\necho \"\" . \'\' . \"\";\r\n[/PHP]
Link naar reactie
[QUOTE=FooBar;630309]Ja, misschien kan ik daar inderdaad iets mee... Ik zie daar spaties staan, welke vervangen zouden moeten zijn door %20\'s.\r\n\r\nProbeer dit eens:\r\n[php]echo \"\" . \'\' . \"\";[/php][/QUOTE]\r\n\r\nGeprobeerd, ik krijg allemaal syntax errors... Hierzo gaat het ergens fout:\r\n(\'\\\',\'/\',\r\nHij herkent $row hier niet als een variabele. Hij verwacht nog iets na de comma, maar dit gaat mij een beetje te ver, hier snap ik niets meer van...
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...