phpamator
24.01.2017, 10:38:39
Witajcie,
To znowu Ja wasz amator z kolejnym beznadziejnym pytaniem.
Walczę z pewnym problemem i nie wiem jak powinienem go rozwiązać albo może jak byłoby najlepiej to zrobić.
Otóż mam trzy pola, w niektórych są już jakieś dane w innych nie, problem polega na tym, że nie "kumam" jak zorganizować sprawdzanie jeśli pierwsze pole zawiera już jakieś dane zapisz do drugiego, jeśli drugie zawiera zapisz to do trzeciego.
Oczywiście sprawdź najpierw czy te dane nie są takie same bo jeśli są to oczywiście pomiń i idź dalej.
Np:
film_1, film_2, film_3
Jeśli pole film_1 jest puste zapisz do pierwszego, jeśli pierwsze jest zajęte zapisz do drugiego a jeśli pierwsze i drugie jest zajęte zapisz do trzeciego.
po drodze muszę jeszcze sprawdzić czy aby dane w zajętych polach nie są takie same jak już wcześniej wspominałem. No i tu się zamotałem jak pająk ....
podpowiedzcie, jak to zrobić żeby było dobrze i efektywnie ?
kapslokk
24.01.2017, 10:41:24
Masz źle zaprojektowaną bazę.
Musisz rozbić to co masz na dwie tabele. W jednej trzymasz to co masz oprócz filmów, w drugiej id wpisu z pierwszej i film. Wtedy dodajesz sobie unique na ID i film i nie będziesz miał duplikatów i nie będziesz sie musiał martwić o dodawanie kolejnych filmów.
phpamator
24.01.2017, 11:37:57
Rozwiązałem problem ale nie wydaje mi się by było to rozwiazanie optymalne ;(
if(empty($skuRow['yt_link_1'])){ // VIDEO 1 pusty
$enterVideo = "UPDATE `catalog_product_flat_1` SET `yt_link_1`='" . $videoIdADD . "' WHERE `sku`='" . $mySku . "' LIMIT 1;";
$enterVideoQuery = $link->query($getVideos);
} elseif(empty($skuRow['yt_link_2']) && $skuRow['yt_link_1'] != $videoIdADD){ // VIDEO 2 pusty i VIDEO 1 inne niż
$enterVideo = "UPDATE `catalog_product_flat_1` SET `yt_link_2`='" . $videoIdADD . "' WHERE `sku`='" . $mySku . "' LIMIT 1;";
$enterVideoQuery = $link->query($getVideos);
} elseif(empty($skuRow['yt_link_3']) && $skuRow['yt_link_1'] != $videoIdADD && $skuRow['yt_link_2'] != $videoIdADD){ // VIDEO 3 pusty i inny niż VIDEO 2 i VIDEO 3
$enterVideo = "UPDATE `catalog_product_flat_1` SET `yt_link_3`='" . $videoIdADD . "' WHERE `sku`='" . $mySku . "' LIMIT 1;";
$enterVideoQuery = $link->query($getVideos);
}
nie da się tego prościej ?
nospor
24.01.2017, 11:38:41
Cytat
nie da się tego prościej ?
Da sie. Kapslokk napisal jak
phpamator
24.01.2017, 11:39:54
Ahahhaa no tak, ale bez wprowadzania zmian w strukturze bazy chciałem
kapslokk
24.01.2017, 11:48:17
No to sie nie da

Btw. pomyśl co Cie czeka jeśli będziesz chciał zmienić ilość filmów np z 3 na 6

Powodzenia i miłej zabawy
phpamator
24.01.2017, 12:22:05
Na szczęście w najbliższym czasie nie palnuję ale wezmę to pod uwagę

Dziękuję za podpowiedzi Panowie/Panie.
Pozdrawiam
phpamator lepiej wcześniej dokonać zmian niż potem przebudowywać całość, co będzie bardziej kosztowne.
phpamator
24.01.2017, 12:57:26
Zgadzam się, niemniej, ponieważ ktoś to wcześniej tak właśnie zbudował .... ja tylko usprawniam co nieco

Jeśli zajdzie potrzeba rozwijania ..... z pewnością zapytam
Puszy
24.01.2017, 16:06:32
Możesz dostosować pod siebie rozwiązanie z tego posta
http://stackoverflow.com/a/15061507/2621852