Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odświeżanie rekordów w bazie mysql
elwierka
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 26.12.2007

Ostrzeżenie: (0%)
-----


Piszę skrypt, który pozwoli mi dodać do bazy danych produkt. Dane o produkcie będą wysyłane przez formularz, na którym znajdują się też pola do dodania 3 obrazków. Założyłam że między tabelami produkty i obrazki, będzie relacja jeden do jednego, bo zdjęcia będą wyłącznie dla danego produktu.

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
  1. function dodajProdukt($name,$gt,$jm,$kol,$mat,$wymiar,$opis,$cena){
  2. $lacz = con_to_db(); //połączenie z bazą danych
  3.  
  4. $wynik = $lacz->query("SELECT * FROM produkty WHERE nazwa='".$name."' AND gt_id = '".$gt."'");
  5.  
  6. if (!$wynik) {
  7. throw new Exception('<p class="uwaga">Wykonanie zapytania nie powiodło się.</p><a href="./?d=nowyProdukt">Powrót</a>');
  8. }
  9.  
  10. if ($wynik->num_rows>0) {
  11. throw new Exception('<p class="uwaga">Nazwa produktu istnieje już w bazie danych. Proszę wprowadzić inną. </p/><a href="./?d=nowyProdukt">Powrót</a>');
  12. }
  13.  
  14. // jeżeli wszystko w porządku, umieszczenie w bazie danych
  15. $zapytanie = "INSERT INTO produkty SET nazwa = '".$name."', gt_id = '".$gt."', miara_id = '".$jm."', kolor = '".$kol."', material = '".$mat."', wymiar = '".$wymiar."', opis = '".$opis."', cena_netto = '".$cena."'";
  16. $wynik = $lacz->query($zapytanie);
  17. if (!$wynik) {
  18. 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>');
  19. }
  20. return true;
  21. $wynik->free();
  22. $lacz->close();


oraz kod pobierający ID dodanego produktu
  1. function pobierzIdProduktu($name, $gt, $cena){
  2. $lacz = con_to_db();
  3. $wynik = $lacz->query("SELECT produkt_id FROM produkty WHERE nazwa='".$name."' AND gt_id = '".$gt."' AND cena_netto = '".$cena."'");
  4.  
  5. if (!$wynik) {
  6. throw new Exception('<p class="uwaga">Wykonanie zapytania nie powiodło się.</p><a href="./?d=nowyProdukt">Powrót</a>');
  7. }
  8.  
  9. if ($wynik->num_rows>0) {
  10. throw new Exception('<p class="uwaga">Taki produkt nie istnieje w bazie danych. </p/><a href="./?d=nowyProdukt">Powrót</a>');
  11. }
  12.  
  13. $dane = $wynik->fetch_object();
  14. $id = $dane->produkt_id;
  15. return $id;
  16. }


wywołanie funkcji w skrypcie:
  1. dodajProdukt($prod_name, $prod_gt, $prod_jm, $prod_kolor, $prod_mat, $prod_wymiar,$prod_opis, $prod_cena);
  2. $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źć"? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:49