Skrypt php - nie dzia

Potrzebujesz pomocy z C, C++, perl, python, itp.
goska_23
Beginner
Posty: 277
Rejestracja: 04 września 2007, 13:40
Lokalizacja: Katowice

Skrypt php - nie działa zgłaszając błąd

Post autor: goska_23 »

Mam debiana 6.0.4 z serwerem www i na nim stronę w CMS Joomla 2.5.11 z dodatkiem fabrik 3.0.8.

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.

  1. 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.
  2. 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).
Mój skrypt jest taki:

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:
  1. kiedy nie ma rekordu w tabeli 2 spełniającego warunek "SELECT"
  2. 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"
"45" i "47" to są identyfikatory "ID" rekordów użytkowników w tabeli 3 (ccjom_users) z użytkownikami, a w poleceniu "SELECT" próbowałam porównać nazwę użytkownika z tabeli 1 z nazwą uzytkownika z tabeli 2 po polu "name" z imieniem i nazwiskiem, bo takie mam pola odnoszące się do użytkownika w tabelach 1 i 2.

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,
Załączniki
Zaznaczenie_218a.jpg
Zaznaczenie_216a.jpg
ODPOWIEDZ