Nie jestem zaawansowana w pisaniu skryptów php, a właśnie pilnie potrzebuję, zrobić małą funkcję w tym fabriku za pomocą własnego skryptu php.
Skrypt działa, jeśli nie wpiszę mu warunku, że ma sprawdzać czy są rekordy w pewnej tabeli2 (ccjom_cc_lista_zastepstw) bazy danych mysql.
Wtedy zwraca adres e-mail związany z użytkownikiem o nazwie pola recipient1 w pewnej innej tabeli1 (ccjom_cc_zapotrzebowanie) - ta uproszczona wersja jest całkiem dobra.
- Potrzebuję jednak uzależnić to czy skrypt będzie zwracał e-mail użytkownika "recipient1" od tego czy są jakieś rekordy spełniające pewne warunki w innej tabeli2 (ccjom_cc_lista_zastepstw) bazy mysql.
Jeśli nie ma w tabeli2 rekordów spełniających warunek "SELECT", to skrypt nadal powinien zwracać ten sam "adres e-mail" użytkownika recipient1 z tabeli1. - Jeśli jednak w tabeli2 jest chociaż 1 rekord spełniający warunek "SELECT" to skrypt nie powinien robić nic.
Przypadek 1. jeśli skrypt działał by prawidłowo powinien spowodować wysłanie z Joomli z fabrikiem e-maila do użytkownika recipient1. Ten e-mail jest prawidłowo wysyłany, jeśli nie wpisuję tego warunku uzależniającego (wysłanie e-maila) zwracanie wartości e-mail w zależności od tego czy są odpowiednie rekordy w tabeli2 (ccjom_cc_lista_zastepstw).
Kod: Zaznacz cały
$db =& JFactory::getDBO();
$recipient1 = '{ccjom_cc_zapotrzebowanie___recipient1_raw}';
var_dump($recipient1);
$query1 = "SELECT `email` FROM `ccjom_users` WHERE `id` = " . $db->Quote($recipient1);
$db->setQuery($query1);
$result1 = $db->loadResult();
$query2 = "SELECT `email_zastep` FROM `ccjom_cc_lista_zastepstw` WHERE `ccjom_cc_lista_zastepstw`.`status_zastepstwa`='TAK' AND `ccjom_cc_lista_zastepstw`.`osoba_zastepowana`=`ccjom_cc_zapotrzebowanie`.`recipient1` AND `ccjom_cc_lista_zastepstw`.`form_id`='20' AND `ccjom_cc_lista_zastepstw`.`data_zast_od`<= NOW() AND `ccjom_cc_lista_zastepstw`.`data_zast_do`>=NOW()";
$db->setQuery($query2);
$result2 = $db->loadResult();
if(mysql_num_row($result2) == 0)
{
return $result1;
}
-------------------------
Niestety kiedy testuję ten skrypt, w 2 sytuacjach:
- kiedy nie ma rekordu w tabeli 2 spełniającego warunek "SELECT"
- kiedy jest rekord w tabeli 2 spełniający warunek "SELECT"
W obu sytuacjach jest to samo, żaden e-mail nie jest wysyłany z Joomli do "recipient1". Natomiast wyrzuca mi błąd, którego nie potrafię zanalizować:- kiedy testuję przyp.1 i wybieram w formularzu takiego "recipient1", że nie ma dla niego odpowiedniego rekordu w tabeli2 : wypisuje błąd: string(2) "45"
- kiedy testuję przyp.2 i wybieram w formularzu takiego "recipient1", że jest dla niego odpowiedni rekord w tabeli2 : wypisuje błąd string(2) "47"
Porównywane pola `ccjom_cc_lista_zastepstw`.`osoba_zastepowana`=`ccjom_cc_zapotrzebowanie`.`recipient1` - `osoba_zastepowana` i `recipient1` są w tabelach 1 i 2 polami databasejoin do tabeli3 - (ccjom_users) z użytkownikami.
Bardzo proszę o jakieś uwagi dotyczące tego o co chodzi, z tymi błędami: string(2) "45" i string(2) "47", i może ktoś potrafiłby poprawić ten skrypt.
Jest mi on pilnie potrzebny a na forum "Fabrika", skrypty które pisze sobie sam użytkownik wspierają w mniejszym zakresie.
Dodane:
Może mogą być pomocne zrzuty ekranu dotyczące tabeli2,