Wiedermal Dateiupload in DB Problem

Begonnen von MastaET, 25 Juni 2003, 10:36:16

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

MastaET

Hi, die Situation ist wie folgt:
MS SQL Server
IIS Webserver
PHP 4.x

Alles läuft paletti, manche Gif´s können in die DB geschrieben werden,  alles andere gibt nur Datenbank Fehlermeldungen.

Hier das Script:
 
<html>
<head>
<title>Datei-Upload</title>
<link rel="stylesheet" type="text/css" href="tecdoc.css">
<script language="JavaScript">
<!--
function setz(wert) #Funktion um den Namen zu übergeben (eigentlich brauche ich die nicht mehr..)
{
  document.upl.test.value=wert;
  return false;
}
//-->
</script>
<noscript></noscript>
</head>
<body text="#000000" bgcolor="#E0E0E0">
<font face="Arial">
<form name="upl" action="<? echo $_SERVER['PHP_SELF']; ?>"  # das Formular für die Dateiauswahl
method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
<table>
<tr>
 <td style='border:1px solid #CCCCCC' colspan="3">
 <input class="auswahl" type="file" name="datneu" onBlur="javascript:setz(this.value)">
 <input type="hidden" name="test" value="">
 </td>
</tr>
<tr>
 <td style='border:1px solid #CCCCCC'>
 <input class="auswahl" type="Submit" name="sent" value="Hochladen">
 </td>
 <td style='border:1px solid #CCCCCC' align="right">
 <input class="auswahl" type="Submit" name="showit" value="Dateien anzeigen">
 </td>
</tr>
</table>
</form>

<?php

echo "<form method='post'>";
echo "<table width='245' cellpadding='0' cellspacing='1' border='0'>";

require("connect2.php");

if(isset($_POST['sent']))# wenn Datei geendet wurde
{
  unset($showit);
  unset($kill);
  $fehler="";
  $typ="";
  $datei=$_POST['test'];                      # Name, Grösse, Pfad rausbekommen
  $datei=str_replace("\\\\","\\",$datei);
  $groesse=$_FILES['datneu']['size'];
  echo "<u>Details:</u><br>";
  echo "$datei<br>";
  $groesse2=round($groesse/1024,2);
  echo "$groesse2 K<br>";
  $dateiname=$_FILES['datneu']['name'];
  $endung=substr(strrchr($dateiname,"."),1);
  if($dateiname=="")
  {
    $endung="";
    $fehler="Keine Datei ausgewählt!";
  }
  switch($endung)             #Ãœberprüfung des Dateityps
  {
    case "jpeg": case "jpg": case "jpe":
      $typ="image/jpeg"; break;
    case "gif":
      $typ="image/gif"; break;
    case "bmp":
      $typ="image/bmp"; break;
    case "png":
      $typ="image/png"; break;
    case "tif": case "tiff":
      $typ="image/tiff"; break;
    default:
      if($endung!="")
      {
        $fehler="Dateityp ist nicht zulässig!";
      }
  }
  if($groesse2>200)           #wenn datei zu gross
  {
    $fehler.="Datei ist zu groß!";
  }

  if(!$fehler)        # wenn kein Fehler aufgetreten ist, datei hochladen
  {
    $dat=fopen($HTTP_POST_FILES['datneu']['tmp_name'], "rb");
    $data=fread($dat, $HTTP_POST_FILES['datneu']['size']);
    $data=addslashes($data);

    $sql_ins="INSERT INTO $tabelle (objectid,blobid,blobsize,lastmodified,name,data) values (100001,100001,$groesse,'14.01.2003 12:53:23','".$HTTP_POST_FILES['datneu']['name']."','$data')";
    if(!mssql_query($sql_ins,$verbindung))         #INSERT der DB (Zeile 113)
    {
      $fehler="Upload gescheitert!";
    }
    else
    {
      $text="<font color='#00E090' size='2'><b>$dateiname wurde in die Datenbank aufgenommen</b></font>";
      echo "<tr><td bgcolor='#F0F0F0' align='center'>$text</td></tr>";
    }
  }
  else
  {
    echo "<tr><td align='center' bgcolor='#F0F0F0'><font color='#DF0000' size='2'><b>$fehler</b></font></td></tr>";
  }
}
#*********ab hier ist es eigentlich unwichtig********
if(isset($_POST['showit']))        #falls man "Dateien anzeigen" angeklickt hat

