[php] pierwszy plik sie nie zapisuje, kolejne owszem

0
function addPhoto(){
	global $smarty, $photosTable, $maxFileSize;

	mysqlconnect();

      	if($_FILES['photo']['type']=="image/bmp"){ $type="bmp"; }
      	elseif($_FILES['photo']['type']=="image/jpeg"){ $type="jpg"; }
      	elseif($_FILES['photo']['type']=="image/gif"){ $type="gif"; }
      	else{
      	     $smarty->assign('msg',"bledny format pliku!");
      	}
	move_uploaded_file($_FILES['photo']['tmp_name'],"/".$_POST['name'].".".$type);
	$query="INSERT INTO ".$photosTable." SET name='".$_POST['name']."',filename='".$_POST['name'].".".$type."'";
	$result=mysql_query($query);
	
	if($result) $komunikat="fotka dodana!";

	$smarty->assign('msg',$komunikat);

}

korzystam z PHPTriad'a
skrypt zapisuje wszystkie pliki za wyjatkiem pierwszego dodawanego
(zapisuje do \htdocs)

dlaczego nie chce mi zapisac pierwszego?
jesli blad widac na pierwszy rzut oka badz jest to jakas popularna kwesta prosze o pomoc

0

Z tego kodu to nie za dużo widać. Musiał byś pokazać całość.
Czy te pliki sa takiego samego formatu? Moze coś tu jest nie tak, spróbuj dodawać je w innej kolejnosci.

0

nie wazne CO dodaje.... bo i tak zawsze nie dodaje pierwszego
jak widac przewidzialem tylko te 3 formaty (w zasadzie nie wiem czy to elegancki sposob)

czy moze to byc cos zwiazane z egzystencja $_FILES, zapelaniania ich w ktorys fazach wykonywania skryptu?

najlepiej niech odezwie sie ktos kto mial podobny problem.. czy czytam kod i bledu nie moge dostrzec

0

trochę się z tym bawiłem :)
a jak Ty przekazujesz te pliki z formularza?
W formularzu jest pare pól typu file?

0

tak - sa dwa (dla zdjecia i jego miniaturki, z miniaturki nie korzystam - nie wysylam nic)

0

hmm.. to jak? wysyłasz to przez jedno pole i raz uploaduje sie, a raz nie, tak?

0

uploaduje wszystkie za wyjatkiem pierwszego (pierwszego mam na mysli kiedy wszystko usune z bazy (id, src) i z folderu z plikami

0

hmm... to moze masz gdzieś zapytanie do bazy danych, czy też sprawdzenia czegoś w katalogu. trudno mi tak powiedzieć bez kodu, ale jak "normalnie" uploadujesz to działa :)

0

tak jak w innym poście
$query="INSERT INTO ".$photosTable." SET name='".$_POST['name']."',filename='".$_POST['name'].".".$type."'";

albo INSERT INTO tabela VALUES (...)
albo UPDATE TABLE tabela SET ...=...

0

jest jednak tak:

skrypt zapisuje pliki (nie wiem dlaczego) i do folderu apache\htdocs (phptriad) i do apache\php choc sciezka to po prostu -> .

dziwne jest to ze jedne zapisuje do obydwu folderow a jedne tylko do apache\php

pokrecone :/

0

No właśnie, jak pisałem jest błąd w MySql, a nie żauważyłem, że jest to w tym kodzie :) a co do samego kopiowania to nie wiem już. Zawsze korzystam z Apacha zainstalowanego manualnie ;)

0

nie ma zadnego bledu w zapytaniach sqla
w bazie jest wszystko co chce zeby bylo

0

Przeczytaj co napisał kolega wyżej :]
Może błędy Ci nie zrwaca, ale w końcu masz problem, wiec wysuchaj tych co chcą pomoc.

0

ja sie wcale nie rzucam, jestem bardzo wdzieczny za pomoc, ale...
problem nie lezy w sql bo wszystko na biezaco monitoruje i rekordy prawidlowo pojawiaja sie w bazie, dziwnie jednak zachowuje sie funkcja move_uploaded_file() bo to ona zawodzi i nie wrzuca plikow :/

...a raczej wrzuca ale po (jakby) dwukrotnym submicie (czyli wcisniecie F5)

0

jako, ze nikt mi nie odpowiedzial - odpowiem sobie sam - moze sie to komus przyda:

function addPhoto(){
    global $smarty, $photosTable, $maxFileSize;

    mysqlconnect();

          if($_FILES['photo']['type']=="image/bmp"){ $type="bmp"; }
          elseif($_FILES['photo']['type']=="image/jpeg"){ $type="jpg"; }
          elseif($_FILES['photo']['type']=="image/gif"){ $type="gif"; }
          else{
               $smarty->assign('msg',"bledny format pliku!");
          }
    move_uploaded_file($_FILES['photo']['tmp_name'],"/".$_POST['name'].<font color="red">"."</font>.$type);
    $query="INSERT INTO ".$photosTable." SET name='".$_POST['name']."',filename='".$_POST['name'].".".$type."'";
    $result=mysql_query($query);
    
    if($result) $komunikat="fotka dodana!";

    $smarty->assign('msg',$komunikat);

}

dodalem:

<font color="red">if(!is_dir(gfx_d)){
mkdir(gfx_d,0777);
}</font>
move_uploaded_file($_FILES['photo']['tmp_name'],<font color="red">"./gfx_d/"</font>.$_FILES['photo']['name'].".".$type);

i teraz mi ladnie dodaje bez dwukrotnego submita, moze to problem istniejacy tylko podczas lokalnych testow, moze sie komus taki przyklad przyda

1 użytkowników online, w tym zalogowanych: 0, gości: 1