Mit eigenem Formular in DB schreiben

  • Hallo zusammen,

    Ich möchte über ein Formular Daten in eine mysql Datenbank schreiben (wenn möglich OHNE Plugin).
    in einer "normalen" .php Datei funktioniert es, aber in Verbindung mit WordPress werden keine Daten in die Tabelle eingetragen.

    jetzt zu meiner Frage:

    wie sieht hier der PHP Teil dazu aus?
    Datenbank Name: events
    Tabelle: event


    Ich möchte alles auf einer Seite haben.
    d.h. Daten eintragen, abschicken, Seite neu laden und den neuen Eintrag gleich anzeigen.


    Ich hoffe dass mein Problem einigermaßen zu verstehen ist.

    Gruß und Danke im voraus
    Sven

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • jetzt zu meiner Frage:

    wie sieht hier der PHP Teil dazu aus?
    Datenbank Name: events
    Tabelle: event

    Du nimmst "einfach" die $_POST Varibalen an

    ich sende mir per hidden feld eine action mit. und in der Regel noch ein Sicherheitstoken.


    <form class="" action="" method="post">
    <input type="hidden" name="action" value="submit">

    im PHP Script nehme ich die Daten aus dem Formualt an:

    PHP
    if ( isset($_POST['action']) && ($_POST['action'] == 'submit') ){

    In der Regel verwende ich meine eigenen Funktionen für die Überprüfung der Variablen. Du kannst aber auch WordPress verwenden.

    PHP
    $sVeranstaltung = sanitize_key($_POST['veranstaltung'])
    .
    .
    .
    $sOrt= sanitize_key($_POST['ort'])


    dann schreibt man dies in die Datenbank

    PHP
    $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->deine_events ( veranstaltung, ....  ort ) VALUES ( %s, .... %s,)", $sVeranstaltung,.....  $sOrt) );

    man kann bei WordPress auch $wpdb->insert verwenden

    PHP
    $wpdb->insert( $wpdb->deine_events, arrayt('veranstaltung' =>$sVeranstaltung, .... 'ort' => $sOrt) );

    für die Ausgabe kommt dann ein select

    PHP
    $select = 'veranstaltung, ort';
    	$posts = $wpdb->get_results("SELECT $select FROM $wpdb->deine_events GROUP BY ort");
    	foreach ( $posts as $post ) {

    Mit offenen Augen träumen

  • Guten Morgen r23

    Erst einmal vielen dank für deine Antwort!!
    Ich habe allerdings noch ein paar Verständnis Probleme.

    Das <input type"hidden"....> schickst du einfach mit damit der Name "action" übergeben wird?!


    <form class="" action="" method="post">
    <input type="hidden" name="action" value="submit">


    Hier wird abgefragt ob "action" übergeben wurde

    PHP
    if ( isset($_POST['action']) && ($_POST['action'] == 'submit') ){


    PHP
    $sVeranstaltung = sanitize_key($_POST['veranstaltung'])
    .
    .
    .
    $sOrt= sanitize_key($_POST['ort'])
    PHP
    $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->deine_events ( veranstaltung, ....  ort ) VALUES ( %s, .... %s,)", $sVeranstaltung,.....  $sOrt) );

    Und das wird dann an stelle von dem geschrieben

    PHP
    if ( isset( $_POST[ 'submit' ] ) ):
    		$eventname = $_POST[ 'eventname' ];
                    
    		$absenden = $database->prepare( "INSERT INTO veranstaltung (eventname, created_at) VALUES (?, NOW())" );
    		$absenden->bind_param( 's', $eventname);
    		$absenden->execute();
    	endif;


    Sorry für die vielen Fragen aber ich habe eine zeitlang nicht mehr Programmiert.

    Schönen Tag
    Sven

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!