kononowicz
15.01.2007, 22:14:05
witam.
Chciałbym zrobić na stronie dział promocje...
i w tym dziale miałyby byc fotki towarów wraz z opisem...
i zeby mozna to jakos kontrolować (dodawać fotki i opis z formularza) ...
Czy ktoś wie jak sie za to zabrać... jak to zrobić??
Cienki1980
15.01.2007, 22:19:18
Najprościej to stworzyć w bazie danych tabelę w której będziesz przechowywał dane o promocjach, na stronie gdzie będą widoczne promocję wyciąganie i wyświetlanie tych informacji z bazy.
Dodawanie informacji do bazy z formularza ... to już zupełne podstawy.
kornel-php
15.01.2007, 22:22:28
1. Formularz dodający/edytujący fotki i opisy do bazy danych/ew. do pliku
2. Skrypt odczytujący zawartość pliku/bazy danych

Edit: Sorki za replay, nie zauważyłem, że kolega już to napisał...
kononowicz
15.01.2007, 22:22:37
Cytat(Cienki1980 @ 15.01.2007, 22:19:18 )

Najprościej to stworzyć w bazie danych tabelę w której będziesz przechowywał dane o promocjach, na stronie gdzie będą widoczne promocję wyciąganie i wyświetlanie tych informacji z bazy.
Dodawanie informacji do bazy z formularza ... to już zupełne podstawy.
a można w bazie mysql jako rekord dawać fotki

i jak to sie robi??
Cienki1980
15.01.2007, 22:25:04
Teoretycznie można ( pole chyba bloob albo jakoś tak - nigdy nie używałem ), ale wystarczy jak do bazy wpiszesz np link do zdjęcia, jego nazwe itp ... a zdjęcia fizycznie uploadujesz na serwer.
kononowicz
15.01.2007, 22:27:14
Cytat(Cienki1980 @ 15.01.2007, 22:25:04 )

Teoretycznie można ( pole chyba bloob albo jakoś tak - nigdy nie używałem ), ale wystarczy jak do bazy wpiszesz np link do zdjęcia, jego nazwe itp ... a zdjęcia fizycznie uploadujesz na serwer.
teraz wydaje się to prostę ... gdybym miał jakies problemy będe pisać . dzieki
ps. a czy ktoś jednak ma jakis przykład?? chętnie lukne jak on to zrobił.
i czy lepiej zrobic wartosc blob w bazie i tam umieszczac fotki czy w oddzielnym folderze na serwerze? wydaje mi sie ze chyba lepiej w folderze co nie obciaza tak bazy. prawda?
godz. 2:57 - nie moge sobie poradzic z tym dziadostwem... moja tabelka zawiera ID(int) OPIS(text) i FOTO (blob)
na razie spłodziłem i pewnie wszystko źle:
<?php
$zapytaniea = "SELECT * FROM promocje";
{
print '<img src="'.$wiersz['foto'].'" '; }
print '<img src="'.$wiersz['foto'].'" ';
<FORM ACTION="promocje.php" METHOD="POST" ENCTYPE="multipart/form-data" ACCEPT="image/gif, image/jpeg" id="formform">
<input type="hidden" name="MAX_FILE_SIZE" value="8192">
<p>
<legend>Wyślij ten plik:</legend>
<input type="file" name="foto" id="foto" class="tekst">
</p>
<p>
<legend>dodaj opis:</legend>
<input type=text name="opis" id="opis" class="tekst">
</p>
<input type="submit" value="dodaj" name="dodaj" class="przycisk">
</FORM>
';
if(isset($_POST['dodaj'])) {
$opis = $_POST['opis'];
$foto = $_POST['foto'];
$zapytanie = "INSERT INTO promocje VALUES ('NULL', '$opis', '$foto')";
if($wykonaj)
print 'wysłało badziewie'; else
}
else
?>
po przeroznych kombinacjach wyswietliło mi taki komunikat:
Obrazek "http://************x.php" nie może zostać wyświetlony, ponieważ zawiera błędy.
babejsza
16.01.2007, 09:31:37
Wyraźnie Ci napisano abyś nie przechowywał plików w bazie danych. Jest to rozwiązanie złe i nie optymalne. W bazie masz przechowywać tylko dane o tym pliku (jego nazwa, ew. opis, id) a na serwerze sam plik.
zapoznaj się z tym:
http://pl2.php.net/manual/pl/features.file...oad.post-method
kononowicz
16.01.2007, 13:12:26
Cytat(babejsza @ 16.01.2007, 09:31:37 )

