NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:25.8.2015 23:08

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
Odpovídá na Michal Kuba
Patrik Valkovič:25.8.2015 23:18

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
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:26.8.2015 0:08

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
Avatar
solta
Člen
Avatar
Odpovídá na Michal Kuba
solta:26.8.2015 14:59

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:26.8.2015 16:58

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.