foto in database
mensen ik wil graag een aantal foto's kunnen opslaan in database maar ik weet niet hoe dit moet kan iemand mij verder helpen?
dit is wat ik heb:
dit is wat ik heb:
Gesponsorde koppelingen:
Twee tabellen:
Op die manier kan je oneindig veel foto's aan een project hangen. Of je daadwerkelijk de foto wil opslaan in de database, of het pad/url/naam, moet je je nog even afvragen. Ikzelf zou het niet in de database doen, aangezien je dan altijd via PHP moet om de foto uit de database te halen. En dan moet je zelf rekening houden met de juiste headers, HEAD-requests, caching, e.d om het redelijk snel te houden. Als je de foto's gewoon als bestanden opslaat kan je Apache dat allemaal laten doen en die is daar zoveel beter in...
Op die manier kan je oneindig veel foto's aan een project hangen. Of je daadwerkelijk de foto wil opslaan in de database, of het pad/url/naam, moet je je nog even afvragen. Ikzelf zou het niet in de database doen, aangezien je dan altijd via PHP moet om de foto uit de database te halen. En dan moet je zelf rekening houden met de juiste headers, HEAD-requests, caching, e.d om het redelijk snel te houden. Als je de foto's gewoon als bestanden opslaat kan je Apache dat allemaal laten doen en die is daar zoveel beter in...
ja maar kweet niet hoe het meot dat gewoon opslaan:P maar hoe maak ik die database dan waar die foto inmoet want dat snap ik niet:$
wel goeie tip van 2 tabellen;)
wel goeie tip van 2 tabellen;)
Ieder project heeft een nummer, het id. Je kan nu foto's koppelen aan dat project op basis van dat id. In je database kan je dan later wanneer je alle foto's wilt terugvinden die bij dat project horen, zoeken naar de foto's waarbij fotos.project_id = projecten.id. Je kan dan ook gemakkelijk tellen hoeveel foto's ieder project heeft, en dat soort handige dingen.
En de foto's terugvinden?
Code (php)
1
2
3
4
5
2
3
4
5
mysql_query("INSERT INTO projecten (naam, beschrijving) VALUES('portfolio', 'dit script zelf')");
$project_id = mysql_lastinsertid();
mysql_query("INSERT INTO fotos (project_id, pad) VALUES($project_id, 'http://...')");
$project_id = mysql_lastinsertid();
mysql_query("INSERT INTO fotos (project_id, pad) VALUES($project_id, 'http://...')");
En de foto's terugvinden?
dat snap ik wel maar kbedoel in de database hoe maak je dat? die tabel?
dus zoals ik het had maar dan met foto? dat snap ik niet de rest wel;)
dus zoals ik het had maar dan met foto? dat snap ik niet de rest wel;)
Zie Jelmers voorbeeld :-)
dat snap ik nu wel maar er word om mijn vraag heengedraaid.
ik wil gewoon even weten hoe je een tabel insteld waar jee foto of een bestand in kunt doen.
kga het wel op die manier van jelmer doen maar wil het toch even weten.
ik wil gewoon even weten hoe je een tabel insteld waar jee foto of een bestand in kunt doen.
kga het wel op die manier van jelmer doen maar wil het toch even weten.
kolom-type blob, en dan heel simpel met file_get_contents de inhoud van je bestand in PHP inlezen, en in je query stoppen. Net zoals een string. Je snapt natuurlijk al wat de gevolgen zijn: je moet het hele bestand inlezen, escapen. MySQL moet dat hele bestand als query parsen. Reken maar uit wat dat met je snelheid/geheugen doet.
Andere manier is MySQLi gebruiken om met je database te praten, en dan prepared statements. Vervolgens kan je met $stmt->bind_param('ib', $project_id, fopen($_FILES['upload']['tmp_name'], 'rb')) bijvoorbeeld je data aan je query hangen. Dan wordt de data apart naar MySQL toegestuurd, in stukjes, wat in principe dus goed gaat met grote bestanden omdat het bestand nooit in z'n geheel in het geheugen hoeft te zitten.
Andere manier is MySQLi gebruiken om met je database te praten, en dan prepared statements. Vervolgens kan je met $stmt->bind_param('ib', $project_id, fopen($_FILES['upload']['tmp_name'], 'rb')) bijvoorbeeld je data aan je query hangen. Dan wordt de data apart naar MySQL toegestuurd, in stukjes, wat in principe dus goed gaat met grote bestanden omdat het bestand nooit in z'n geheel in het geheugen hoeft te zitten.
ok dat word een beetje te moeilijk voor mij:P dus ga het op jouw manier proberen;)
kweet alleen neit hoe het allemaal moet dus als iemand mij paar hints kan geven zou dat mooi zijn.:$
kweet alleen neit hoe het allemaal moet dus als iemand mij paar hints kan geven zou dat mooi zijn.:$
De grote vraag is waarom wil je de foto's zelf in de database hebben staan?
nou ik dacht dat makkelijker was met eruithalen enzovoort;) maar neemt natuurlijk veel ruimte in beslag dus ga het gewoon opslaan in de ftp;)
alleen ik zou echt niet weten hoe dat moet dus als iemand een beginnetje kan maken of mij een link naar een tutorial kan geven zou dat fijn zijn.
alleen ik zou echt niet weten hoe dat moet dus als iemand een beginnetje kan maken of mij een link naar een tutorial kan geven zou dat fijn zijn.
CREATE TABLE `afbeelding` (
`nummer` int(10) NOT NULL auto_increment,
`omschrijving` varchar(30) NOT NULL,
`afbeelding` varchar(50) NOT NULL,
PRIMARY KEY (`nummer`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `afbeelding` (`nummer`, `omschrijving`, `afbeelding`) VALUES
(1, 'dit ben ik', 'images/ik.jpg');
`nummer` int(10) NOT NULL auto_increment,
`omschrijving` varchar(30) NOT NULL,
`afbeelding` varchar(50) NOT NULL,
PRIMARY KEY (`nummer`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `afbeelding` (`nummer`, `omschrijving`, `afbeelding`) VALUES
(1, 'dit ben ik', 'images/ik.jpg');



