Sziasztok!
Amikor submitot nyomok az egyik formomon valamiért nem fut le teljes egészében a hook_form_submit().
A submit után elvileg kéne kapjak egy e-mailt a kitöltött adatokkal illetve egy másik címre is menni-e kell egy levélnek, kicsit részletesebb leírással.
Ez meg is történik megkapom a leveleket minden adat benne van.
Ezután az adatbázisba bekéne töltsön adatokat, ami már nem történik meg, valamint átkéne irányítson egy aloldalra, ez se következik be. Helyette behozza a rendszer a site-maintanace oldalt.
Miért akadhat így el?
function gft_demo_openform_submit($form, &$form_state) { $cs = curl_init('http://demo.gftforex.com:8080/registrator/servlet/gft.util.registrator.Registrator'); curl_setopt($cs, CURLOPT_POST, 1); curl_setopt($cs, CURLOPT_RETURNTRANSFER, true); curl_setopt($cs, CURLOPT_HEADER, true); // tells curl to include headers in response curl_setopt($cs, CURLOPT_POSTFIELDS, "can_trade=cfd" . "&who=FXFlat" . "&first_name=" . htmlspecialchars($form_state['values']['first_name']) . "&last_name=" . htmlspecialchars($form_state['values']['last_name']) . "&PASSWORD=" . htmlspecialchars($form_state['values']['password']) . "&country=" . htmlspecialchars($form_state['values']['country']) . "&email_address=" . htmlspecialchars($form_state['values']['email_address']) . "&initial_deposit=" . htmlspecialchars($form_state['values']['initial_deposit']) . "&base_currency=" . htmlspecialchars($form_state['values']['base_currency']) . "&groups=" . htmlspecialchars("GFTUK Gold Forex Trading") . "&Message="); //curl_setopt ($cs, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($cs); $headers = curl_getinfo($cs); if ($headers['http_code'] != '302') { drupal_set_message(t('Communication with server failed')); } else { // "User-Id: " header preg_match('/User-Id: ([\w]*)/', $result, $m); $username = $m[1]; curl_close($cs); _user_demo_email( $form_state['values']['email_address'], $username, $form_state['values']['password']); _admin_demo_email( $username, $form_state['values']['email_address'], $form_state['values']['phone'], $form_state['values']['first_name'] . ' ' . $form_state['values']['last_name'], $form_state['values']['initial_deposit'] . $form_state['values']['base_currency'] ); $id = db_insert('gft_demo') ->fields(array( 'iskola' => $form_state['values']['iskola'], 'demoid' => $username, 'first_name' => $form_state['values']['first_name'], 'last_name' => $form_state['values']['last_name'], 'country' => $form_state['values']['country'], 'email_address' => $form_state['values']['email_address'], 'phone' => $form_state['values']['phone'], 'initial_deposit' => $form_state['values']['initial_deposit'], 'base_currency' => $form_state['values']['base_currency'], 'gft_timestamp' => date('o-m-d h:i:s'), 'username' => $username, )) ->execute(); // Átirányítjuk a köszönő oldalra drupal_goto('node/61'); } }
Drupal verzió:
Fórum:
hibás átirányítás
A drupal_goto hívással elgáncsolod az egész folyamatot és nem fog lefutni a többi kezelő ezért se validációnál, se küldésnél ne használd!
Átirányításra a
$form_state['redirect']
értéke alapján a drupal_redirect_form hivatott.Továbbá hook_form_submit nem létezik, helyette az egyes űrlapokhoz tudsz hozzáadni kezelő függvényeket, illetve a Drupal automatikusan a [FORMID]_submit függvényt keresi, de ez nem hook!
Köszi, de nem ez volt a gond.
Kipróbáltam amit írtál, de sajnos továbbra sem működik tökéletesen a dolog.
Sikerült kiszűrnöm, hogy az adatbázisba illesztés akasztja meg a dolgot, de azt nem tudom miért. Ha a db insertet kiszedem, akkor rendesen kiküldi a rendszer a leveleket és átirányít a kellő oldalra, így biztosan azzal lesz valami gond.
Küzdök vele
Nos a baj már tuti, hogy a Db layerrel van csak nem jövök rá micsoda.
Most megpróbáltam kiiratni az SQL-t
Ezt kapom:
Ha ezt megpróbálom futtatni mysql-ben ezt kapom:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{gft_demo} (demoid, first_name, last_name, country, iskola, email_address, phone' at line 1
MySQL kliens verzió: 5.5.23
Amennyire átom ez a {gft_demo} nem tetszik neki.... viszont a d7 magától hozzárakja a { } jelet
Valakinek valami ötlet?