Wyraźnie Ci napisano abyś nie przechowywał plików w bazie danych. Jest to rozwiązanie złe i nie optymalne. W bazie masz przechowywać tylko dane o tym pliku (jego nazwa, ew. opis, id) a na serwerze sam plik.
zapoznaj się z tym:
http://pl2.php.net/manual/pl/features.file...oad.post-methodwyczytałem e dla małej ilosci rekordów w tabeli i dla w sumie dosc małych fotek to jest rozwiazanie dobre... ale spróbuje jednak zrobic po twojemu :]
a jak robic upload fotki do jakiegos katalogu na serwerze?? zeby z poziomu przegladarki można wysłac fotke na serwer bo to mi nie dziala:
<?php
<form enctype="multipart/form-data" action="x.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="50000" />
<input name="plik" type="file" />
<input type="submit" value="Wyślij plik" />
</form>';
$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwa = $_FILES['plik']['name'];
$plik_rozmiar = $_FILES['plik']['size'];
echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
}
?>
Ociu
16.01.2007, 13:40:12
Cytat(kononowicz @ 16.01.2007, 00:22:37 )

a można w bazie mysql jako rekord dawać fotki

i jak to sie robi??
Można. Tworzysz wiersz BLOB, a fotke kodujesz
base64_encode" title="Zobacz w manualu php" target="_manual. Gdy będziesz chciał wyciągnąc rozkodowujesz za pomocą
base64_decode" title="Zobacz w manualu php" target="_manual.
pozdrawiam
noels
16.01.2007, 14:11:25
Sposób na upload pliku na serwer zakładając, że stworzyłeś już formularz z polem w którm podaje się link do pliku i przesyłasz taki formularz do skryptu który ma zrealizować zapisanie pliku na serwerze:
<?php
$max_rozmiar = 1000000;
{
$naz=$_FILES['plik']['name'];
if ($_FILES['plik']['size'] > $max_rozmiar)
{
echo 'Plik jest za duży!'; }
{
echo 'ISTNIEJE JUŻ PLIK O PODANEJ NAZWIE !<BR>ZMIEŃ NAZWĘ PLIKU';
}
else
{
echo 'Odebrano zdjecie. <BR>Nazwa: '.$_FILES['plik']['name'];
if (isset($_FILES['plik']['type'])) {
echo 'Typ: '.$_FILES['plik']['type'].'<br/>'; }
}
}
?>
To oczywiście tylko schematyczny kod, a nie gotowy skrypt ....
kononowicz
16.01.2007, 14:47:37
uzyłem Twoj skrypt jednak wychodzi mi:
Odebrano zdjecie.
Nazwa: 2r.jpgTyp: image/jpeg
Warning: move_uploaded_file(upload/): failed to open stream: Is a directory in /home/*****/*********/public_html/******/x.php on line 45
Warning: move_uploaded_file(): Unable to move '/tmp/phpuY3IMZ' to 'upload/' in /home/*****/******/public_html/*****/x.php on line 45
<?php
<form enctype="multipart/form-data" action="x.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="50000" />
<input name="plik" type="file" />
<input type="submit" value="Wyślij plik" />
</form>';
$max_rozmiar = 1000000;
{
$naz=$_FILES['plik']['name'];
if ($_FILES['plik']['size'] > $max_rozmiar)
{
echo 'Plik jest za duży!'; }
{
echo 'ISTNIEJE JUŻ PLIK O PODANEJ NAZWIE !<BR>ZMIEŃ NAZWĘ PLIKU';
}
else
{
echo 'Odebrano zdjecie. <BR>Nazwa: '.$_FILES['plik']['name'];
if (isset($_FILES['plik']['type'])) {
echo 'Typ: '.$_FILES['plik']['type'].'<br/>'; }
$q=$nazwa_docelowa;
$r=$_FILES['plik']['size'];
$d=date("Y m d, H:i:s",$data);
{
unlink("zdjecia/$nazwa_docelowa"); }
}
}
?>
nie wiem za bardzo co robi ten kod dokladnie i czy dobrze uzupełniłem ale pwenie zle skoro nie działa...
kossa
16.01.2007, 14:57:15
Musisz mieć katalog upload z prawami zapisu.
Warto pouczyć się też php...
Łukasz
kononowicz
16.01.2007, 14:58:13
Cytat(kossa @ 16.01.2007, 14:57:15 )

