Form submit esetén hiba

Wathfea képe

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ó: 
sgabe képe

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!

1
0
Wathfea képe

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.

    $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();
0
0
Wathfea képe

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:

INSERT INTO {gft_demo} (demoid, first_name, last_name, country, iskola, email_address, phone, initial_deposit, base_currency, groups, password, who, username, can_trade, gft_timestamp) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14)

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?

0
0