[gelöst] $form_values leer
Eingetragen von andre8 (14)
am 05.07.2011 - 18:02 Uhr in
am 05.07.2011 - 18:02 Uhr in
hallo zusammen!
ich stehe auf dem schlauch.
seit 3 h versuche ich daten aus nem formular in die datenbank zu speicher.
print r() gibt die werte fein säuberlich aus.
datum geht aber die form_values nicht.
kann mir bitte jemand sagen wo mein fehler ist.
danke
hier der code:
<?php
/*
* Hilfefunktion bauen
*/
function sport_help($section) {
switch ($section) {
case 'admin/modules#description':
return t('This module implements an example form.');
}
}
/**
* Implementation of hook_init(). Add's the sport module's CSS.
*/
function sport_init() {
drupal_add_css(drupal_get_path('module', 'sport') .'/sport.css');
}
/**
* Berechtigungen.
*/
function sport_perm() {
return array('access sport content', 'administer sport');
}
/*
* Link bauen
*/
function sport_menu() {
$items = array();
$items['sport'] = array(
// Vergleichbar mit <a href="#">title</a>
'title' => 'Anmeldeformular',
// Vergleichbar mit <a href="#" alt=""></a>
'description' => 'A menu entry that shows how hook_menu() works.',
// Ruft die Funktion: function get_user_login_form auf
'page callback' => 'get_sport_form',
'access callback' => 'user_access',
'access arguments' => array('access sport content'),
'type' => MENU_CALLBACK
);
return $items;
}
/*
* Callback function for 'get_form'
*/
function get_sport_form() {
$output = "<h2>";
$output .= t('Registration for the run');
$output .= "</h2>";
$output .= drupal_get_form('sport_page_form');
return $output;
}
/*
* Event aus e_event
*/
function ev_entries() {
$ev_entries = array();
$query="SELECT event,eid FROM e_event WHERE estatus='0'";
$result = db_query ($query);
$ev_entries[''] = 'Auswahl';
while ($row = mysql_fetch_array($result)) {
$ev_entries[$row[eid]] = $row[event];
}
return $ev_entries;
}
/*
* Jahrgangsdaten aus e_jahrgang
*/
function jg_entries() {
$jg_entries = array();
$query="SELECT jahrgang,jid FROM e_jahrgang";
$result = db_query ($query);
$jg_entries[''] = 'Auswahl';
while ($row = mysql_fetch_array($result)) {
$jg_entries[$row[jid]] = $row[jahrgang];
}
return $jg_entries;
}
/*
* Formular
*/
function sport_page_form() {
$form['event'] = array (
'#type' => 'select',
'#title' => t('Select your Event'),
'#options' => ev_entries(),
'#prefix' => '<div class="sport_event">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['lastname'] = array(
'#type' => 'textfield',
'#title' => t('Enter your fullname'),
'#prefix' => '<div class="sport_fullname">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['firstname'] = array(
'#type' => 'textfield',
'#title' => t('Enter your firstname'),
'#prefix' => '<div class="sport_firstname">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['jahrgang'] = array (
'#type' => 'select',
'#title' => t('Enter the year of your birthday'),
'#options' => jg_entries(),
'#prefix' => '<div class="sport_jahrgang">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['verein'] = array(
'#type' => 'textfield',
'#title' => t('Enter your club'),
'#prefix' => '<div class="sport_verein">',
'#suffix' => '</div>',
);
$form['verband'] = array(
'#type' => 'textfield',
'#title' => t('Enter your association'),
'#prefix' => '<div class="sport_verband">',
'#suffix' => '</div>',
);
$options = array("Auswahl", "w", "m");
$form['geschlecht'] = array (
'#type' => 'select',
'#title' => t('Enter your male'),
'#options' => $options,
'#prefix' => '<div class="sport_jahrgang">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['telefon'] = array(
'#type' => 'textfield',
'#title' => t('Enter your telefonnumber'),
'#prefix' => '<div class="sport_tel">',
'#suffix' => '</div>',
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Enter your E-Mailaddress'),
'#prefix' => '<div class="sport_email">',
'#suffix' => '</div>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
function sport_page_form_submit($form_id, $form_values) {
$message = 'You have submitted the ' . $form_id . ' form which contains the following data:<pre>' . print_r($form_values,true) . '</pre>';
drupal_set_message(t($message));
//$timestamp = time();
//$datum = date("d.m.Y - H:i",$timestamp);
$sql = "INSERT INTO {e_anmeldung} (datum, name) VALUES('%d','%s')";
db_query($sql, time(), $form_values['lastname']);
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Also ich habe keine Ahnung,
am 05.07.2011 - 20:40 Uhr
Also ich habe keine Ahnung, wo du diese Sachen her hast, aber das dürfte an diversen Stellen ziemlich falsch sein
'You have submitted the ' . $form_id . ' form which [...]
ist Unfug. Der erste Parameter der Submit-Funktion ist nicht $form_id, sondern $form. Ja, es ist egal, wie die Variable heißt, aber es steht eben nicht die Form-ID drin, sondern das gesamte Form-Array$form_state['values']['FeldName']
zu. Dir fehlt als das['values']
beim $form_state (bzw. in deinem Fall $form_values)Wie gesagt, es ist egal, wie die Variablen heißen, die können gern $form_id und $form_values heißen. Aber drin stecken eben das Form-Array und der Form-State und nicht die ID und die Values.
Probier's mal so:
<?php
function sport_page_form($form_state) {
$form['event'] = array (
'#type' => 'select',
'#title' => t('Select your Event'),
'#options' => ev_entries(),
'#prefix' => '<div class="sport_event">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['lastname'] = array(
'#type' => 'textfield',
'#title' => t('Enter your fullname'),
'#prefix' => '<div class="sport_fullname">',
'#suffix' => '</div>',
'#required' => TRUE,
);
$form['firstname'] = array(
'#type' => 'textfield',
'#title' => t('Enter your firstname'),
'#prefix' => '<div class="sport_firstname">',
'#suffix' => '</div>',
'#required' => TRUE,
);
/*
Weitere Formular-Elemente
*/
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Enter your E-Mailaddress'),
'#prefix' => '<div class="sport_email">',
'#suffix' => '</div>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
function sport_page_form_submit($form, &$form_state) {
$message = 'You have submitted the ' . $form['#id'] . ' form which contains the following data:<pre>' . print_r($form_state, 1) . '</pre>';
drupal_set_message(t($message));
//$timestamp = time();
//$datum = date("d.m.Y - H:i",$timestamp);
$sql = "INSERT INTO {e_anmeldung} (datum, name) VALUES('%d','%s')";
// hier kommt der neue und interessante Teil
db_query($sql, time(), $form_state['values']['lastname']);
}
?>
danke
am 05.07.2011 - 22:24 Uhr
danke Exterior ,
das war es.
lg