Musisz mieć katalog upload z prawami zapisu.
Warto pouczyć się też php...
Łukasz
zrobiłem taki katalog ... wiem ,że warto
noels
16.01.2007, 14:59:02
Dlatego ze masz katalog zabezpieczony przed zapisem :-) Ustaw atrybuty katalogu aby nie były na "tylko do odczytu" powinno pomóc....
Aha wykorzystales kod ktory ja potem jeszcze zminilem ... zobacz jaki jest teraz po edycji bo w tym ktorego uzyles wystepowaly zmienne ktore ja przesylalem z formularza a nie sa one potrzebne .... wykorzystaj ten ktory jest teraz na forum
kononowicz
16.01.2007, 14:59:39
Cytat(noels @ 16.01.2007, 14:59:02 )

Dlatego ze masz katalog zabezpieczony przed zapisem :-) Ustaw atrybuty katalogu aby nie były na "tylko do odczytu" powinno pomóc....
ustawiłem prawa 777 i dalej nic
noels
16.01.2007, 15:03:22
Tak, ale wez wykorzystaj kod, który teraz aktualnie znajduje sie na formum bo zmienilem go jeszcze po fakcje jak go wkleilem ze wzgledu na wystepowanie w nim niepotrzebnych zmiennych
kononowicz
16.01.2007, 15:08:24
Cytat(noels @ 16.01.2007, 15:03:22 )

Tak, ale wez wykorzystaj kod, który teraz aktualnie znajduje sie na formum bo zmienilem go jeszcze po fakcje jak go wkleilem ze wzgledu na wystepowanie w nim niepotrzebnych zmiennych
po poprawieniu wychodzi takie cos:
Odebrano zdjecie.
Nazwa: 3dserce.jpgTyp: image/jpeg
Warning: move_uploaded_file(update/3dserce.jpg): failed to open stream: No such file or directory in /***************************/x.php on line 35
Warning: move_uploaded_file(): Unable to move '/tmp/phpXk9Cue' to 'update/3dserce.jpg' in /**************************/x.php on line 35
a linijka 35 to jest
<?php
?>
a tak w ogole to dlaczego najpierw uploaduje sie to tmp_name

a nie od razu do katalogu??
babejsza
16.01.2007, 15:48:22
wygląda na to, że nie masz uprawnień do katalogu /tmp/. To jest katalog gdzie plik jest domyślnie załadowywany przez serwer. Potem ten plik z tmp przenosisz no docelowego.
kononowicz
17.01.2007, 10:06:40
Cytat(babejsza @ 16.01.2007, 15:48:22 )

