Autor | Zpráva | ||
---|---|---|---|
lenka Profil * |
Ahoj.
mám formulář, kde si uživatel vybere, kolik chce nahrát souboru a podle toho mu vyjede počet inputu pro vkladání. <?php $kolik = $_POST["kolik"]; for($i = 1; $i <= $kolik; $i++) { echo "<tr><td class='d_text2'>Foto ".$i."</td><td><input type='file' name='foto[]'></td></tr>"."\n"; } ?> potřebovala tyto soubory nahrát do adresáře a uložit i jejich názvy do databáze. 1. Zkouším tento script pro nahrání, ale nějak mi to nic nedělá. <?php foreach($_FILES['foto']['name'] as $uploadovany_soubor) { if (is_uploaded_file($uploadovany_soubor['tmp_name']) ) { $uploaddir = '../fotografie/foto/'; $uploadfile = $uploaddir . $uploadovany_soubor['name']; $name = $uploadovany_soubor['name']; $pripona = explode(".", $name); $pripona = $pripona[count($pripona)-1]; if (!in_array($pripona, array("jpg", "jpeg", "gif", "png"))) { exit ("nepovolena pripona, lze nahrat jen jpg, jpeg, gif, png<br>"); continue; } if (move_uploaded_file($uploadovany_soubor['tmp_name'], $uploadfile)) { exit ("Soubor byl úspěšně nahrán.\n<br>"); } else { exit ("nepovedlo se nahrat.\n<br>"); } } } ?> |
||
Alphard Profil |
#2 · Zasláno: 29. 10. 2010, 21:47:21
Takhle to pole procházet nejde. Když se nad tím zamyslíte, tak řádky
foreach($_FILES['foto']['name'] as $uploadovany_soubor) { print_r($uploadovany_soubor); } $uploadovany_soubor['tmp_name'] nemůže fungovat.
Vstupní soubory můžete projít třeba takhle: for($i = 0; $i < count($_FILES['foto']['tmp_name']); $i++) { if (is_uploaded_file($_FILES['foto']['tmp_name'][$i])) { echo $_FILES['foto']['tmp_name'][$i], " ", $_FILES['foto']['name'][$i], "<br>"; // vsechna potrebna pole } } Odpověď na druhou otázku závisí na tom, co vlastně chcete do databáze vložit. Nejlépe asi jednotlivé záznamy. |
||
lenka Profil * |
#3 · Zasláno: 30. 10. 2010, 09:26:28
Amo chtěla bych do databáze vložit jednotlivě záznamy, to znamená že když budu mít 10 souboru tak se mi vloží deset řádků. Jak by potom mohl vypadat ten příkaz?
|
||
lenka Profil * |
#4 · Zasláno: 30. 10. 2010, 11:11:05
Tak jsem ten kod poupravila takto ale stejně mi to nejede.
1. Nefungujou mi ty přípony (hlasí že nejsou povoleny, přitom by měli být) 2. když ten kód s příponou vymažu tak se stejně nic nenahraje a hodí to chybu: Warning: move_uploaded_file(../fotografie/foto/C:\wamp\tmp\php4E17.tmp) [function.move-uploaded-file]: failed to open stream:... Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\php4E17.tmp' to '../fotografie/foto/C:\wamp\tmp\php4E17.tmp' in C:\wamp\www\... kód: for($i = 0; $i < count($_FILES['foto']['tmp_name']); $i++) { if (is_uploaded_file($_FILES['foto']['tmp_name'][$i])) { echo $_FILES['foto']['tmp_name'][$i], " ", $_FILES['foto']['name'][$i], "<br>"; // vsechna potrebna pole $uploaddir = '../fotografie/foto/'; // Relative path under webroot $uploadfile = $uploaddir . $_FILES['foto']['tmp_name'][$i]; //funkce basename je zbytečná, při uploadu se nepředává cesta $name = $_FILES['foto']['tmp_name'][$i]; $pripona = explode(".", $name); $pripona = $pripona[count($pripona)-1]; if (!in_array($pripona, array("jpg", "jpeg", "gif", "png", "bmp"))) { exit ("nepovolena pripona, lze nahrat jen jpg, jpeg, gif, png, bmp<br>"); continue; } if (move_uploaded_file($_FILES['foto']['tmp_name'][$i], $uploadfile)) { exit ("Soubor byl úspěšně nahrán.\n<br>"); } else { exit ("nepovedlo se nahrat.\n<br>"); } } } |
||
Keeehi Profil |
#5 · Zasláno: 30. 10. 2010, 11:40:54 · Upravil/a: Keeehi
$uploadfile = $uploaddir . $_FILES['foto']['name'][$i]; $name = $_FILES['foto']['name'][$i]; |
||
lenka Profil * |
#6 · Zasláno: 30. 10. 2010, 11:47:32
Máš pravdu na to jsem už přišla, teď mi to ale nahraje pouze první soubor a ty další ne, takže tam bude asi ještě někde chyba...
|
||
Keeehi Profil |
#7 · Zasláno: 30. 10. 2010, 11:50:18
Co myslíš, že dělá tohle? Čím to nahradíš?
exit ("Soubor byl úspěšně nahrán.\n<br>"); |
||
lenka Profil * |
#8 · Zasláno: 30. 10. 2010, 11:54:47
Jéžiš, díky to sem úplně přehlídla že to tady vlastně zastavím...Echo vše vyřešilo.
No a ještě bych potřebovala pomoct s tím zápisem do databaze, abych to tam vložila jako že každý soubor má svůj řádek. To by mělo byt jako že vkládám nějaké pole? |
||
Keeehi Profil |
#9 · Zasláno: 30. 10. 2010, 12:17:36 · Upravil/a: Keeehi
Úplně normálně. Před řádek echo
"Soubor byl úspěšně nahrán.\n<br>"; vložíš
mysql_query("INSERT INTO tabulka VALUES ('data1','data2','data3')"); |
||
Časová prodleva: 13 let
|
0