[ sem13 @ 03.02.2007. 09:02 ] @
Ljudi imam problem da ubacim sliku u MySQL bazu i da je posle izvucem.
Stvarno mi je potreban savet kako to da uradim.
[ nkrgovic @ 03.02.2007. 12:17 ] @
Citat:
sem13: Ljudi imam problem da ubacim sliku u MySQL bazu i da je posle izvucem.
Stvarno mi je potreban savet kako to da uradim.

Ja nisam programer, ali par osnovniih ideja:
- MySQL ne zna za sliku kao takvu. Sadrzaj samog fajla sa slikom, tough, mozes smestiti u BLOB polje. Ne bi bilo zgoreg da negde u toj tabeli drzi i par informacija o samoj slici, mada to vec imas i u fajlu... cisto bice ti lakse.
- Sliku ces izvuci prostim citanjem tog BLOB polja. Snimanje na disk je potom trivijalno, posebno ako si sacuvao ime... Ako hoces sliku na web strani, trebalo bi da je sasvim dovoljno da je "otstampas" na stdout i da to das web serveru.... Koliko se ja secam perl-a (valjda je slicno), mislim da ces morati da das i content type pre same slike. Tip slike ti pise u fajlu (magic number), ako ga vec nisi sacuvao u okviru informacija u slici. :)
- Znas, Google je tvoj prijatelj. Ne sumnjam da ces JAKO lako naci detalje za koji god jezik zelis da koristis za svega par minuta, a verovatno i pogodnu biblioteku...
[ djovan01 @ 20.02.2007. 12:53 ] @
Ovako

Prvo kreiraj tabelu u bazi gde trebas smestiti sliku ili bilo koji drugi fajl koji treba da bude upload-ovan kao attachment.

CREATE TABLE uploads (id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, description CHAR(50), data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50) );


///Posle toga napravis formular.///
<form method="post" action="upload.php" enctype="multipart/form-data">
Description:<br>
<input type="text" name="form_description" size="40">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>

