Šta je novo?

PHP: Dugme za download fajlova svih raznih formata iz mysql baze

shone83

Poštovan
Učlanjen(a)
04.11.2015
Poruke
50
Poena
59
Pozdrav,

Napravio sam upload fajlova preko dropzone.js biblioteke odredjenih formata (.doc, .docx, .xls, .xlsx, .pdf, .txt, .ppt, .pptx, .accdb, .mdb, .jpg, .jpeg, .gif, .png, .zip, .rar, .7z) gde salje u folder uploads kao i u mysql tabelu koja se zove uploads i ona izgleda ovako:

idfilenamefiletypefilesize

a php kod za upload izgleda ovako:

Kod:
<?php

if(!empty($_FILES)) {


    $fileUpload = basename($_FILES['file']['name']);
    $fileUpload = iconv("utf-8", "cp1251", $fileUpload);
    $fileType = $_FILES['file']['type'];
    $fileSize = $_FILES['file']['size'];

    $temp = $_FILES['file']['tmp_name'];

    $dir_separator = DIRECTORY_SEPARATOR;
    $folder = "uploads";

    $destination_path = dirname(__FILE__).$dir_separator.$folder.$dir_separator;

    $target_path = $destination_path.$fileUpload;
    move_uploaded_file($temp, $target_path);

    mysqli_query($connection, "set names utf8");
    $stmt = mysqli_prepare($connection, "INSERT INTO uploads(filename, filetype, filesize) VALUES(?, ?, ?)");
    mysqli_stmt_bind_param($stmt, 'sss', $fileUpload, $fileType, $fileSize);
    mysqli_stmt_execute($stmt);

    confirmQuery($stmt);

}

?>

<form action="upload.php" class="dropzone"></form>

i to radi. Medjutim, nikako da mi podje za rukom da napravim dinamicno download dugme za svaki fajl posebno koje ce da radi. Na drugoj stranici sam napravio da mi izbacuje to sto se okaci na prethodnoj i to radi sa ovim kodom:

Kod:
$query = "SELECT * FROM uploads";
$select_uploads = mysqli_query($connection, $query);

while($row = mysqli_fetch_assoc($select_uploads)) {

$id = $row['id'];
$filename = $row['filename'];
$filetype = $row['filetype'];
$filesize = $row['filesize'];

?>

<p class="filename"><small> <?php echo $filename; ?> </small></p>

<?php

}

?>

Kako da, kad okacim neki fajl, on zajedno sa imenom dobije ispod i dugme za download?
 
Poslednja izmena:
za pocetak, gde ti je inicijalizovana promenljiva $filename? mozda si hteo da kazes umesto toga $row['filename'] ili negde pre ehovanja kazes $filename = $row['filename'];

naravno, ovo ce ti samo ispisati naziv fajla... trebace ti svakako jos tu stvari kako bi ti dugmici zaista radili.

inace, nadam se da je ovo samo za vezbu kako da odradis neku funkcionalnost jer se ovakav nacin pisanja koda odavno prevazisao...
 
Poslednja izmena:
Posle while funkcije stoji:

Kod:
$id = $row['id'];
$filename = $row['filename'];
$filetype = $row['filetype'];
$filesize = $row['filesize'];

kad sam kopirao to sam izostavio slucajno... Izmanicu prvi post.

Da, ovo mi je vise kao ucenje, znam da tu treba da ide PDO a i da se radi na principu OOP ali jos nisam stigao dotle. Idem kad tome ali prvo ovo da ukapiram...
 
Poslednja izmena:
Nije meni problem html, izgleda to meni ok tj. pojavljuje se dugme sa svakim novim fajlom (imam ispod dugmeta za download dugme za brisanje koje radi za svaki fajl koji se okaci) nego sam ovde postavio sto manje koda da bi bilo preglednije.

Po svim tutorijalima sto sam nasao oni u href stave link do fajla, ali nigde nije dinamicki. Dakle, stave:

fajlovi.php?id=nekifajl.pdf

ali meni bi trebalo:

fajlovi.php?id=<?php echo $id; ?>
ili
fajlovi.php?id={$id}

samo ne znam kako prethodno petlju da napravim...
 
ako radis fajlovi.php?id=<?php echo $id;?> ti u sustini otvaras link tipa domen.com/fajlovi.php?id=41

Tako da u fajlovima.php procitas $_GET['id'] i za njega odradis select iz baze i izvuces filename ili lokaciju fajla, a zatim forsiras download tog fajla.

Evo nasao sam na Git-u nesto sto je gotovo identicno onome sto tebi treba osim sto fali ovaj secel
https://gist.github.com/brasofilo/2863355
 
Kad to implementiram, izlazi mi:
Notice: Undefined index: file in C:\xampp\htdocs\kapCMS\fajlovi.php on line 75

s tim sto sam samo uradio copy/paste i dugme izgleda ovako:

Kod:
<p><a name="download" href="fajlovi.php?file=./uploads/<?php  echo $file_name; ?>" class="btn btn-primary btn-xs" role="button"><i class="fa fa-download"></i> Preuzmi</a></p>

jednostavno ne kapiram kako da pokupim taj fajl iz foldera...
 
Uspeo sam donekle preko ovog tutorijala, samo je problem sto on nalazi samo prvog unesenog tj. onog ciji je ID sa najnizim brojem.

Stavio sam LIMIT 1 pri selektovanju querija da mi ne bi sve sto postoji u folderu uploads stavio u jedan div, i ona sada lepo ispisuje za svaki fajl posebno download dugme ali samo skida prvi fajl...
 
Poslednja izmena:
Uspeo sam. Imao sam jedan query previse, izbrisao sam drugi i iskoristio vrednost $filename umesto $file iz drugog iz prvog i uspelo je, previse sam iskomplikovao ***.
 
Nemoj ovako, nećeš nigde stići. Savladaj MVC koncept. Prouči malo onaj PIP koji sam ostavio u nekoj od tema, potroši par dana i progledaćeš.

Sent from my Nexus 6P using Tapatalk
 
Hocu, to mi je u planu. Ovo radim ovako jer mi je u sklopu jednog projekta koji sam zapoceo u ovom proceduralnom stilu, pa mi je cilj da sto vise ovako ukapiram da bih se presaltao na ovo sto si mi ti napisao i jos OOP, Laravel... Jednostavno, mislim da jos uvek nemam dovoljno razumevanja za neke stvari pa cu sa rupama u znanju da predjem u nesto ozbiljnije... Ali, mozda gresim...

Da je samo par dana nije problem da potrosim ali s obzirom da sam samouk i da nemam koga da pitam za prolebm osim po forumima mislim da ce mi trebati vise...

Imam ovaj link sto si mi prosledio:
http://gilbitron.github.io/PIP/
 
Poslednja izmena:
Da baš taj. Moj savet je da odmah odustaneš od ovoga što si do sada uradio i da se prebaciš na pip. Skapiraćeš ga bas lako i uradićeš to što si zamislio elegantnije i sa manje problema.

Sent from my Nexus 6P using Tapatalk
 
A zasto bas PIP? Sta ga razlikuje od Laravel za koji vidim da je natrazeniji?
 
Laravel je previše kompleksan za tebe u ovom trenutku. Kad skapiraš MVC koncept, onda će ti razumevanje Laravela biti lakše.

Uradi jedan lagani projekat u PIP-u pa sledeći možeš da probaš u Laravelu.

Sent from my Nexus 6P using Tapatalk
 
Nazad
Vrh Dno