wygląda na to, że nie masz uprawnień do katalogu /tmp/. To jest katalog gdzie plik jest domyślnie załadowywany przez serwer. Potem ten plik z tmp przenosisz no docelowego.
bo to jest konto shelowe szkolne i raczej nie mam mozliwosci zmiany tych ustawien. mam racje??
noels
17.01.2007, 10:51:35
Myślę, że masz racje dlatego, że ten komunikat pojawia się właśnie wtedy gdy nie można uzyskać dostępu do katalogu w którym ma być przechowywany plik, a skoro zmieniłeś już atrybutu folderu to nic innego nie przychodzi mi na myśl, a skrypt z powodzeniem działa u mnie.
Przetestowałem w następującej postaci:
<?php
print'<form enctype="multipart/form-data" action="index.php" method="POST"> <input type="hidden" />
<input name="plik" type="file" />
<input type="submit" value="Wyślij plik" />
</form>';
$max_rozmiar = 1000000;
{
$naz=$_FILES['plik']['name'];
if ($_FILES['plik']['size'] > $max_rozmiar)
{
echo 'Plik jest za duży!'; }
{
echo 'ISTNIEJE JUŻ PLIK O PODANEJ NAZWIE'; }
else
{
echo 'Odebrano zdjecie. <BR>Nazwa: '.$_FILES['plik']['name'];
if (isset($_FILES['plik']['type'])) {
echo 'Typ: '.$_FILES['plik']['type'].'<br/>'; }
}
}
?>
kononowicz
17.01.2007, 10:57:48
a zapisywanie tego pliku do bazy danych mysql tez nie bedzie działac?? chodzi mi o zapisywanie jako blob
ps. w phpmyadminie jest dział zmiennie i ustawienia serwera. moze tam da sie sprawdzic co jst nie tak??
noels
17.01.2007, 11:35:11
Myślę, że powinno działać jeśli tylko masz uprawnienia do bazy, ale przemyśl przechowywanie obrazków w bazie danych wg mnie to jest straszne obciązenie dla bazy danych pomyśl jaki rozmiar będzie miała baza po zapisaniu w niej kilkuset obrazków.... w bazie danych najlepiej przechowywać scieżki lub nazwy plików ze zdjęciami
kononowicz
17.01.2007, 11:44:00
a czy już kiedys robił formularz z blob'em??
bo tez nie wiem jak sie zabrac za to kodowanie tym base64_encode ... licze na jakieś wskazówki
ps. to na razie ma być promocja w ktorej bedzie co najmniej kilkanascie wpisów wiec az tak mi bazy nie obciązy... mam nadzieje
własnie po raz kolejny przekopiowałem ten działający skrypt i okazało sie ze wychodzi komunikat ze plik dodano a jak chce dodac plik o tej samej nazwie to informuje ze taki plik juz jest... tylko o dziwo na serwerze w katalogu upload tego pliku NIE MA :/ ... o co chodzi
babejsza
17.01.2007, 11:59:25
Wkej komunikat. Według mnie dodajesz plik bez nazwy. Pewnie zmienna z nią gdzieś Ci się gubi.
kononowicz
17.01.2007, 12:04:13
dodałem linijke:
<?php
chmod("upload/$naz", 0777);
?>
do skryptu i działa[php]
dzieki za pomoc :]
a teraz jak przyporządkować konkretne zdjęcie do konkretnego opisu??
jak to rozwiązać?? opisy mogą w tabeli w bazie mysql. jak ten opis połączyć z obrazkiem i nastepnie wyswietlic na stronce?

?
...zeby po wcisnieciu wyslij od razu pojawiał sie nowy wpis w dziale promocje. wpis miałby fotke i opis...
Cienki1980
17.01.2007, 13:00:51
Stworz tabele gdzie będziesz przechowywał dane o zdjęciech mniej więcej z takimi polami :
id_foto - auto_increment
nazwa_pliku - varchar
potem tabele z komentarzami z mniej wiecej takimi polami:
id_komentarz - auto_increment
komentarz - text
data ... i co tam jeszcze chcesz
Trzecia tabela łącząca dwie powyższe:
id - auto_increment ( chociaż można i bez tego pola )
id_foto - relacja do tabeli FOTO
id_komentarz - relacja do tabeli KOMENTARZ
kononowicz
17.01.2007, 13:08:58
Cytat(Cienki1980 @ 17.01.2007, 13:00:51 )

Stworz tabele gdzie będziesz przechowywał dane o zdjęciech mniej więcej z takimi polami :
id_foto - auto_increment
nazwa_pliku - varchar
potem tabele z komentarzami z mniej wiecej takimi polami:
id_komentarz - auto_increment
komentarz - text
data ... i co tam jeszcze chcesz
Trzecia tabela łącząca dwie powyższe:
id - auto_increment ( chociaż można i bez tego pola )
id_foto - relacja do tabeli FOTO
id_komentarz - relacja do tabeli KOMENTARZ
a nie mozna jakos prosciej w jednej tabeli z id, link, opis

