chciałbym zrobić panel admina dla funkcjonalności działu: "downloadu plików". Czyli by można było dodawać z panelu admina nowe programy m wraz z opisem i możliwością pobrania by na stronie wyświetlało się tak tak:
Kod
PSPAD EDITOR
--------------------
PSPad jest rozbudowanym i konfigurowalnym edytorem napisanym przez czeskiego programistę Jana Fialę. Projekt powstał, żeby ułatwić prace twórcom zmuszonym do korzystania z wielu różnych środowisk programistycznych. Przy pomocy jednego darmowego narzędzia mogą oni edytować wiele rodzajów plików, korzystając z podświetlania składni oraz dużych możliwości konfiguracyjnych.
Pobierz Zgłoś błąd
Kod
NOTEPAD++ 5.5.
-------------------
Notepad++ jest bardzo dobrym, darmowym edytorem kodów źródłowych. Projekt bazuje na potężnym komponencie edytora tekstu - Scintilla. Aplikacja jest napisana w C++, czystym Win32 Api i STL dzięki czemu działa wydajniej a wielkość pliku jest bardzo mała.
Pobierz Zgłoś błąd
itd.
Chciałbym ponadto by nazwa programu, opis i nazwa pliku, który będzie pobierany były zapisywane w bazie danych.
A więc najpierw tworzę tabelę w bazie danych o nazwie skrypty:
CREATE TABLE `skrypt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nazwa_pliku` varchar(30) NOT NULL,
`opis` text NOT NULL,
`nazwa_s` varchar(35) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=latin2
następnie chce pobrać te wartości od użytkownika aby zapisać je w bazie danych
<form action="" method="post">
Nazwa programu:<input type="text" name="nazwa_s" maxlength="35" /><br />
Opis:<textarea rows="10" cols="30" name="opis" /></textarea><br />
Nazwa pliku<input type="text" name="nazwa_pliku" maxlength="30"/>
<input type="hidden" name="submitted" value="TRUE" />
<input type="submit" name="submit" value="Zapisz" />
</form>
Sprawdzam czy wszystkie pola zostały wprowadzone, a jeśli nie ma błedów to podane 3 wartości zapisuje w bazie danych:
<?php
if(isset($_POST['submitted'])) {
require_once('dane.php'); //dołączam plik z połączeniem do bazy danych
if(empty($_POST['nazwa_s'])) {
$errors[] = 'Nie podałeś nazwy programu';
}
else
{
$nazwa_s = mysqli_real_escape_string
($dbc,trim($_POST['nazwa_s'])); }
if(empty($_POST['opis'])) {
$errors[] = 'Nie podałeś opisu';
}
else
{
$opis = mysqli_real_escape_string
($dbc,trim($_POST['opis'])); }
if(empty($_POST['nazwa_pliku'])) {
$errors[] = 'Nie podałeś nazwy pliku';
}
else
{
$nazwa_pliku = mysqli_real_escape_string
($dbc,trim($_POST['nazwa_pliku'])); }
{
$query = "INSERT INTO skrypt(nazwa_s,nazwa_pliku,opis) VALUES('$nazwa_s','$nazwa_pliku','$opis')";
$wynik = mysqli_query($dbc,$query);
if($wynik)
{
}
else
{
echo 'wystapiły nieoczekiwane błedy'; }
}
else
{
foreach($errors as $msg)
{
echo "błąd - $msg<br />"; }
}
}
?>
calosc wyglada tak:
nazwa pliku:
dodaj_program.php <?php
if(isset($_POST['submitted'])) {
require_once('dane.php'); //dołączam plik z połączeniem do bazy danych
if(empty($_POST['nazwa_s'])) {
$errors[] = 'Nie podałeś nazwy programu';
}
else
{
$nazwa_s = mysqli_real_escape_string
($dbc,trim($_POST['nazwa_s'])); }
if(empty($_POST['opis'])) {
$errors[] = 'Nie podałeś opisu';
}
else
{
$opis = mysqli_real_escape_string
($dbc,trim($_POST['opis'])); }
if(empty($_POST['nazwa_pliku'])) {
$errors[] = 'Nie podałeś nazwy pliku';
}
else
{
$nazwa_pliku = mysqli_real_escape_string
($dbc,trim($_POST['nazwa_pliku'])); }
{
$query = "INSERT INTO skrypt(nazwa_s,nazwa_pliku,opis) VALUES('$nazwa_s','$nazwa_pliku','$opis')";
$wynik = mysqli_query($dbc,$query);
if($wynik)
{
}
else
{
echo 'wystapiły nieoczekiwane błedy'; }
}
else
{
foreach($errors as $msg)
{
echo "błąd - $msg<br />"; }
}
}
?>
<form action="" method="post">
Nazwa programu:<input type="text" name="nazwa_s" maxlength="35" /><br />
Opis:<textarea rows="10" cols="30" name="opis" /></textarea><br />
Nazwa pliku<input type="text" name="nazwa_pliku" maxlength="30" />
<input type="hidden" name="submitted" value="TRUE" />
<input type="submit" name="submit" value="Zapisz" />
</form>
Dane zapisują się w bazie danych, ale: nazwa pliku wolałbym by była wczytywana za pomocą okna z dysku użytkownika i zapisywana do bazy. W tej chwili trzeba ją wpisywać z rozszerzeniem ale to uciązliwe. Jak zrobić takie okno?
Teraz tworzę strone wyświetl_dzial_download, która wyświetli wszystkie programy jakie mam w bazie, dając użytkownikowi możliwość pobrania ich na dysk
Tak zakodowałem strone
wyswietl_dzial_download.php:
<?php
require_once('../dane.php'); //dołączam połączenie z bazą
$query = "SELECT * FROM skrypt";
$result = mysqli_query($dbc,$query);
if($result)
{
while($wynik = mysqli_fetch_array($result,MYSQL_ASSOC))
{
echo "<b>{$wynik['nazwa_s']}</b><br />{$wynik['opis']}<br />"; echo("<a href=\"/poznajnet/skrypty/wyswietl_skrypt.php?do=download&fileid={$wynik['id']}\">pobierz</a>"); $do = @$_REQUEST["do"];
$fileid = @$_REQUEST["fileid"];
if($fileid = $wynik['id'] && $do = 'download')
{
header("Content-type: application/zip"); header("Content-Disposition: attachment; filename={$wynik['nazwa_pliku']}"); }
}
}
else
{
echo 'Nie udało się wyświetlić danych'; }
?>
Jednak nie działa ona prawidłowo, owszem wypisane zostają nazwa programu i opis, ale nie działa link "pobierz",dzięki któremu użytkownik będzie mógł pobrać program na dysk. Dodatkowo wyświetlają się dwa ostrzeżenia: "header alredy sent...." rozumiem że nagłówki powinny być na samej górze przed instrukcjami echo ale nie bardzo wiem jak zmodyfikować ten kod.
Wydaje mi się tez ze instrukcja if($fileid = $wynik['id'] && $do = 'download') jest niewłaściwa, jaki warunek tam wstawić by plik był pobierany tylko po naciśnięciu linka?
PO przetestowaniu tego w przeglądarce tak to wygląda:
Cytat
avast
PSPad jest rozbudowanym i konfigurowalnym edytorem napisanym przez czeskiego programist? Jana Fial?. Projekt powsta?, ?eby u?atwi? prace twórcom zmuszonym do korzystania z wielu ró?nych ?rodowisk programistycznych. Przy pomocy jednego darmowego narz?dzia mog? oni edytowa? wiele rodzajów plików, korzystaj?c z pod?wietlania sk?adni oraz du?ych mo?liwo?ci konfiguracyjnych.
pobierz
Warning: Cannot modify header information - headers already sent by (output started at D:\usr\poznajnet\skrypty\wyswietl_skrypt.php:9) in D:\usr\poznajnet\skrypty\wyswietl_skrypt.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at D:\usr\poznajnet\skrypty\wyswietl_skrypt.php:9) in D:\usr\poznajnet\skrypty\wyswietl_skrypt.php on line 16
PK����Ľ�~/ţé ę��K�����2_23.phpĽTËnŰ0źČ?lŁ ň°�6'yiZä� uŇCa�"Sś�H*�ţ÷î��,ÇN[ A\îÎg�,�L¸ÖŹSĆ3ö�?eŚŰ$yŹ5\�ĹÉ�Ă<Ä : -žd � �ć˛ŕQ*edŁA˘HH0*ÎňLĚ@#Ŕ�EĄŤLł��¸ŕT�Š6VfS\îűU"�R!ĽqŽyżŐąˇá:Vźŕ�+ Ú`ZSa�ĄÍjáş��LSř¤ˇ�EçĎ��ĎmQĂ�eźwqrŻ ę�%�=$ŇJ$&�˘�54'5Ď]Ď�FU´&|Ąę�Őë�yŚ÷�§Łş˘Y luŻ)˛jR�Ä|ĹMĽD-Í:ČT� žź2YÁN°�[ĘšäÜě:é�n�]�qSůŚëĄYps6¸¸ž�\}ž<B�'Ä� ˝*^Ä÷ë*6ř]<ÂĘťůü�´ĄzJ� �ľŃěU]H*Ó¨,fZŇ dÉĹë<<�˛ÇŇŮ/:Ĺéw ŻŃ%U<�"őr×áN�äRs�QˇÖ\�ŞýÓeěůéâuLćŇ�ŁB#Ôtąć�ĆŠesŁi:�MD�çtŢ�w\ÓťżÖĚ�xä%ô��\x�O7ĘLco\��?�ćÎe��'l˝;WJŞáĺa×^Éq*ßá˝7ßÝüw-ąÚ�nîEËnz§\ńY6QźĚă�ł`8ěé˙zăńyđCŠ5=[EďŮÉ�˛2+||Cę×j7#3ŚFž�ôŚž�#oˇi�U:}T�áŢ��ě�O+�Ďóý+űó�él°ţ˙{ÚŰ�Ćąbe|+žúFŹŃř��Ű�{+\sţTćrĘ�ÓŠČ%EâXi�`�Ę Ú�áţ�Žü���qCŐîď8�b°89�ßPK����Ľ�~/ţé ę��K���������� �������2_23.phpPK������6�������
Prosiłbym o pomoc.