grafiken in db einlesen

keifler

Mitglied
irgendwie habe ich einen groben fehler. es werden zwar keine fehlermeldungen ausgegeben, aber es klappt trotzdem nicht. ich will einfach nur mit einem formular bilder in eine db schreiben.

HTML:
<form name="form2" method="post" action="eintrag.php">
        <table width="532"  border="0">
          <tr>
            <td width="139" height="40">Ansprechpartner</td>
            <td width="383"><input name="name" type="text" id="name"></td>
          </tr>
          <tr>
            <td height="41">Email</td>
            <td><input name="email" type="text" id="email">
            </td>
          </tr>
          <tr>
            <td height="167">Bild hochladen </td>
            <td>
              <table height="130" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
                <tr>
                  <td height="53" colspan="2">Datei von ihrem Computer ausw&auml;hlen:
                      <input name="bild" type="file" id="bild" size="40" /></td>
                </tr>
                <tr>
                  <td width="210" height="40" align="center">&nbsp;</td>
                  <td width="167" valign="top"><input type="submit" name="Submit" value="Hochladen" /></td>
                </tr>
            </table></td>
          </tr>
        </table>
      </form>

und das wird so an das script übergeben...

HTML:
 <?php
$bild = $_POST["bild"];
$name = $_POST["name"];
$email = $_POST["email"];
?>   
        <?php
mysql_connect("nnn", "nnn","nnn") or die ("Keine Verbindung moeglich");
mysql_select_db("nnn") or die ("Die Datenbank existiert nicht.");
$eintrag = "INSERT INTO bilder (bild, name, email, img_data) VALUES ('$bild', '$name', '$email', LOAD_FILE('/upload/$bild'))";
$eintragen = mysql_query($eintrag);
	 mysql_close();    
?>

Es werden weder die $bild und $name übernommen, aber dafür der name der grafik. allerdings ist die grafik nicht im ordner upload sondern irgendwo im nirvana.. Kann mir jemand helfen****?.
 
aus dem db code habe ich die grafik herausgenommen. jetzt geht wieder alles. aber wie kann ich nun über ein formular grafik und text in die db eintragen****?

Dein Link hilft mir leider nicht weiter...
 
Zuletzt bearbeitet:
Probiers mal mit diesem PHP Code:
PHP:
<?php


/*
 * Verschieben der Datei aus dem Temp Verzeichnis
 */
move_uploaded_file($_FILES['bild']['tmp_name'], "upload/".$_FILES["bild"]["name"])
  or die('Der Upload zu "upload/' . $_FILES["bild"]["name"] . '" ist fehlgeschlagen.'); 



/*
 *  Aufbauen der Verbindung zur Datenbank
 */
mysql_connect("nnn", "nnn","nnn")
  or die ("Keine Verbindung moeglich");
  
mysql_select_db("nnn")
  or die ("Die Datenbank existiert nicht.");


/*
 * Der SQL Query um das Bild ein zu Tragen
 */
$query = <<<SQL
  INSERT INTO bilder (bild, name, email, img_data)
    VALUES (
	  '{$_FILES["bild"]["name"]}',
	  '{$_POST["name"]}',
	  '{$_POST["email"]}',
	  LOAD_FILE('/upload/{$_FILES["bild"]["name"]}')
	  );
SQL;


/*
 * Ausführen des SQL Querys + Fehlerprüfung
 */
try
{
  $result = mysql_query($query);
}
catch (Exception $e)
{
	echo 'Fehler beim Query ('. $query .'):<br>'.$e->getMessage();
}

if($result) echo "Bild wurde Erfolgreich eingetragen!";


/*
 * Schließen der MySQL verbindung
 */
mysql_close();

?>

WICHTIG: Auch wenn das so Funktioniert,
du musst noch prüfen ob die Datei ein Bild ist,
da sonst jeder über dieses Script auch PHP Dateien
und anderes hochladen könnte.

Im Allgemeinen solltest du immer alle eingaben die Benutzer machen Prüfen,
um Sicherheitslücken aus zu schließen.
 
Fehlermeldung: Der Upload zu "upload/Chrysanthemum.jpg" ist fehlgeschlagen.

er hatte erst eine fehlermeldung das zu wenig parameter seien, da habe ich die Zeile geändert in
HTML:
move_uploaded_file($_FILES['bild']['tmp_name'], "/upload/".$_FILES["bild"]["name"]["email"])

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access /upload/C in /home/www/web372/html/eintragen.php on line 32
Der Upload zu "upload/Chrysanthemum.jpg" ist fehlgeschlagen.

schrägstrich vor upload habe ich gesetzt, eventuell sind da noch fehler...
 
Zuletzt bearbeitet:
Vermutlich liegts am / vor dem Verzeichnis "upload". Der / bedeutet, im Wurzel-Verzeichnis des Servers soll der Ordner "upload" gesucht werden. Das wird, denke ich, nicht der Fall sein. Versuch mal

PHP:
move_uploaded_file($_FILES['bild']['tmp_name'],  $_SERVER['DOCUMENT_ROOT'] . "/upload/".$_FILES["bild"]["name"]["email"])
 
Zurück