Formular zum Bearbeiten von Daten aus Datenbank
Eingetragen von jonasnrw (2)
am 07.03.2010 - 23:46 Uhr in
am 07.03.2010 - 23:46 Uhr in
Hallo
ich fange gerade an mich mit Drupal auseinander zu setzen.
Ich möchte einf Formular erstellen das einen Namen und Email abfragt und diese nach absenden des Formulars per Mail verschickt und in eine Datenbank speichert. Das habe ich soweit auch hinbekommen. Ich möchte für diese Daten jetzt für eine Bearbeiten-Funktion erstellen.
Leider ist mir noch nicht ganz klar wie da vorgehen muss, weil diese ja auch nur im adminbereich zu sehen seien soll.
Anbei mal mein Code:
<?php
function testmodul_help($path, $arg) {
$output = '';
switch ($path) {
case "admin/help#testmodul":
$output = '<p>'. t("Displays links to nodes created on this date") .'</p>';
break;
}
return $output;
}
function testmodul_perm() {
return array('access testmodul content');
}
function testmodul_form($form_state) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('Name'),
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('email'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('E-Mail'),
);
$form['submit'] = array('#type' => 'submit', '#value' => t('Abschicken'));
$form_state['rebuild'] = TRUE;
return $form;
}
function testmodul_page() {
return drupal_get_form('testmodul_form');
}
function testmodul_form_validate($form, &$form_state) {
if ($form_state['values']['name'] == '') {
form_set_error('Text1', t('Bitte einen Namen eingeben'));
}
if ($form_state['values']['email'] == '') {
form_set_error('Text2', t('Bitte eine E-Mail eingeben'));
}
}
function testmodul_form_submit($form, &$form_state) {
$temp_name=$form_state['values']['name'];
$temp_email=$form_state['values']['email'];
$temp_ip=$_SERVER['REMOTE_ADDR'];
sendMail($temp_name,$temp_email);
db_query("INSERT INTO {data_test} (id , name , email , ip ) VALUES (NULL , '$temp_name', '$temp_email', '$temp_ip')");
drupal_set_message(t('Die Daten wurden gespeichert!'));
}
function sendMail($form_name,$form_email) {
$mail_ip=$_SERVER['REMOTE_ADDR'];
$message = array(
'to' => $form_email,
'subject' => t('Drupal E-Mail'),
'body' => 'Hallo '.$form_name.', das ist die Drupal Mail von '.$mail_ip,
'headers' => array('From' => 'mailadresse'),
);
drupal_mail_send($message);
}
function testmodul_block($op='list', $delta=0) {
switch ($op) {
case 'list':
$blocks[0]['info'] = t('testmodul');
return $blocks;
case 'view':
$blocks['subject'] = t('testmodul');
$blocks['content'] = testmodul_page();
return $blocks;
}
}
Viele Grüße
Jonas
- Anmelden oder Registrieren um Kommentare zu schreiben
modul
am 08.03.2010 - 08:41 Uhr
webform. macht genau das was du brauchst
Hallo vielen Dank für
am 08.03.2010 - 13:21 Uhr
Hallo
vielen Dank für Antwort. Mit Webform habe ich das schon umgesetzt bekommen. Aber ich möchte das auch ohne ein Modul hinbekommen, um etwas mehr programmierpraxis zu bekommen. Habe mir auch schon die Dateien von Webform angeschaut, aber leider blicke ich da nicht ganz durch, weil das doch sehr umfangreich ist....
Viele Grüße
Hi, habe mir mal die Mühe
am 25.03.2010 - 15:49 Uhr
Hi,
habe mir mal die Mühe gemacht Deinen gesamten Code zu überarbeiten.
<?php
/**
* Implementation of hook_block().
*/
function testmodul_block($op = 'list', $delta = 0, $edit = array()) {
if ($op == 'list') {
$blocks[0]['info'] = t('Testmodul');
return $blocks;
} else if ($op == 'view') {
switch($delta) {
case 0:
$block['subject'] = t('Testmodul');
$block['content'] = testmodul_page();
break;
}
return $block;
}
}
/**
*
*/
function testmodul_page() {
return drupal_get_form('testmodul_form');
}
/**
* Implementation of hook_help().
*/
function testmodul_help($path, $arg) {
$output = '';
switch ($path) {
case "admin/help#testmodul":
$output = '<p>' . t('Displays links to nodes created on this date') . '</p>';
break;
}
return $output;
}
/**
* Implementation of hook_perm().
*/
function testmodul_perm() {
return array(
'access testmodul content',
);
}
/**
*
*/
function testmodul_form($form_state) {
$form = array();
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('Name'),
'#required' => true,
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('email'),
'#size' => 30,
'#maxlength' => 64,
'#description' => t('E-Mail'),
'#required' => true,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Send'),
);
return $form;
}
/**
*
*/
function testmodul_form_submit($form, &$form_state) {
// Insert data into db
$sql = "INSERT INTO {data_test} (name, email, ip) VALUES ('%s', '%s', '%s')";
db_query($sql, $form_state['values']['name'], $form_state['values']['email'], $_SERVER['REMOTE_ADDR']);
// Send mail
$language = $GLOBALS['language']->language;
drupal_mail('testmodul', '', $form_state['values']['email'], $language, $form_state['values']);
drupal_set_message(t('Die Daten wurden gespeichert!'));
}
/**
* Implementation of hook_mail().
*/
function testmodul_mail($key, &$message, $params) {
$site_name = variable_get('site_name', '');
$site_mail = variable_get('site_mail', '');
$message['from'] = '"'. mime_header_encode($site_name) .'" <'. $site_mail .'>';
$message['headers']['From'] = '"'. mime_header_encode($site_name) .'" <'. $site_mail .'>';
$message['subject'] = t('Drupal E-Mail');
$message['body'] = drupal_html_to_text('Hallo ' . $params['name'] . ', das ist die Drupal Mail von ' . $_SERVER['REMOTE_ADDR']);
}
?>