Patrick Klein: Bilderupload in die MySQL-DB

Hallo,

ich habe ein Problem mit dem Bilderupload in eine MySQL-DB.
Ich weiss, dass sollte man nicht machen, aber ich wills mal so versuchen.
Ich habe eine Tabelle angelegt, die die Mitarbeiterdaten beherbergt.
Dort hinein hab ich auch die Spalte "bild" als LONGBLOB geschrieben.

Ich habe auch ein Script, welches die Mitarbeiterdaten updaten kann, aber ich bekomme es nicht so richtig hin, den Upload zu realisieren. Auch das TUT auf www.phpbuilder.com hat mir nicht richtig weitergeholfen.

Ich hoffe, es kann mir jemand helfen.
Ich bedanke mich schon jetzt recht herzlich dafür.
Und hier noch der Code:<?

require("../database.php");

if(($addButton != "") && (bID1 != "")) {
 mysql_query("insert into tbl_mitarbeiter_sachgebiet_assoc (unternehmen_id, branche_id) values ( $unternehmenID, $bID1 )");
} else if(($deleteButton != "") && (bID2 != "")) {
 mysql_query("delete from tbl_mitarbeiter_sachgebiet_assoc where unternehmen_id = $unternehmenID and branche_id = $bID2");
}

$row = mysql_fetch_array(mysql_query("select name from tbl_mitarbeiter where id = $unternehmenID"))

?>

<form action="index.php" method="get">

<input type="hidden" name="edit" value="true">
<input type="hidden" name="subtab" value="changeBranche">
<input type="hidden" name="unternehmenID" value="<? echo $unternehmenID ?>">

Unternehmen: <u><?= $row["name"] ?></u><p>

<table border="0">
<tr><td>

<select name="bID1" size=8 style="width:200">

<?

$br = array ();

$result = mysql_query("select branche_id from tbl_mitarbeiter_sachgebiet_assoc where unternehmen_id = $unternehmenID");

while($row = mysql_fetch_array($result)) {
 array_push($br, $row["branche_id"]);
}

$result = mysql_query("select * from tbl_sachgebiet order by name");

while($row = mysql_fetch_array($result)) {

if(!in_array($row["id"], $br)) {
  echo "<option value="" . $row["id"] . ""> " . $row["name"] . "\n";
 }

} ?>

</select>

</td><td align="center" valign="top">

<input type="submit" name="addButton" value="hinzufügen >>" style="width:100"><br>
<input type="submit" name="deleteButton" value="<< löschen" style="width:100">

</td><td>

<select name="bID2" size=8 style="width:200">

<?

$result = mysql_query("select * from tbl_mitarbeiter_sachgebiet_assoc A, tbl_sachgebiet B where A.unternehmen_id = $unternehmenID and A.branche_id = B.id order by name");

while($row = mysql_fetch_array($result)) {

echo "<option value="" . $row["branche_id"] . ""> " . $row["name"] . "\n";

} ?>

</select>

</td><tr>
</table>

</form>