{
  unset($sent);
  unset($kill);

  $sql_sel="SELECT blobid,name,blobsize FROM $tabelle"; #Datenbank nach den Dateien ausfragen
  $result=mssql_query($sql_sel,$verbindung);

  if(mssql_num_rows($result)>0) #dateien auflisten
  {
    echo "<tr><td style='border:1px solid #CCCCCC' bgcolor='#F0F0F0' colspan='3'><font size='1'>Folgende Dateien sind in der Datenbank vorhanden:</font></td></tr>";
    echo "<tr><td><font size='1'><b>Name</b></font></td><td align='right'><font size='1'><b>Größe</b></font></td><td> </td></tr>";
    for($i=0;$i<mssql_num_rows($result);$i++)
    {
      if($i % 2 == 0)
      {
        $farbe="#F0F0F0";
      }
      if($i % 2 == 1)
      {
        $farbe="#E0E0E0";
      }

      $name=mssql_result($result,$i,'name');
      $laenge=strlen($name);
      if($laenge>15)
      {
        $kurz=substr($name,0,15)."...";
      }
      else
      {
        $kurz=$name;
      }

      echo "<tr bgcolor='".$farbe."'><td style='border:1px solid #CCCCCC'><a href='show2.php?ID=".mssql_result($result,$i,'blobid')."' target='_blank'><font size='1' color='#0060FF'><tt>".$kurz."</tt></font></a></td><td style='border:1px solid #CCCCCC' align='right'><font size='1'><nobr> ".mssql_result($result,$i,'blobsize')." KB</nobr></font></td><td style='border:1px solid #CCCCCC' align='right'><input class='auswahl' type='Checkbox' name='".mssql_result($result,$i,'blobid')."'></td></tr>";
    }
  }
  else
  {
    echo "<tr><td bgcolor='#F0F0F0' align='center'><font color='#DF0000' size='2'><b>Keine Dateien vorhanden</b></font>";
  }
}

if(isset($_POST['kill']))    #Dateien löschen
{
  unset($sent);
  unset($showit);

  $d=0;

  if(count($HTTP_POST_VARS)>1)
  {
    foreach($HTTP_POST_VARS as $schluessel => $wert)
    {
      if($schluessel!="kill")
      {
        $sqldel="DELETE FROM $tabelle where blobid = '".$schluessel."'";
        @mssql_query($sqldel,$verbindung);
        $d++;
      }
    }
     echo "<tr><td bgcolor='#F0F0F0' align='center'><font color='#DF0000' size='2'><b>$d Dateien gelöscht</b></font></td></tr>";
  }
  else
  {
    echo "<tr><td bgcolor='#F0F0F0' align='center'><font size='2' color='#DF0000'><b>Keine Dateien zum Löschen ausgewählt!</b></font></td></tr>";
  }
}

echo "</table>";
echo "<table><tr><td><br><input type='Submit' name='kill' value='Löschen'></td></tr></table>";
echo "</form>";

?>

</font>
</body>
</html>


und jetzt die Ausgabe mit den Fehlermeldungen darunter:

 
Details:
C:\Temp\Beispiel.jpg
9.66 K

