Plaatjes (BLOB) uit een database halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

03/05/2004 15:26:00
Quote Anchor link
Ik heb een MySql database gemaakt waar ik foto's naar toe kan sturen via aan formulier... Ze komen daar dan als BLOB te staan.
De vraag is nu hoe krijg ik die weer terug op het scherm. Moet ik die nog eerst weer converteren of kan ik gewoon: echo("$content") gebruiken (waar $content de naam van het veld is) of moet ik die BLOB eerst weer omzetten naar het oorspronkelijke bestand.

Greetz Anduril
 
PHP hulp

PHP hulp

25/12/2024 08:57:56
 
Elwin - Fratsloos

Elwin - Fratsloos

03/05/2004 16:25:00
Quote Anchor link
Gebruik de zoekfunctie op deze website en zoek op het Forum naar blob.

Elwin
 
Mitch X

Mitch X

03/05/2004 16:38:00
Quote Anchor link
Jepz Kikker heeft daar al topics over gehad :)
 
Eris -

Eris -

03/05/2004 16:48:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/* image.php */  
if (!empty($id)) {  
include("config.php");
//Haal gegevens op uit de db  
$sql = "SELECT type,length,content FROM images WHERE id = '$id' LIMIT 0,1";  
  $result = @mysql_query($sql) or Die(mysql_error());  
  while ($row = mysql_fetch_array($result)) {  
    Header("Content-Length: " . $row[length] . "\nContent-Type: " . $row[type]);  
    print $row[content];  
//wanneer de gegevens zijn opgehaald echo alles!
  }  
  mysql_close($db);  
}
  
?>
 
B a s
Beheerder

B a s

04/05/2004 09:36:00
Quote Anchor link
Eigenlijk is een database niet echt super geschikt voor plaatjes en het wordt er ook niet sneller op..

Mijn suggestie is deze plaatjes in een map op te slaan en de URL van het plaatje (of de bestandsnaam) vervolgens op te slaan in de database. Je leest dan de URL eruit en haalt het plaatje uit een map ipv een database..
 

04/05/2004 10:34:00
Quote Anchor link
En is daar ook al een script voor aanwezig op deze site?
 

04/05/2004 12:58:00
Quote Anchor link
Hoi, ik heb het advies om de url naar de datbase te schrijven en het plaatje te uploaden naar een map ter harte genomen. Daarvoor heb ik het volgende script gebruikt (wordt aangeroepen met een formulier):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
if(!empty($_FILES['bestand']['tmp_name']))
  {

    // Filename + extensie van geuploade bestand
    $filename  = $_FILES['bestand']['name'];
    $size = $_FILES['bestand']['size'];
    $extensie = substr($filename, -3);
    // Check of extensie voldoet aan eis (in dit geval .jpg)
    if (strtoupper($extensie) != JPG && strtoupper($extensie) != GIF)
    {

      echo("U kan enkel JPG- en GIF-bestanden uploaden.");
    }

    else
    {
      // Check file size
      if ($size > 151200){
          echo("Uw foto mag niet groter zijn dan 150 Kb");
        }
else
        {
      // Upload path
      $destination = "uploads/";
      $length =  strlen($filename);
      $name = $filename;
     // $name = substr($filename, 0, $length - 4);    
      $tempname = $name;

      // Check of file al bestaat, zo ja, filename 'verhogen'
      if(file_exists($destination . $tempname))
      {

        echo("Deze bestandsnaam staat al op de server, verander je bestandsnaam en probeer het opnieuw");
      }

      move_uploaded_file($filename, $destination . $name);
      echo("File ".$destination.$name." uploaded succesfully!<br>");
      include("connect.php");
        $query="INSERT INTO fotos ";
        $query .="VALUES ('', '";
        $query .=$filename ."', '";
        $query .=$_POST["omschrijving"] ."', '";
        $query .=$_SESSION["userx"] ."', '";
        $query .=date ("y-m-d") ."';" ;
        $result = mysql_query($query, $db) or die ("FOUT:" . mysql_error());
    }
  }
}
?>


Maar ik krijg nu steeds de foutmelding:

File uploads/annie2.jpg uploaded succesfully!
FOUT:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Hij zegt dat het bestand succesvol ge "upload is", maar hij staat niet in de betreffende map. En aan de foutmelding na "FOUT:" maak ik op dat er ook iets fout gaat in het schrijven naar de datbase ergens bij een " (aanhalingstaken) in line 1, maar ik kan hier geen fout in ontdekken.

Iemand een idee, want ik ben hier al de hele morgen mee bezig en ik kom er nog niet uit!!

Anduril
 
B a s
Beheerder

B a s

04/05/2004 13:15:00
Quote Anchor link
Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$query
= "INSERT INTO fotos SET ";
$query .= "id = ''";
$query .= "filename = '" . $filename . "', ";
$query .= "omschrijving = '" . $_POST['omschrijving'] . "', ";
$query .= "etc. etc. etc.";
?>
 

04/05/2004 13:54:00
Quote Anchor link
Dit geeft deze foutmelding:

File uploads/annie2.jpg uploaded succesfully!
FOUT:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'filename = 'annie2.jpg', omschrijving = 'voorbereiding', userna
 

04/05/2004 14:58:00
Quote Anchor link
Ik heb het probleem van het posten naar de database opgelost, maar d ebestanden komen nog steeds niet in de juiste Directory, waardoor ze nog niet weer terug gehaald kunnen worden.

Oplossing MySql prob:

$db = mysql_connect("$dbhost","$user","$pass") or die ("Sorry geen sql connectie:".mysql_error());
mysql_select_db("$dbname", $db) or die ("Database kan niet aangesporken worden:".mysql_error());
$query="insert into fotos (bestand, omschrijving, username, datum)";
$query .="VALUES ('";
$query .=$_FILES['bestand']['name'] ."', '";
$query .=$_POST["omschrijving"] ."', '";
$query .=$_SESSION["userx"] ."', '";
$query .=date("y-m-d") ."');" ;
$result = mysql_query($query) or die ("FOUT:" . mysql_error());
echo("<br>Uitgevoerd: $query ");
 
Elwin - Fratsloos

Elwin - Fratsloos

04/05/2004 17:15:00
Quote Anchor link
Quote:
Eigenlijk is een database niet echt super geschikt voor plaatjes en het wordt er ook niet sneller op..

Mijn suggestie is deze plaatjes in een map op te slaan en de URL van het plaatje (of de bestandsnaam) vervolgens op te slaan in de database. Je leest dan de URL eruit en haalt het plaatje uit een map ipv een database..

Eigenlijk wou ik deze slimme opmerking ook nog maken.

De afweging voor BLOB voor plaatjes kan je volgens mij het beste laten afhangen van het feit of de plaatjes openbaar te zien mogen zijn. Als dat niet zo is heeft men nog altijd een connectie naar de DB nodig waarvoor een wachtwoord vereist is, dus dan is het niet meer openbaar.

Hetzelfde geld natuurlijk voor 'gewone' bestanden (downloads zoals PDF, DOC, etc).

Elwin
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.