MFG
Patrick Klein

  1. Hallo,

    ich habe ein Problem mit dem Bilderupload in eine MySQL-DB.
    Ich weiss, dass sollte man nicht machen, aber ich wills mal so versuchen.
    Ich habe eine Tabelle angelegt, die die Mitarbeiterdaten beherbergt.
    Dort hinein hab ich auch die Spalte "bild" als LONGBLOB geschrieben.

    Ich habe auch ein Script, welches die Mitarbeiterdaten updaten kann, aber ich bekomme es nicht so richtig hin, den Upload zu realisieren. Auch das TUT auf www.phpbuilder.com hat mir nicht richtig weitergeholfen.

    Probiere es mal mit diesem Beispiel:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Daten in DB schreiben</title>
    <meta name="Author" content="Dr. Thomas Meinike">
    <link rev="made" href="mailto:thomas@handmadecode.de">
    </head>
    <body>
    <?php
    $action=$HTTP_POST_VARS["action"];

    if($action=="indb")
    {

    $dbref=mysql_connect("localhost", "...", "...");
    mysql_select_db("test",$dbref) or die(mysql_errno() .": ". mysql_error());

    if(isset($datei) && $datei!="none" && is_uploaded_file($datei))
    {
      $inhalt=addslashes(fread(fopen($datei,"r"),filesize($datei)));
      $dname=$HTTP_POST_FILES["datei"]["name"];
      $dgroesse=$HTTP_POST_FILES["datei"]["size"];
      $dtyp=$HTTP_POST_FILES["datei"]["type"];

    $abfrage="INSERT INTO bin (daten,dname,dgroesse,dtyp) VALUES ('$inhalt','$dname','$dgroesse','$dtyp')"; // Feld daten = LONGBLOB, alle weiteren VARCHAR
      $ergebnis=mysql_query($abfrage,$dbref);

    if($ergebnis==1)
      {
        print "<b>Die Datei wurde in die DB übernommen:</b><br><br>\n";

    print "<i>Ausgabe über $HTTP_POST_FILES["datei"]["..."]</i><br>\n";
        print "Dateiname: ".$HTTP_POST_FILES["datei"]["name"]."<br>\n";
        print "Dateigröße: ".$HTTP_POST_FILES["datei"]["size"]." Bytes<br>\n";
        print "Dateityp: ".$HTTP_POST_FILES["datei"]["type"]."<br><br>\n";

    print "<i>Ausgabe über $datei_...</i><br>\n";
        print "Dateiname: $datei_name<br>\n";
        print "Dateigröße: $datei_size Bytes<br>\n";
        print "Dateityp: $datei_type<br>\n";
      }
      else
      {
        print "<b>Die Daten konnten nicht in die DB übernommen werden.</b>\n";
      }
      mysql_close();
    }
    }
    else
    {
    ?>
    <form action="<?=$PHP_SELF;?>" method="post" enctype="multipart/form-data">
     <input type="hidden" name="MAX_FILE_SIZE" value="100000">
     <input type="hidden" name="action" value="indb">
     <input type="file" maxlength="100000" size="30" name="datei"><br>
     <input type="submit" value="In DB schreiben">
    </form>
    <?php
    }
    ?>
    </body>
    </html>

    MfG, Thomas

    1. Hi,

      danke erstmal für die Antwort.
      Ich habs mal so versucht, aber ich bekomme nun einen Fehler:
      open_basedir

      Was kann ich da noch machen?

      Vielen Dank
      Patrick Klein

      Hallo,

      ich habe ein Problem mit dem Bilderupload in eine MySQL-DB.
      Ich weiss, dass sollte man nicht machen, aber ich wills mal so versuchen.
      Ich habe eine Tabelle angelegt, die die Mitarbeiterdaten beherbergt.
      Dort hinein hab ich auch die Spalte "bild" als LONGBLOB geschrieben.

      Ich habe auch ein Script, welches die Mitarbeiterdaten updaten kann, aber ich bekomme es nicht so richtig hin, den Upload zu realisieren. Auch das TUT auf www.phpbuilder.com hat mir nicht richtig weitergeholfen.

      Probiere es mal mit diesem Beispiel:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Daten in DB schreiben</title>
      <meta name="Author" content="Dr. Thomas Meinike">
      <link rev="made" href="mailto:thomas@handmadecode.de">
      </head>
      <body>
      <?php
      $action=$HTTP_POST_VARS["action"];

      if($action=="indb")
      {

      $dbref=mysql_connect("localhost", "...", "...");
      mysql_select_db("test",$dbref) or die(mysql_errno() .": ". mysql_error());

      if(isset($datei) && $datei!="none" && is_uploaded_file($datei))
      {
        $inhalt=addslashes(fread(fopen($datei,"r"),filesize($datei)));
        $dname=$HTTP_POST_FILES["datei"]["name"];
        $dgroesse=$HTTP_POST_FILES["datei"]["size"];
        $dtyp=$HTTP_POST_FILES["datei"]["type"];

      $abfrage="INSERT INTO bin (daten,dname,dgroesse,dtyp) VALUES ('$inhalt','$dname','$dgroesse','$dtyp')"; // Feld daten = LONGBLOB, alle weiteren VARCHAR
        $ergebnis=mysql_query($abfrage,$dbref);

      if($ergebnis==1)
        {
          print "<b>Die Datei wurde in die DB übernommen:</b><br><br>\n";

      print "<i>Ausgabe über $HTTP_POST_FILES["datei"]["..."]</i><br>\n";
          print "Dateiname: ".$HTTP_POST_FILES["datei"]["name"]."<br>\n";
          print "Dateigröße: ".$HTTP_POST_FILES["datei"]["size"]." Bytes<br>\n";
          print "Dateityp: ".$HTTP_POST_FILES["datei"]["type"]."<br><br>\n";

      print "<i>Ausgabe über $datei_...</i><br>\n";
          print "Dateiname: $datei_name<br>\n";
          print "Dateigröße: $datei_size Bytes<br>\n";
          print "Dateityp: $datei_type<br>\n";
        }
        else
        {
          print "<b>Die Daten konnten nicht in die DB übernommen werden.</b>\n";
        }
        mysql_close();
      }
      }
      else
      {
      ?>
      <form action="<?=$PHP_SELF;?>" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="100000">
      <input type="hidden" name="action" value="indb">
      <input type="file" maxlength="100000" size="30" name="datei"><br>
      <input type="submit" value="In DB schreiben">
      </form>
      <?php
      }
      ?>
      </body>
      </html>

      MfG, Thomas

      1. Hallo,

        danke erstmal für die Antwort.
        Ich habs mal so versucht, aber ich bekomme nun einen Fehler:
        open_basedir

        Was kann ich da noch machen?

        Sind Uploads ueberhaupt erlaubt?

        MfG, Thomas

        1. Hallo,

          Ich denke schon, da ein CMS läuft, welches Bilderuploads macht und ein Newssystem macht das auch!
          Woran kann es noch hängen?
          Ist es nicht doch besser, die Daten in einen Ordner zu kopieren und in der DB einen Verweis darauf anzulegen?

          MfG
          Patrick Klein

          Hallo,

          danke erstmal für die Antwort.
          Ich habs mal so versucht, aber ich bekomme nun einen Fehler:
          open_basedir

          Was kann ich da noch machen?

          Sind Uploads ueberhaupt erlaubt?

          MfG, Thomas

          1. Hallo,

            Ist es nicht doch besser, die Daten in einen Ordner zu kopieren und in der DB einen Verweis darauf anzulegen?

            Ja.

            MfG, Thomas