[php] Pictures storen in MySQL

Pagina: 1
Acties:
  • 42 views sinds 30-01-2008

  • Bor
  • Registratie: Februari 2001
  • Laatst online: 22:23

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Hoi,

Ik ben bezig met een script voor het opslaan van pictures in een mysql database.
Helaas lukt het mij niet om mijn plaatje correct (middels een form) te submitten.

Wie kan mij uitleggen wat ik fout doe? Ik vraag je niet mijn script te debuggen omdat dat makkelijk voor mij is, maar omdat ik graag van mijn fouten wil leren en ik de fout helaas niet kan vinden met behulp van mijn boeken en php.net

Zie hier de code:

PHP:
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
45
46
47
48
49
50
51
52
53
54
55
56
<?php
if ($_POST['action'] == "upload") {
  // ok, let's get the uploaded data and insert it into the db now

  $DBHost = "lololol"; 
  $DBLogin = "baa"; 
  $DBPassword = "huh"; 
  $DBDatabase = "lala"; 
    
   mysql_connect("$DBHost", "$DBLogin", "$DBPassword") or die ("Could not connect to database:".mysql_error());
   @mysql_select_db("$DBDatabase") or die ("Could not select database:".mysql_error()); 
   echo ("Database selected");

  $binFile=$_POST['Picture'];
  $txtDescription=$_POST['Description'];
  echo ("$txtDescription"];
 
  if (isset($_POST['Picture']) && ($_POST['Picture'] != "none")) 
  { echo ("in de postloop");
    $data = addslashes(fread(fopen($binFile, "r"), filesize($binFile)));
    $strDescription = addslashes(nl2br($txtDescription));
    $Query=("INSERT INTO tbl_Files VALUES (NULL,'$data','$strDescription','$binFile_name','$binFile_size','$binFile_type')"); 
    //$Query = ("INSERT INTO tbl_Files description, bin_data, filename, filesize, filetype VALUES ('$strDescription', '$data','$binFile_name','$binFile_size','$binFile_type')");
    $result = mysql_query($Query) or die ("kan query niet uitvoeren");
    mysql_free_result($result); // it's always nice to clean up!
    echo "Thank you. The new file was successfully added to our database.<br><br>";
    echo "<a href='main.php'>Continue</a>";
  }
  mysql_close();

} else {
?>
<HTML>
<BODY>
<FORM METHOD="post" ACTION="testpicturepost.php" ENCTYPE="multipart/form-data">
 <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000">
 <INPUT TYPE="hidden" NAME="action" VALUE="upload">
 <TABLE BORDER="1">
  <TR>
   <TD>Description: </TD>
   <TD><TEXTAREA NAME="Description" ROWS="10" COLS="50"></TEXTAREA></TD>
  </TR>
  <TR>
   <TD>File: </TD>
   <TD><INPUT TYPE="file" NAME="Picture"></TD>
  </TR>
  <TR>
   <TD COLSPAN="2"><INPUT TYPE="submit" VALUE="upload"></TD>
  </TR>
 </TABLE>
</FORM>
</BODY>
</HTML>
<?php
}
?>


Ik heb een paar echo's als debug ertussen gezet. Wie helpt?

[ Voor 21% gewijzigd door Bor op 01-12-2003 21:05 ]

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 19:26
Misschien kan je even aangeven wat er nou precies misgaat ? Dan hoef ik niet de hele code door te spitten.
Lees ook eens P&W Beleid door, dan kan je zien wat er verwacht wordt van een topicstart.

Everytime I suffer I become a better man because of it


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
PHP:
1
2
3
<?php
echo ("$txtDescription"]; 
?>


Hier struikelt hij zoiezo over.

PHP:
1
$data = addslashes(fread(fopen($binFile, "r"), filesize($binFile)));


en dit lijkt me ook niet werken aangezien je hier het bestand van de client wil downloaden, kijk een naar de $_FILES superglobal in de php manual


nog even een linkje http://www.php.net/manual/en/features.file-upload.php

[ Voor 23% gewijzigd door PrisonerOfPain op 01-12-2003 21:21 . Reden: link bijgevoegd :) ]


  • Bor
  • Registratie: Februari 2001
  • Laatst online: 22:23

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
PrisonerOfPain schreef op 01 december 2003 @ 21:15:
PHP:
1
2
3
<?php
echo ("$txtDescription"]; 
?>


Hier struikelt hij zoiezo over.
Klopt, sorry typfoutje. Ik had hem er inmiddels uitgehaald.

De code is nu:

