Autor Zpráva
Mufna
Profil
Zdravím Vás. Řeším problém, jak zapsat jednorázově do db více názvů pro fotky z multiuploadovacího formuláře. Šlo by to nějak přes pole, do kterého by se zapsaly jednotlivé názvy a ty by se pak jedním query uložily do db k příslušnému ID ?

Můj skript na zpracování formuláře má tuto strukturu:

foreach ($_FILES['userfile']['name'] as $key => $value) {
if (is_uploaded_file($_FILES['userfile']['tmp_name'][$key])) {

teď se provádí kontrola MIME-type, názvu, vytvoří se náhledy, a na konci mám proměnnou, do které se ukládá jeden název obrázku (bez přípony)

$new_name_save=substr($new_name,0,strrpos($new_name,'.'));

a ted následuje zápis do db

$res=query("UPDATE ".$tbl_prefix."karavany SET photos='".$new_name_save."'
WHERE id='".addslashes($_POST["id"])."'");

} a tady končí cyklus forech

Pro jeden obrázek mi to perfektně funguje, ale pro víc pochopitelně ne. Query bych dal samozřejmě až za cyklus foreach, ale jde mi o to, jak během toho cyklu zajistit postupné načítání názvů nových obrázků do nějaké proměnné (pole). To bych pak použil místo stávající $new_name_save.

Poradí mi někdo, jak na to ? Stačí aspoň polopatě.
Ssob
Profil
Já bych si buď vytvořil novou složku, do které bych ukládal obrázky z jednoho uploadu a pak uložil jenom jméno (číslo) složky (eventulaně by se mohla jmenovat jako ID - nemusel bys to zvlášt ukládat) nebo bych si vytvořil novou tabulku, do které bych vkládal jména fotek a id, ke kterému patří po jednom. Byla by to tzv. 1:N relace..
Mufna
Profil
No, tak nakonec jsem to (i s pomocí tohoto diskusního fóra) vyřešil. Před cyklus foreach jsem přidal proměnnou $names=''; a během cyklu pak postupně přidávám názvy obrázků (jen čistě text) očištěné od přípony (které se postupně ukládají do $new_name_save) do $names

$names .= $new_name_save.';';

No a zápis do db pak proběhne komplet až po skončení cyklu foreach

$res=query("UPDATE ".$tbl_prefix."karavany SET photos='".$names."'
WHERE id='".addslashes($_POST["id"])."'");

Takto mi to zatím v poho funguje :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: