Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst] Forms Drupal 7 create Table Output with Submit Form "Newsletter Subscription"

Eingetragen von daniel.mikicevic (6)
am 20.08.2014 - 10:55 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo liebe Leute ich bin ganz neu hier.

Kenne mich aber schon ein wenig mit Drupal aus und beschreibe dann mal am besten meine Problematik.

Ich möchte ein Newsletter Modul Entwickeln das ohne Einfluss von anderen Modulen läuft, ganz Simple eigentlich.
Beim Installieren meines Modules wird ein Block generiert mit der Form, wo sich die Kunden da auch Anmelden können, habe deswegen den Block genommen weil man ihn überall auspacken kann wo man nur will.

Das Modul ist auch beim fertig werden nur die Delete Funktion bekomme ich einfach nicht hin.
Habe im Backend eine Seite erstellt wo man auch die ganzen Kunden sieht die sich für den Newsletter angemeldet haben, jetzt wollte ich die auch noch löschen mit einem Link oder Button auf der rechten Seite, in der Table.

Hier mein Problemcode:

function newsletter_menu() {
    $items['admin/people/newsletter'] = array(
        'title' => 'Newsletter customers',
        'page callback' => 'newsletter_customer_page',
        'page arguments' => array('newsletter'),
        'access arguments' => array('Newsletter'),
        'type' => MENU_LOCAL_ACTION,
    );

    return $items;
}

function newsletter_customer_page(){
    drupal_set_title('Newsletter customers');

    $db = db_query("SELECT * FROM {newsletter}");

    $result = $db->fetchAll();

    $output = "<table>";
    $output .= "<tr><th>ID</th><th>First name</th><th>Last name</th><th>Email</th><th>Delete</th></tr>";
    foreach($result as $key => $value){
        $output .= "<tr><td>".$value->nid."</td>";
        $output .= "<td>".$value->first_name."</td>";
        $output .= "<td>".$value->last_name."</td>";
        $output .= "<td>".$value->email."</td>";
        $output .= "<td>". newsletter_customer_form($value->nid) ."</td></tr>";
    }
    $output .= "</table>";

    return $output;
}

function newsletter_customer_form($nid){

    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Delete'),
    );
    $form['hidden'] = array(
        '#type' => 'hidden',
        '#value' => $nid,
    );

    return $form;
}

function newsletter_customer_form_submit(){
    db_query("DELETE FROM {newsletter} WHERE nid = %d", /*VALUE from hidden field(nid)*/);
}

Ich bekomme den Schluss mit dem Löschen einfach nicht hin, habe schon einige Versionen Versucht.
Ich hoffe mir kann da einer weiterhelfen, oder mit eine bessere Lösung vorschlagen, ich bin immer offen für neues!

Mfg
Daniel

AnhangGröße
Unbenannt.PNG86.46 KB
‹ [gelöst] Drupal Funktionen in eigener Custom-Funktion nutzen [gelöst] Forms Drupal 7 create Table Output with Submit Form "Newsletter Subscription" ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Na dann debugge mal die Zeile

Eingetragen von maen (547)
am 10.09.2014 - 11:54 Uhr

Na dann debugge mal die Zeile 45 und schau was da drin steht. Sieht so aus als würde ein array übergeben der als string zu interpretieren ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du rufst innerhalb eines

Eingetragen von Tobias Bähr (4019)
am 11.09.2014 - 10:51 Uhr

Du rufst innerhalb eines Strings newsletter_customer_form() auf, und newsletter_customer_form() gibt ein Array zurück. Damit newsletter_customer_form() auch gerendert/ausgegeben wird, muss es via drupal_get_form geholt werden und durch drupal_render().

Also

<?php
$form
= drupal_get_form('newsletter_customer_form'); // Array
echo drupal_render($form); // String
?>

<?php


function newsletter_customer_page(){
   
drupal_set_title('Newsletter customers');

   
$db = db_query("SELECT * FROM {newsletter}");

   
$result = $db->fetchAll();

   
$output = "<table>";
   
$output .= "<tr><th>ID</th><th>First name</th><th>Last name</th><th>Email</th><th>Delete</th></tr>";
    foreach(
$result as $key => $value){
       
$form = drupal_get_form('newsletter_customer_form', $value->nid);
       
$output .= "<tr><td>".$value->nid."</td>";
       
$output .= "<td>".$value->first_name."</td>";
       
$output .= "<td>".$value->last_name."</td>";
       
$output .= "<td>".$value->email."</td>";
       
$output .= "<td>". drupal_render($form) ."</td></tr>";
    }
   
$output .= "</table>";

    return
$output;
}

function
newsletter_customer_form($form, $form_state, $nid) {
 
$form['#newsletter_nid'] = $nid;
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => t('Delete'),
  );
  return
$form;
}

function
newsletter_customer_form_submit($form, $form_state) {
 
drupal_set_message(t('Deleted'));
 
db_query('DELETE FROM {newsletter} WHERE nid = :nid', array(':nid' => $form['#newsletter_nid']));
}

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dankeschön für die Antworten

Eingetragen von daniel.mikicevic (6)
am 20.09.2014 - 14:20 Uhr

Entschuldigung das ich nicht früher geschrieben habe, habe das Problem lösen können, danke auf deine ausführliche Lösung.

Ich packe das ganze Modul in den Anhang wenn es wer braucht, es funktioniert soweit, beim Installieren diesen Moduls wird ein Block generiert mit den Textfeldern, "Vorname", "Nachname", "Firma", "E-Mail" und "Nachricht".
Diesen Block einfach einfügen und funktioniert eigentlich alles, es werden die angemeldeten User unter "People/ Newsletter customers" angezeigt, wo man sie auch wieder löschen kann und mehr kann das nicht.

Grund für mich war das ich öfter eine ganz normale Newsletter Anmeldung brauchte ohne Funktionalität, weil viele ihre Newsletter selbst schreiben und verschicken, Simple News usw. was es alles gibt ist ziemlich mühsam zum Einstellen und raubt auch einiges an Zeit.

Falls irgendwer Verbesserungs Vorschläge hierzu hat, bitte immer gerne.

AnhangGröße
dan_newsletter.zip 2.21 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 13 Minuten
  • Hey danke
    vor 2 Wochen 18 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 19 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 27 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association