? bo nie wiem za bardzo jak zrobić te powiązanie...
albo czy ktoś wie moze gdzie moge znalezc gotowy skrypt na system newsów (w moim przypadku promocji) ze zdjęciami.
Chciałbym zeby w panelu admina ktory zrobiłem był formularz z inputem do wysyłania i textarea gdzie wpisuje sie opis. wszystkie opisy z fotkami powinny byc widoczne na podstronie promocje.php , a podczas usuwania jednej promocji powinno tez usuwać fotke związana z tą promocja... mam nadzieje ze nie namieszałem
Cienki1980
17.01.2007, 13:36:36
No dobra trochę przesadziłem ... nie wiem dlaczego pomyślałem o komentarzach

Starczy jedna tabela:
id - auto_increment
opis_promocji - text
data - data
plik - dane o pliku
i cokolwiek sobie wymyślisz
kononowicz
17.01.2007, 15:41:06
Cytat(Cienki1980 @ 17.01.2007, 13:36:36 )

No dobra trochę przesadziłem ... nie wiem dlaczego pomyślałem o komentarzach

Starczy jedna tabela:
id - auto_increment
opis_promocji - text
data - data
plik - dane o pliku
i cokolwiek sobie wymyślisz
dane o pliku czyli link do fotki tak?? a jak w takim przypadku zrobić zeby z formularza dodawało mi i zdjęcie i opis i wstawiało na stronke

ma ktos moze jakis gotowy skrypt albo pomysł
Cienki1980
17.01.2007, 16:14:11
Przecież tutaj nie trzeba zbytnio myśleć.
Formularz z opisem datami i co tam jeszcze chcesz do promocji, plus jeden input do plików.
Dodanie do bazy to takie samo zapytanie jak w innych przypadkach.
kononowicz
17.01.2007, 16:33:29
Cytat(Cienki1980 @ 17.01.2007, 16:14:11 )

Przecież tutaj nie trzeba zbytnio myśleć.
Formularz z opisem datami i co tam jeszcze chcesz do promocji, plus jeden input do plików.
Dodanie do bazy to takie samo zapytanie jak w innych przypadkach.
moze zle sie zapytałem.
jak zrobić zeby po wgraniu z formularza fotki w bazie danych zapisywany był link do tego pliku?? cos w tym stylu
Cienki1980
17.01.2007, 16:40:07
Przecież wiesz gdzie zapiszesz plik ( do jakiego folderu ) i jak się plik nazywa.
Czyli masz gotową ścieżke dostępu do danego obrazka.
Ścieżke zapisujesz do bazy i

Gra i Buczy
kononowicz
17.01.2007, 16:43:08
Cytat(Cienki1980 @ 17.01.2007, 16:40:07 )

Przecież wiesz gdzie zapiszesz plik ( do jakiego folderu ) i jak się plik nazywa.
Czyli masz gotową ścieżke dostępu do danego obrazka.
Ścieżke zapisujesz do bazy i

Gra i Buczy

hmmm ... ale wiesz ... ja chce zrobic cos na wzor cmsa ... zeby kazdy kto ma takie prawa mogł sobie wejsc i dodac fotke i opis i zeby to było na stronce... gdybym mieli recznie wklepywac sciezke to pewnie cos by spieprzyli ... o to chodzi
Cienki1980
17.01.2007, 16:45:10
Ale przecież TY w kodzie zadecydujesz, do jakiego folderu wrzucisz plik. Użytkownik wybierze sobie obrazek z dysku a TY w kodzie go odpowiednio obrobisz i zapiszesz w odpowiednie miejsce.
kononowicz
17.01.2007, 16:50:22
Cytat(Cienki1980 @ 17.01.2007, 16:45:10 )

