Diskuze: ID z databáze během jejího vytvoření

PHP PHP ID z databáze během jejího vytvoření American English version English version

Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

Ahoj.
Vyskytl se mi takový problém. Ukládám inzerát do db, pokud je nový (v Session není ID), tak se vytvoří nový řádek s auto increment pole ID --> to je prostě pohoda. Jenže nyní jsem přidal možnost nahrávat obrázky a ve složce "obrazky" chci mít vždy složku s číslem jako je ID inzerátu.
Na to by měl stačit tento kod:

 $path = "obrazky/" . $_SESSION['inzerat']['ID'] . "/";
                            print_r($path);

mkdir($path, 0777);
move_uploaded_file($_FILES['file']['tmp_name'], $path . $_FILES['file']['name']);

Jenže to logicky posílá soubor vybraný od uživatele do "obrazky//", protože já to ID dostanu, až když se inzerát pošle do db.

Dá se to nějak šikovně obejít nebo mám vymyslet zcela jiný systém ukládání obrázků - třeba do složek podle ID uživatele, jenže to už potom nerozliším dobře, k jakému inzerátu která fotka patří (pokud jeden člověk podá více jak jeden inzerát).

Díky za odpovědi :-)

 
Odpovědět 25.8.2015 23:08
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Michal Kuba
patrik.valkovic:

http://php.net/…nsert-id.php
Nepomůže? Pokud s databází pracuješ nad tímto kódem, ID dostaneš touto cestou.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 25.8.2015 23:18
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
dobrakmato
Člen
Avatar
Odpovídá na Michal Kuba
dobrakmato:

ID autoincrementu nemas ako zistit pred tym, ako ten riadok v skutocnosti vytvoris, cize nic sikovne co by hned fungoval asi nebude.

Bud mozes obrazky nahrat az spolu s odoslanim formularu (co asi ale nerobis, kedze mas tento problem a mas tam nejaky fancy js uploader).

Mozno by si mohol najprv vytvorit v db riadok inzeratu uz pri nacitani toho formularu na vytvorenie inzeratu. A pri tom ako by uzivatel "vytvoril" inzerat by si iba v db riadok aktualizoval.

Tak by si pri tom nahravani uz mohol mat v $_SESSION id inzeratu, ktory prave user upravuje.

Editováno 26.8.2015 0:10
Nahoru Odpovědět 26.8.2015 0:08
Čekni stránku so zabavnými obrázkami z internetov: https://www.coolovo.eu?ref=1007
Avatar
solta
Člen
Avatar
Odpovídá na Michal Kuba
solta:

Poku tedy pouzivas nejaky uploader zjisti jestli nemuzes odeslat ty fotky az s odeslanim formulare jinak nahrej ty obrázky do tempu a do session si uloz jejich jména pak po získání id je přesun kam potrebujes

 
Nahoru Odpovědět 26.8.2015 14:59
Avatar
shaman
Člen
Avatar
Odpovídá na Michal Kuba
shaman:

PDO ma nieco podobne, ktore ti vrati id posledneho vlozeneho Id.

$pdo->prepare($insert_sql)->execute();
$id = $pdo::lastInsertId()

a dalej v skripte mozes pouzivat $id pre tvoj obrazok

Editováno 26.8.2015 16:59
Nahoru Odpovědět 26.8.2015 16:58
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.