anoniem Geplaatst: 18 maart 2005 Delen Geplaatst: 18 maart 2005 hoi ik probeer een soort van artikelen database te maken waar je plaatjes bij kan zetten. die plaatjes komen dan ook in de db te staan (mssql 2000). waar het eigenlijk om gaat is die plaatjes. ik heb een tabel aangemaakt met een code (int) en img (image) en filetype(varchar). spreekt wel voor zich denk ik. het probleem zit m in het in de database zetten. ik heb de volgende code: [code:1:fb3e3e631d] <?php $codes = array_keys($_FILES); for($i=0;$i<count($codes);$i++){ $codes1 = $codes[$i]; // codes1 is bv img1, komt bij het formulier vandaan if($_FILES[$codes1]['tmp_name'] != ""){ // checken of er files zijn om te uploaden $filenametmp[$codes1] = $_FILES[$codes1]['tmp_name']; $handle[$codes1] = fopen($filenametmp[$codes1], 'r'); $inhoud[$codes1] = fread($handle[$codes1],filesize($filenametmp[$codes1])); $encoded[$codes1] = chunk_split(base64_encode($inhoud[$codes1])); $filetype[$codes1] = $_FILES[$codes1]['type']; $id = substr($codes1,3); $sql = "INSERT INTO images (code, img, filetype) values ($id, '".$encoded[$codes1]."', '".$filetype[$codes1]."');"; mssql_query($sql); ?> [/code:1:fb3e3e631d] hierbij krijg ik de volgende foutmelding: Warning: mssql_query(): message: Operand type clash: text is incompatible with image (severity 16) in c:\server\server f\webserver\nieuw\content\hulpenuitleg\index.php on line 176 dat is dus die laatste sql query. de fileupload werkt volgens mij wel. ik snap alleen niet wat er fout gaat bij het verwerken van het bestand. heeft iemand dit al eerder gehad of misschien een idee hoe het op te lossen? Quote Link naar reactie
anoniem Geplaatst: 21 maart 2005 Auteur Delen Geplaatst: 21 maart 2005 na veel zoeken heb ik het antwoord gevonden. de truc zat m in dat mssql dus alleen hexadecimaal aan kan in een image veld in een tabel. vandaar de volgende code: [code:1:f356be0eb4] $inhoud[$codes1] = fread($handle[$codes1],filesize($filenametmp[$codes1])); $filetype[$codes1] = $_FILES[$codes1]['type']; // $data = unpack("H*hex", $inhoud[$codes1]); // $id = substr($codes1,3); $sql = "INSERT INTO images (code, img, filetype) values ('$id', 0x".$data['hex'].", '".$filetype[$codes1]."');"; mssql_query($sql); [/code:1:f356be0eb4] Dus dat was het. als je het plaatje vervolgens weer uit de tabel wil halen doe je dat zo: [code:1:f356be0eb4] $img = $_GET['img']; $result = mssql_query("SELECT * FROM images WHERE code=".$img.""); while ($row = mssql_fetch_array($result)) { $imgid = $row["code"]; $type = $row['filetype']; $encodeddata = $row["img"]; } header('Content-Type: $type'); echo $encodeddata; [/code:1:f356be0eb4] misschien dat je er wat aan hebt. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen