potrzebuję zrobić na swoją stronę(a właściwie zrobiłem) skrypt dodający tresci, które mogą należeć do paru kategorii. Zależy mi abym mógł na raz dodawać np 100 rekordów. W bazie mam jedną główną tabelę o nazwie Filmy, struktura:
CREATE TABLE IF NOT EXISTS `Filmy` ( `id_filmu` int(6) UNSIGNED NOT NULL AUTO_INCREMENT, `numer_filmu` int(8) UNSIGNED NOT NULL, `tytul_filmu` varchar(70) NOT NULL, `kategoria_filmu` varchar(20) NOT NULL, PRIMARY KEY (`id_filmu`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=60 ;
Oraz każda kategoria zawiera swoje oddzielne tabele, połączone id-em z tabelą główną, każda kategoria będzie wyświetlana na oddzielnej stronie, także taka struktura wydaje mi się najlepsza:
CREATE TABLE IF NOT EXISTS `kategoria8` ( `id_kat8` int(6) UNSIGNED NOT NULL AUTO_INCREMENT, `id_filmu` int(6) UNSIGNED NOT NULL, PRIMARY KEY (`id_kat8`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
Poniżej kod dodający dane do dwóch tabel na raz(z objasnieniami co chciałem zrobić):
$zapytanie="INSERT INTO `Filmy` (`id_filmu`, `numer_filmu`, `tytul_filmu`, `kategoria_filmu`) VALUES (NULL, '54321', 'tytul1', '9876'), (NULL, '567890', 'tytul2', '9875')"; // i tutaj jeszcze np 50 innych VALUES, kolumna "kategoria_filmu" z danymi np.9876 oznacza że film bedzie wyswietlany w kategoiach o numerach 9, 8, 7 i 6 $kat = "SELECT kategoria_filmu FROM Filmy where id_filmu='$id'"; //wybiera kategorie filmu z tabeli filmy gdzie id_filmu ma numer ostatnio dodanego wyniku $wypisanie = $wynik['kategoria_filmu']; //potrzebne aby niżej sprawdzić jakie numery kategorii zawarte w "kategoria_filmu" $zapisac = mysql_query("INSERT INTO kategoria8 (id_filmu) VALUES ($id)"); //jeżeli spełniony zostanie ponniższy warunek to id z tabeli Filmy zostanie zapisany do tabeli "kategoria8" if (preg_match("/8/i", "$wypisanie")) //jeżeli w $wypisanie znajduje sie 8 to dzieje sie $zapisac i taki if do każdej kategorii oddzielnie PYTANIE 2 { } else { }
Ogólnie kod działa jak należy, jednak tylko dla jednego dodanego wyniku.
PYTANIA:
1. Niestety pobierany jest tylko id pierwszego dodanego wyniku i umieszczany w tabeli kategorii, chciałbym aby przy dodawaniu np 50 Values w Insert wszystkie były dodawane od razu do odpowiednich kategorii, da się tak zrobić? Bo dodawanie oddzielnie 50 rekordów byłoby "trochę" uciążliwe. Próbowałem pętle jednak tak kombinowałem że dodałem do dwóch tabel ponad 6 mln rekordów na raz

2. Czy dałoby radę umieścić wszystko w jednym ifie tzn. sprawdzić jakie cyfry są zawarte w "kategoria_filmu" i umiescic w odpowiednich tabelach kategorii, próbowałem else, ale jeżeli jest spełniony pierwszy warunek to już nie przechodzi do następnego.
Poniżej skrypt wyświetlający wszystkie wiersze z kategorii:
$wypisac = "SELECT * FROM kategoria8 INNER JOIN Filmy ON kategoria8.id_filmu = Filmy.id_filmu"; {Tutaj kod wyświetlający wszystkie potrzebne rekordy z dwóch tabel}
PYTANIE ogólne:
3. Czy cały ten kod da się jakoś zoptymalizować, może macie jakieś inne sposoby? (ogólnie wszystko działa jak należy oprócz dodawania wielu Values na raz)
Na koniec proszę o wyrozumiałość, wstyd się przyznać ale napisanie tego zajęło mi 2 dni(nie korzystałem z innych skryptów), próbowałem na wiele sposobów i ten wydaje mi się najlepszy.
Pozdrawiam