///ovo ti je upload.php koji vrsi upload fajla///
<?php
mysql_connect("your.server.com","username","password");
mysql_select_db("database_name");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY("INSERT INTO uploads (description, data,filename,filesize,filetype) ". "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysql_insert_id();
print "<p>File ID: <b>$id</b><br>";
print "<p>File Name: <b>$form_data_name</b><br>";
print "<p>File Size: <b>$form_data_size</b><br>";
print "<p>File Type: <b>$form_data_type</b><p>";
print "To upload another file <a href=http://www.yoursite.com/yourpage.html> Click Here</a>";
?>

///a ovako izvlacis fajl///
<?php
mysql_connect("your.server.com","username","password");
mysql_select_db("database_name");
$query = "SELECT data,filetype FROM uploads where id=$id";
$result = MYSQL_QUERY($query);
$data = MYSQL_RESULT($result,0,"data");
$type = MYSQL_RESULT($result,0,"filetype");
Header( "Content-type: $type");
print $data;
?>

Nadam se da sam bila jasna. Ako nesto ne razumes javi.



[ Dejan Topalovic @ 20.02.2007. 14:37 ] @
@djovan01: Mozes li mi navesti nekoliko argumenata, zasto bi bilo bolje smjestati slike u bazu, a ne u neki direktorijum na file systemu, a u bazu samo putanju do tog fajla?

@Moderator: Da li se trebaju brisati poruke u kojima se daje pogresan pristup (pogresno rjesenje) koristenju baze podataka?
[ djovan01 @ 23.02.2007. 15:23 ] @
Topalovicu ne znam odgovor na tvoja pitanja. Zasto me pitas to?
[ misk0 @ 25.02.2007. 14:30 ] @
@Dejan: Sto se mene tiche, tema nema veze toliko sa bazom, kao ni sa mySQL, princip je svagdje manje vishe isti - vishe zavisi od programskog jezika koji se koristi.
Osim toga, ne vidim sta je 'pogresno rjesenje'? (nisam provjeravao ovaj HTML/PHP kod, mozda tamo ima gresaka)?
[ vladobk @ 03.06.2008. 18:29 ] @
morao sam da aktiviram temu da bih naucio ovo za pocetak ali kod ne radi prijavljuje greske

Code:

Notice: Undefined variable: form_data in G:\bkSite\essql1\upload.php on line 29

Notice: Undefined variable: form_data in G:\bkSite\essql1\upload.php on line 29

Warning: fread(): supplied argument is not a valid stream resource in G:\bkSite\essql1\upload.php on line 29



i jos neke a evo i linije 29
Code:

$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY("INSERT INTO uploads (description, data,filename,filesize,filetype) ". "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysql_insert_id();


[ w3industry @ 04.06.2008. 12:07 ] @
Sliku ne treba cuvati u MYSQL bazi, u bazu idu samo tekstualni podaci, ne znam odakle ti ideja da celu sliku stavis u bazu. Ako sliku stavis u bazu, ona će da poveca bazu za svoju količinu u KB, sto se naravno ne preporucuje.

Sliku stavljas u neki diretktorijum, i dodeljujes joj neko jedinstveno ime, da ne bi bilo mešanje ili slučajnog brisanja slike nekom drugom slikom.
Možeš ime slike da vežeš za ID podatka, recimo ako je slika vezana za vest, a vest ima ID=5, sliku preimenujes u recimo 5_imeslike.jpg.
Možeš na ime slike recimo da dodaš timestemp, 1177743600_imeslike,jpg ....

U bazu upisujes u recimo varchar polje samo ime slike npr. 1177743600_imeslike,jpg. ili celu putanje /slike/1177743600_imeslike,jpg i nema problema.

Inace moj drugar, koje drzi neki hosting je imao proglem sa programiranjem svog klijenta koji je drzao slike u bazi, baza je bila velika, posle izvesnog vremena oko 500MB i morao je da mu vrati pare i klijenta je obavestio da zbog velicine baze ne moze da hostuje njegov sajt.
[ vladobk @ 04.06.2008. 14:47 ] @
Slazem se da sliku ne treba drzati u bazi vec samo njenu adresu.Mislio sam da prvo naucim ovu varijantu pa posle bolju varijantu jer sam jos u fazi ucenja.Uspeo sam da smesti m sliku u bazu ali sa drugim kodom ali kada je citam dobijem samo karaktere.
Pozdrav
[ dakipro @ 04.06.2008. 14:52 ] @
A zasto bi ucio odmah losiju (da ne kazem pogresnu) varijantu?
Bolje to vreme potrosi na ucenje neceg drugog, a kad bude trebalo da se slika cuva u bazi, vec ces nauciti i da se snalazis
Meni iskreno (jos) nikad zatrebalo nije...

kojim kodom je cits iz baze?
[ vladobk @ 04.06.2008. 17:17 ] @
Mislio sam da je tako lakse i skrpio sam neki kod. Gif format slike mi prikaže samo mesto slike i njenu veličinu, a jpg format samo karaktere. A evo i skraćenog koda:
Code:

<form name="form1" enctype="multipart/form-data" method="post" action="upload.php">
  <input type="file" name="image">  
  <input type="submit" name="Submit" value="Submit">
</form>

upload
Code:

$sql = "insert into images (id, image, image_blob) 
                  values
          (NULL, '".$_FILES['image']['name']."','".addslashes(fread(fopen($_FILES['image']['tmp_name'], "rb"),100000))."')";

mysql_query($sql) or die ("neuspesno");
echo"ok";

prikaz
Code:

while ( $row = mysql_fetch_array($query) ) { 
    $id = $row["id"];
    $image = $row["image"];
    $image_blob = $row["image_blob"];
echo"
<table width='500' border='1' align='center'>
  <tr>
    <td width='500'>redni broj slike $id $image <br></td>
  </tr>
    <td width='500'><img src='$image_blob' width='200' height='200'></td>
  </tr>
</table>";
}
[ vatri @ 05.06.2008. 20:54 ] @
Ja sam ovako uradio:

unesi.php:

Code:

<form enctype="multipart/form-data" action="unos.php" method="post">
Slika: <br><input type="file" name="slika"><br><br>
<input type="submit" value="Upisi!">
</form>


unos.php:

Code:


...
$slika=$_FILES['slika']['name'];
...

copy($_FILES['slika']['tmp_name'], "$folder".$slika) or die ("Slika nije kopirana !!!");
mysql_connect($adresa,$username,$pass) or die('KONEKT NA HOST!!!');
mysql_select_db($baza);

mysql_db_query($baza,"insert into neka_tabela values('','$naziv','$tekst','$slika')");
echo'Uspjesno ste unjeli podatke u Bazu<br><a href=".">nazad</a>';



Sta kazete na ovaj nacin?
[ vladobk @ 07.06.2008. 16:17 ] @
ma ubacvio sam slikuu ali kad je citam onda vidim samo karaktere nije mi dobar kod za citanje
[ _Diamond_ @ 21.09.2020. 09:57 ] @
I ja imam problem da uploadujem sliku i da je prikažem, može pomoć ? Hvala.

Code:
  $conn = mysqli_connect("localhost", "root", "");
    $sql = "CREATE DATABASE IF NOT EXISTS BAZA01";
    mysqli_query ($conn, $sql);
    $conn = mysqli_connect("localhost", "root", "", "BAZA01");
$sql = "CREATE TABLE uploads (id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, description CHAR(50), data (50), filename CHAR(50), filesize CHAR(50), filetype CHAR(50) )";
mysqli_query ($conn, $sql);


$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQLi_QUERY("INSERT INTO uploads (description, data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysqli_insert_id();
echo "<p>File ID: <b>$id</b><br>";
echo "<p>File Name: <b>$form_data_name</b><br>";
echo "<p>File Size: <b>$form_data_size</b><br>";
echo "<p>File Type: <b>$form_data_type</b><p>";

$conn2 = mysqli_connect("localhost", "root","", "BAZA01");
$query = "SELECT data,filetype FROM uploads where id=$id";
$result = mysqli_query ($conn2, $query);
$data = MYSQLi_RESULT($result,0,"data");
$type = MYSQLi_RESULT($result,0,"filetype");
Header( "Content-type: $type");
print $data;
?>
<form method="post" action="#" enctype="multipart/form-data">
<input type="text" name="form_description" size="40">
<br>File to upload:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>


Citat:
Notice: Undefined variable: form_data in /opt/lampp/htdocs/Login/001.php on line 17

Warning: fopen(): Filename cannot be empty in /opt/lampp/htdocs/Login/001.php on line 17

Notice: Undefined variable: form_data in /opt/lampp/htdocs/Login/001.php on line 17

Warning: fread() expects parameter 1 to be resource, bool given in /opt/lampp/htdocs/Login/001.php on line 17

Notice: Undefined variable: form_description in /opt/lampp/htdocs/Login/001.php on line 18

Notice: Undefined variable: form_data_name in /opt/lampp/htdocs/Login/001.php on line 18

Notice: Undefined variable: form_data_size in /opt/lampp/htdocs/Login/001.php on line 18

Notice: Undefined variable: form_data_type in /opt/lampp/htdocs/Login/001.php on line 18

Warning: mysqli_query() expects at least 2 parameters, 1 given in /opt/lampp/htdocs/Login/001.php on line 18

Warning: mysqli_insert_id() expects exactly 1 parameter, 0 given in /opt/lampp/htdocs/Login/001.php on line 19

File ID:

Notice: Undefined variable: form_data_name in /opt/lampp/htdocs/Login/001.php on line 21

File Name:

Notice: Undefined variable: form_data_size in /opt/lampp/htdocs/Login/001.php on line 22

File Size:

Notice: Undefined variable: form_data_type in /opt/lampp/htdocs/Login/001.php on line 23

File Type:


Fatal error: Uncaught Error: Call to undefined function MYSQLi_RESULT() in /opt/lampp/htdocs/Login/001.php:28 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/Login/001.php on line 28
[ Tpojka @ 21.09.2020. 11:17 ] @
Code (php):

if (isset($_POST['submit'])) {
    // PHP code
}

// form code
 
[ _Diamond_ @ 21.09.2020. 19:22 ] @
Dobijam istu grešku, samo što se greška pojavi kada pritisnem "submit".
[ edin.n @ 21.09.2020. 19:52 ] @
Ja mislim da si ti pogriješio u bazi jer ti je dužina fajla veci od 50 karaktera.
Provjeri sa var_dump(); i strlen();
Pozdrav
[ _Diamond_ @ 21.09.2020. 20:53 ] @
U redu, gde da ubacim i koje promenljive da proverim ?
[ Tpojka @ 21.09.2020. 21:07 ] @
Citat:
_Diamond_:
Dobijam istu grešku, samo što se greška pojavi kada pritisnem "submit".


Sad vidim i da svaki put kreiraš tabelu što ti vjerovatno nije cilj.
Koja je tačno linija 17?
[ _Diamond_ @ 22.09.2020. 15:08 ] @
16 if (isset($_POST['submit'])) {
17
18 $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
19 $result=MYSQLi_QUERY("INSERT INTO uploads (description, data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
20 $id= mysqli_insert_id();
21 echo "<p>File ID: <b>$id</b><br>";
22 echo "<p>File Name: <b>$form_data_name</b><br>";
23 echo "<p>File Size: <b>$form_data_size</b><br>";
24 echo "<p>File Type: <b>$form_data_type</b><p>";

Citat:
Notice: Undefined variable: form_data in /opt/lampp/htdocs/Login/001.php on line 18

Warning: fopen(): Filename cannot be empty in /opt/lampp/htdocs/Login/001.php on line 18

Notice: Undefined variable: form_data in /opt/lampp/htdocs/Login/001.php on line 18

Warning: fread() expects parameter 1 to be resource, bool given in /opt/lampp/htdocs/Login/001.php on line 18

Notice: Undefined variable: form_description in /opt/lampp/htdocs/Login/001.php on line 19

Notice: Undefined variable: form_data_name in /opt/lampp/htdocs/Login/001.php on line 19

Notice: Undefined variable: form_data_size in /opt/lampp/htdocs/Login/001.php on line 19

Notice: Undefined variable: form_data_type in /opt/lampp/htdocs/Login/001.php on line 19

Warning: mysqli_query() expects at least 2 parameters, 1 given in /opt/lampp/htdocs/Login/001.php on line 19

Warning: mysqli_insert_id() expects exactly 1 parameter, 0 given in /opt/lampp/htdocs/Login/001.php on line 20

File ID:

Notice: Undefined variable: form_data_name in /opt/lampp/htdocs/Login/001.php on line 22

File Name:

Notice: Undefined variable: form_data_size in /opt/lampp/htdocs/Login/001.php on line 23

File Size:

Notice: Undefined variable: form_data_type in /opt/lampp/htdocs/Login/001.php on line 24

File Type:


Fatal error: Uncaught Error: Call to undefined function MYSQLi_RESULT() in /opt/lampp/htdocs/Login/001.php:29 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/Login/001.php on line 29
[ Tpojka @ 22.09.2020. 15:42 ] @
Kreni čitati i rješavati liniju po liniju.

Prva greška javljena je da nema definicije `$form_data` varijable nado kojom želiš upotrijebiti fread funkciju.
[ Nemanja Avramović @ 11.10.2020. 13:36 ] @
To ti je neki (pra)stari tutorijal, batali mysqli_ funkcije i predji na pdo

I za svako polje moras da uradis dodeljivanje vrednosti, npr:

Code:
$form_description = $_POST['form_description'];


register_globals vise ne postoji u php-u