Ale przecież TY w kodzie zadecydujesz, do jakiego folderu wrzucisz plik. Użytkownik wybierze sobie obrazek z dysku a TY w kodzie go odpowiednio obrobisz i zapiszesz w odpowiednie miejsce.
hmmm ... spróbuje cos wykombinowac ... prawde mowiac po prsotu nie wiem jak to zobic

ale moze cos wymysle...
po prostu nie wiem jak sie zabierac do pisania skryptów...
jak zrobić zeby pod jakaś zmienną podstawić link... jak wydobyć ze skryptu ktory został podany wczesniej link i zapisac go w jakis zmiennej



czy moge zrobic tak
<?php
$link = upload/$naz;
?>
zeby zapisać sciazke do pliku
Cienki1980
17.01.2007, 17:00:29
Ja bym zrobił tak.
<?php
$link="upload/".$nazw;
?>
mike
17.01.2007, 17:02:41
~kononowicz ten wątek jest kolejnym przykładem Twojego braku samodzielności.
Zamiast pomyśleć i przemyśleć to co ktoś Ci podpowiada walisz post za postem na forum. A wystarczyłoby napisać bardzo obszerne tłumaczące wszystko zapytanie, poczekać na odpowiedź (podpowiedź, przykład) a potem próbować , próbować i próbować.
Piszesz czasem posty w odstępie 2-5 minut.
Nie uwierzę że w tym czasie próbowałeś coś zrobić. Nie da się.
Chciałbym żebyś ograniczył ilość pisanych postów, bo tematy poruszane przez Ciebie są jednymi z prostszych (a mało tego, są również jednymi z częściej poruszanych na forum) a rozmiarami sięgają skomplikowanych i ogromnych dyskusji nad trudnymi tematami.
No bez przesad, problemu najzwyklejszego uploadu nie pojąć w 35postach ?
Potraktuj tego posta jako swego rodzaju ostrzeżenie, ponieważ z każdym Twoim postem masz do dyspozycji mniej cierpliwości moderatorów wynikającej z Twojego statusu osoby początkującej.
Przemyśl to.
P.S.
Napisałem to na forum publicznym żebys bardziej wziął sobie do serca.
Wszelkie uwagi co do tego postu proszę tylko przez PW.
kononowicz
17.01.2007, 17:04:05
Cytat(Cienki1980 @ 17.01.2007, 17:00:29 )

Ja bym zrobił tak.
<?php
$link="upload/".$nazw;
?>
spróbowałem dwa sposoby i tylko mój działa
Cienki1980
17.01.2007, 17:08:37
No to skoro Twój sposób działa .. znaczy to, że to Ty powinnnieneś mi pomagać w php a nie ja Tobie

I zgodnie z tym co napisał
mike_mech czas na Ciebie.
kononowicz
17.01.2007, 17:12:15
Cytat(Cienki1980 @ 17.01.2007, 17:08:37 )

No to skoro Twój sposób działa .. znaczy to, że to Ty powinnnieneś mi pomagać w php a nie ja Tobie

I zgodnie z tym co napisał
mike_mech czas na Ciebie.
zaczynam samodzielną prace ... ale dzieki za pomoc
ps. no i w koncu napotkałem problem (mam nadzieje ze mnie nikt nie zjedzie

)
napisałem skrypt który dodaje promocje i wyswietla... (jestem z siebie dumny

)
wszystko byłoby ok gdyby nie to ze wpisujac w textarea tekst wszystko jest ok ale jak tylko go wyswietle to nie uwzglednia mi entera i wszystko jest w jednej linii. Czy ktoś wie jak to rozwiązać??
maryaan
17.01.2007, 19:12:38
Cytat(kononowicz @ 17.01.2007, 12:04:13 )

dodałem linijke:
<?php
hmod("upload/$naz", 0777);
?>
do skryptu i działa
nie ma prawa dzialac bo nie istnieje funkcjia hmod(), jest chmod()! jak juz wklejasz kody to takie zeby dzialaly i osoba poczatkujaca nie musiala pisac kolejnego tematu "skopiowalem skrypt i nie dziala..."
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.