Warning: mssql_query() [function.mssql-query]: message: Zeile 9: Falsche Syntax in der Nähe von '{'. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit 'Ä™}›œ¨H­2U׌kœÃÃĽs[˝Ü˙\0ZqßîGÄ™%­L“u/Ã"Ã"{Ã"3_C{‚ޏ\'1Å'Ã,,–<ŁÅ'D…XýĐĹc:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '-ź÷{˜mÅ•ÄŒÃ"ô§śwŒÅ,,\\gň‚Ã"Ã"˝WŘœ+[Ë™\0Wž)*XüäťS,ȢĽöźnÚă-XkV†›}H {§˜Ë‡Ä¹Å,,—\"\'§u|Å®×y*Å KçœÄ™\\h:‚Å›‰Å¹Ë‡Ë‡ś¤ô•Ã‡Å±ÄŽÂ;ýáŮX íśĺË5Ë’éČ’') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '`Ä'›8ŹeTˇÉJ5ř¤I˛ s‚ŇÅ,RËc:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '>áX‹Å¥†Œa>ŐXl­^j&Å'…ĺňŰÎ2ŇA-AÃœ…hƒ† ŐĽĘűjá\"wśĆQ.äGĹŮ3śöćŕÃ,ćÄ...3 Ã,,ý_Ãœ<Ń8&VÃ,|2‚źœÅ°#Å»r2ˇuę˛ö˙\0xVÄ,,-u$IÃœ|V){;ƒÂhÅ°”s AoNĘ=') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit 'ůN!z7/¸ű›XÅš\"…íÅ,,~aƒ—ÄšX‹Ä‡Ãœ05 ŹöóW[Í˝Énĺ~Ä'¨-dU[›Ä...pÇšÃ,,Ťk)Œ0ššUUßÃ,,DŽ}( ˘ĆjÖÄ,j77Ã,,OŃTÖ éóW<=­6gr_¨´IěŹ h|€Å,*ŚęC.pÄŽ!ÚŹ(0 x!') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: message: Öffnendes Anführungszeichen vor der Zeichenfolge ')'. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113

Warning: mssql_query() [function.mssql-query]: Query failed in c:\inetpub\wwwroot\HL\html\upload2.php on line 113


Hat da wer nen Rat für mich? oder ein eigenes (funktionierendes) upload Script?
(und bitte keine Antworten von wegen: Bilder nicht in die DB laden. Das das langsamer ist ist MIR klar, aber die Leutz wollen es halt so haben)

thx, masta

BowlingX

Also ich blick da überhaupt net durch?? Was willste überhaupt machen...Beschreib doch mal genau deine Arbeitsschritte...*gg* denn den Quelltext kapier ich net so richtig...sonst schau dir doch mal mein Avatar Upload Modul an! Ich glub das ist viel einfacher geschrieben als dieses hier!

http://www.genutec-studios.de...
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

jubilee

Hallo Bowling !
Er will das Bild direkt als BLOB in der Datenbank speichern.
Nicht nur den Link in der Datenbank und das File auf der Platte sondern komplett in der Datenbank.
MfG
jubilee

[Editiert am 26/6/2003 von SiteAdmin jubilee]

BowlingX

Ja mei warum denn das...die arme Datenbank...aber wenn der Kunde das so will kann man nix machen!  :D

Also diese Fehler:

Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '-ź÷{˜mÅ•ÄŒÃ"ô§śwŒÅ,,\\gň‚Ã"Ã"˝WŘœ+ [Ë™\0Wž)*XüäťS,ȢĽöźnÚă-XkV†›}H {§˜Ë‡Ä¹Å,,—\"\'§u|Å®×y*Å KçœÄ™\\h:‚Å›& #8240;Źˇˇś¤ô•Ã‡Å±ÄŽÂ;ýáŮX íśĺË5Ë’éČ’') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113

kann man schon aus der Fehlermeldung beheben wenn ich mich nicht irre! Veränder mal den Datentyp (Die Maximallänge beträgt 128)!

Und hier:

Warning: mssql_query() [function.mssql-query]: message: Zeile 9: Falsche Syntax in der Nähe von '{'. (severity 15) in c:inetpubwwwrootHLhtmlupload2.php on line 113

Scheint sich ein Syntaxfehler eingeshlichen haben! Schau dochmal in Line 113 nach!
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

hajo

Hy,
da hab ich mal ne Frage zu Avatar hochladen:
Eure Avatare gibts doch hier auch nicht, wie habt ihr euren eigene Avatar hier hochgeladen auf euer Account?
Gruss
Hajo

MastaET

ZitatUnd hier:

Warning: mssql_query() [function.mssql-query]: message: Zeile 9: Falsche Syntax in der Nähe von '{'. (severity 15) in c:inetpubwwwrootHLhtmlupload2.php on line 113

Scheint sich ein Syntaxfehler eingeshlichen haben! Schau dochmal in Line 113 nach!
 

Zeile 113 schaut nur so aus:
 
if(!mssql_query($sql_ins,$verbindung))         #INSERT der DB (Zeile 113)
    {
      $fehler="Upload gescheitert!";
    }

und der Select ($sql_ins) ist dieser:
  $sql_ins="INSERT INTO $tabelle (objectid,blobid,blobsize,lastmodified,name,data) values (100001,100001,$groesse,'14.01.2003 12:53:23','".$HTTP_POST_FILES['datneu']['name']."','$data')";

Future

Wenn du es nur für dich haben willst dann kanste es in der DB eintragen. Wen du willst das deine User sich auch ihr eigenes avatar uploaden können dann musste das Avatar Upload Modul von  http://www.genutec-studios.de nehmen.

BowlingX


 
Zitatda hab ich mal ne Frage zu Avatar hochladen:
Eure Avatare gibts doch hier auch nicht, wie habt ihr euren eigene Avatar hier hochgeladen auf euer Account?

Die Avatare der Admins sind die sogenannten "Team Avatare" Es gibt ein Verzeichniss im Image Ordner wo nur "Mods" und "admins" im eboard drauf zugriff erhalten!


[Editiert am 27/6/2003 von BowlingX]
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

Future

Danke BowlingX
Hab wieder was dazu gelernt . Wusste ich auch nicht