PHP:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
<?php
if ($action == "upload") {
  // ok, let's get the uploaded data and insert it into the db now
  $DBHost = "dfdfd"; 
  $DBLogin = "dfdfd"; 
  $DBPassword = "dfdfdffdf"; 
  $DBDatabase = "dfddfdfdf"; 
    
   mysql_connect("$DBHost", "$DBLogin", "$DBPassword") or die ("Could not connect to database:".mysql_error());
   @mysql_select_db("$DBDatabase") or die ("Could not select database:".mysql_error()); 
   echo ("Database selected");
   
   $binFile=$_POST['binFile'];
   $txtDescription=$_POST['Description'];

  if (isset($binFile) && $binFile != "none") {
    $data = addslashes(fread(fopen($binFile, "r"), filesize($binFile)));
    $strDescription = addslashes(nl2br($txtDescription));
    $Query=("INSERT INTO tbl_Files VALUES (NULL,'$data','$strDescription','$binFile_name','$binFile_size','$binFile_type')"); 
    /*
    $sql = "INSERT INTO tbl_Files ";
    $sql .= "(description, bin_data, filename, filesize, filetype) ";
    $sql .= "VALUES ('$strDescription', '$data', ";
    $sql .= "'$binFile_name', '$binFile_size', '$binFile_type')";
    */
    $result = mysql_query($Query);
    mysql_free_result($result); // it's always nice to clean up!
    echo "Thank you. The new file was successfully added to our database.<br><br>";
    echo "<a href='main.php'>Continue</a>";
  }
  mysql_close();

} else {
?>
<HTML>
<BODY>
<FORM METHOD="post" ACTION="test.php" ENCTYPE="multipart/form-data">
 <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000">
 <INPUT TYPE="hidden" NAME="action" VALUE="upload">
 <TABLE BORDER="1">
  <TR>
   <TD>Description: </TD>
   <TD><TEXTAREA NAME="txtDescription" ROWS="10" COLS="50"></TEXTAREA></TD>
  </TR>
  <TR>
   <TD>File: </TD>
   <TD><INPUT TYPE="file" NAME="binFile"></TD>
  </TR>
  <TR>
   <TD COLSPAN="2"><INPUT TYPE="submit" VALUE="Upload"></TD>
  </TR>
 </TABLE>
</FORM>
</BODY>
</HTML>
<?php
}
?>


Hij blijft nu steken op de form, die krijg je gewoon weer te zien nadat je het gesubmit hebt.

De table in de database:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#----------------------------
# Table structure for tbl_files
#----------------------------
drop table if exists tbl_files;
create table tbl_files (
   id_files tinyint(3) unsigned not null auto_increment,
   `bin_data ` longblob not null,
   description tinytext not null,
   filename varchar(50) not null,
   filesize varchar(50) not null,
   filetype varchar(50) not null,
   primary key (id_files))
   type=MyISAM;

[ Voor 108% gewijzigd door Bor op 01-12-2003 21:25 ]

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
maak van
PHP:
1
if ($action == "upload") {


eens
PHP:
1
2
if (isSet ($_POST))
{

?

[ Voor 9% gewijzigd door PrisonerOfPain op 01-12-2003 21:30 ]


  • Bor
  • Registratie: Februari 2001
  • Laatst online: 22:23

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Kun je svp d suggesties beargumenteren?

Ik heb het veranderd inmiddels. Ik krijg nu netjes de form te zien. Selecteer ik een file en druk ik op upload dat krijg ik een witte pagina en niets meer. De database wordt niet gevuld.

[ Voor 76% gewijzigd door Bor op 01-12-2003 21:33 ]

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

geuploade bestanden vind je niet in $_POST maar in $_FILES
Er op vertrouwen dat de waarde van je submit button wordt meegestuurd is ook niet handig; IE stuurt deze namelijk niet mee als het form mbv de enter-key is gesubmit, je kan beter de request method uitvragen.

Intentionally left blank


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Nou, ik kan nergens de variable $action vinden, dus zal die ook niet snel de waarde "upload" hebben ;) maar als je checkt op $_POST (de geset word als je een form submit) zou dat wel lukken, lijkt mij :)

*of gaat het daar helemaal niet fout :{

  • whoami
  • Registratie: December 2000
  • Nu online
Sorry hoor, maar het debuggen van jouw code kan je zelf wel doen.

Mocht je nu gerichte vragen hebben, dan kon ik het topic openlaten, maar dit is meer een 'ik dump m'n code hier ff en jullie debuggen het wel ff voor me terwijl ik leuke dingen ga doen' topic.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.