| 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: 15 let
|
|||
0