Mój skrypt najpierw dodaje produkt do bazy danych. Następnie wywołuję funkcję, która pobiera mi id świeżo dodanego produktu, żeby za chwilę wykorzystać go przy zapisywaniu obrazków do bazy danych.
Tabela obrazki posiada pola:
- produkt_id
- zdj1
- zdj2
- zdj3
Okazuje się jednak, że nie pobiera mi się żadna wartość ID produktu, tak jakby baza danych się nie odświeżała po jego dodaniu..Albo robię coś nie tak....
Zapodaję kody:
Skrypt dodający nowy produkt
function dodajProdukt($name,$gt,$jm,$kol,$mat,$wymiar,$opis,$cena){ $lacz = con_to_db(); //połączenie z bazą danych $wynik = $lacz->query("SELECT * FROM produkty WHERE nazwa='".$name."' AND gt_id = '".$gt."'"); if (!$wynik) { throw new Exception('<p class="uwaga">Wykonanie zapytania nie powiodło się.</p><a href="./?d=nowyProdukt">Powrót</a>'); exit; } if ($wynik->num_rows>0) { throw new Exception('<p class="uwaga">Nazwa produktu istnieje już w bazie danych. Proszę wprowadzić inną. </p/><a href="./?d=nowyProdukt">Powrót</a>'); exit; } // jeżeli wszystko w porządku, umieszczenie w bazie danych $zapytanie = "INSERT INTO produkty SET nazwa = '".$name."', gt_id = '".$gt."', miara_id = '".$jm."', kolor = '".$kol."', material = '".$mat."', wymiar = '".$wymiar."', opis = '".$opis."', cena_netto = '".$cena."'"; $wynik = $lacz->query($zapytanie); if (!$wynik) { throw new Exception('<p class="uwaga">Rejestracja w bazie danych niemożliwa — proszę spróbować później.</p><a href="./?d=nowyProdukt">Powrót</a>'); exit; } return true; $wynik->free(); $lacz->close();
oraz kod pobierający ID dodanego produktu
function pobierzIdProduktu($name, $gt, $cena){ $lacz = con_to_db(); $wynik = $lacz->query("SELECT produkt_id FROM produkty WHERE nazwa='".$name."' AND gt_id = '".$gt."' AND cena_netto = '".$cena."'"); if (!$wynik) { throw new Exception('<p class="uwaga">Wykonanie zapytania nie powiodło się.</p><a href="./?d=nowyProdukt">Powrót</a>'); exit; } if ($wynik->num_rows>0) { throw new Exception('<p class="uwaga">Taki produkt nie istnieje w bazie danych. </p/><a href="./?d=nowyProdukt">Powrót</a>'); exit; } $dane = $wynik->fetch_object(); $id = $dane->produkt_id; return $id; }
wywołanie funkcji w skrypcie:
dodajProdukt($prod_name, $prod_gt, $prod_jm, $prod_kolor, $prod_mat, $prod_wymiar,$prod_opis, $prod_cena); $pr_id = pobierzIdProduktu($prod_name, $prod_gt, $prod_cena);
Jak uaktualnić bazę danych, żeby można było jeszcze wykorzystać to id? A może inaczej powinnam to "ugryźć"?
