Support » Plugins » FORM Submit führt zu 404Error – Permallink

  • Gelöst Gerry1977

    (@gerry1977)


    Hallo Leute!
    Ich stehe vor einem großen Problem. 🙁
    Ich erstelle gerade eine Seite für ein neues Radio und habe ein Plugin geschrieben welches eben die gespielten Lieder ausgeben soll.

    Das funktioniert auch wunderbar, zumindest solange man nicht die eingebaute Suche nutzt (Mittels dieser kann man sich anzeigen lassen welcher Song zB um XX:XX Uhr gespielt wurde).
    Besser gesagt es funktioniert teilweise, nämlich nur wenn ich die Permalinks auf …/?p=123 stelle, sobald ich jedoch auf „Beitragsnamen“ umstelle lande ich in einem Error404.

    Da ich nun einige Stunden in den Weiten des WWW bereits gesucht habe, bleibt mir nichts anderes übrig als mich an euch zu wenden.

    Hier noch einige Daten zum Plugin (kann es leider nicht veröffentlichen – Sorry):

    Eingebunden wird das ganze im Frontend mittels eines Shortcode
    Das Formular wird so gestartet:
    echo'<form action="'.get_permalink().'" method="post" class="formular">';

    Nach dem Absenden wird eben die DB durchsucht welche Songs am Tag X zur Zeit XX:XX gespielt wurde.

    Das Problem ist eben bei der Umstellung des Permalinks, diesen benötige ich jedoch auf der Einstellung „Beitragsnamen“.
    Als Theme habe ich das „Onair2: Radio Station WordPress Theme“ im Einsatz – Gibt es bei ThemeForest

    Vielleicht hat ja jemand einen Denkanstoß für mich, bin für jeden Tipp dankbar.

    L.g. Gerry

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Gerry1977

    (@gerry1977)

    Was ich vergaß zu erwähnen ist das die Datenbankabfrage in der selben Datei stattfindet, also es wir (zumindest wenn ich eben die Permalinks auf EINFACH stelle) abgefragt ob POST etwas übertragen hat 😉

    Gerry1977

    (@gerry1977)

    Hat keiner eine Idee, oder benötigt ihr mehrere Informationen?

    Ich seh glaub ich echt den Wald vor lauter Bäumen nicht – Ist ja nicht so das ich keine Ahnung von PHP und MySql hätte, aber bei WordPress bin ich eben was das Programmieren angeht noch „Neuling“.

    Wisst ihr eventuell ein Forum wo ich mehr Glück hätte?

    Es eilt nämlich etwas. 🙁

    L.g. Gerry

    Moderator Hans-Gerd Gerhards

    (@hage)

    Hallo,
    nur ganz kurz (wegen absoluten Zeitmangel): Ohne das Plugin genauer zu kennen und zumindest teilweise die Programmierung zu sehen, ist das schwierig.
    Evtl. kannst Du es auch hier oder hier mal versuchen.
    Sorry, ich komme in den nächsten Tagen nicht dazu, mir das näher anzusehen.
    Viel Erfolg
    Hans-Gerd

    Gerry1977

    (@gerry1977)

    Hallo Hans-Gerd
    Danke für die Links!

    Mir ist es jetzt egal, ich stelle den Code einfach einmal rein 😉

    <?php
    error_reporting(E_ALL);
    
    /*
    Plugin Name: Songhistorie
    Plugun URI: https://saiger.at
    Description: Anzeige gespielter Song im Frontend mittels Shortcode.
    Version: 1.0.0
    Author: Gerald Saiger
    Author URI: https://saiger.at
    License: GPL-3.0
    License URI: https://www.gnu.org/licenses/gpl-3.0
    */
    defined('ABSPATH') or die("Thanks for visting");
    
    add_shortcode('titel-anzeigen', 'TitelAnzeigen');
    function TitelAnzeigen() {
    	
    	
    	
    	
    	date_default_timezone_set('Europe/Berlin');
       global $wpdb;
       
        wp_enqueue_style('songview', plugin_dir_url(__FILE__) . 'css/songview.css');
    	
    	TitelSuche(); // Suchformular ein binden
    	
    	
    	// Formular Ende
       
       
       if (isset($_POST['aktion'])) { // Titelsuche gestartet wurde
    	   
    	   $date = $_POST['datum'];
    	   $time= $_POST['stunde'].':'.$_POST['minute'].':00';
    	   $searchdate= $date.' '.$time;
    	   $timestamp = strtotime($searchdate);
    	   
    	   $search1 = $timestamp; // Minus 5 Minuten
    	   $search1 = $search1 - 600;
    	  // $search2 = $timestamp; // Plus 5 Minuten
    	   $search2 = $timestamp + 600;
    	   
    	   $sql = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."titelhistorie WHERE datetime >= '".$search1."' AND datetime <= '".$search2."'  ORDER BY tid DESC");
    	}
       else { // Standartausgabe wenn die Seite geladen wird
    	   $sql = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."titelhistorie ORDER BY tid DESC LIMIT 20");
       }
       
       // Alle Einträge listen (Begriff und Beschreibung)// $sql = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."titelhistorie ORDER BY tid DESC LIMIT 20");
       // Anzahl der Datensätze ermitteln
       $numrows = $wpdb->num_rows;
       // Anzahl der Datensätze anzeigen
       $anzahl = "<p class='glossarnumrows'>Es gibt ".$numrows." Einträge.</p>";
      
       $ausgabe ="";
       // Ausgabe der Datensätze als Liste, Begriff und Beschreibung
       foreach($sql as $result)
       {
    	   if ($result->song !== "Besuch uns bei Facebook! - Klick jetzt rein!"){
    	   $ausgabe .="<p>";
    	   $song = explode("-", $result->song,2);
    	   $artist =$song[0];
    	   $title =$song[1];
    	   $ausgabe .= $artist.'<br>'.$title;
    	   $ausgabe .="</p>";
    	   
    	   $ausgabe .="<hr>";
    	   $ausgabe .="<p>";
    	   $datum = explode("-", $result->date);
    	   $uhrzeit = explode(":", $result->time);
    	   
    	   $datum = $datum[2].'.'.$datum[1].'.'.$datum[0];
    	   $uhrzeit = $uhrzeit[0].':'.$uhrzeit[1];
    	   $ausgabe .= $datum."<br/>".$uhrzeit;
    	   $ausgabe .="</p>";
    	   
    	   }
    	   
         //$ausgabe = "<p>".$result->song."</p><p>"$result->date."</p><p>"$result->time."</p>";
       } 
       return $ausgabe;  
    }
    
    function TitelSuche() {
    	global $post; // Nur als TEST
    	echo $post->ID; // Nur als TEST
    	echo'<hr>'; // Nur als TEST
    	
    	echo '<div class="flex-container">';
    	
    	echo'<form action="'.get_permalink().'" method="post" class="formular">';
    	
    	
    	//Datum
    	$day = date("Y-m-d");
    	
    	echo'<select name="datum" class="day">';
    	echo'<option value="'.$day.'">Heute</option>';	
    
    		$i = 1;
    		while ($i <= 6)
    			{
    				//$date = date("Y-m-d");
    				//echo $i;         // es wird $i ausgegeben
    				
    				$date = new DateTime(date("Y-m-d"));
    				$date->sub(new DateInterval('P'.$i.'D'));
    				
    				
    				$DateNew = $date->format('Y-m-d');
    				
    				
    				echo'<option value="'.$DateNew.'">';
    				echo $DateNew;
    				echo'</option>';
    				$i++;            // Wert wird um 1 erhöht
    			}	
    	
    	echo'</select>';
    	
    	
    	//Stunde
    	echo'<select name="stunde" class="hour">';
    		$i = 0;
    		while ($i <= 23)
    			{
    				if($i <=9) $h = '0'.$i;
    				else $h = $i;
    				echo'<option value="'.$h.'">';
    				echo $h;
    				echo'</option>';
    				$i++;
    			}
    	echo'</select>';
    	
    	//Minute
    	echo'<select name="minute" class="minute">';
    		$i = 0;
    		while ($i <= 59)
    			{
    				if($i <=9) $m = '0'.$i;
    				else $m = $i;
    				echo'<option value="'.$m.'">';
    				echo $m;
    				echo'</option>';
    				$i++;
    			}
    	echo'</select>';
    	
    	
    	echo'<input type="hidden" name="aktion" value="suchen">';
    	echo'<input type="submit" value="Anzeigen" class="button">';
    	
    	echo'</form>';
    	echo'';
    	
    	
    	
    	echo'</div>';
    	
    }
    
    ?>

    Wie man sieht sind es zwei Funktionen, einmal die Ausgabe und eben einmal das Abfrage-Formular (welches wiederum oberhalb der Ausgabe eingefügt wird)

    Vielleicht hilft es ja dazu mein Problem, das es beim Permalink „Beitragsnamen“ nich funktioniert.

    L.g. Gerry

    Gerry1977

    (@gerry1977)

    Kurzes Update!

    Habe das gesamte Script nun umgeschrieben und nutze es mit jQuery und Ajax – So funktioniert es nun auch mit dem Permalink!

    😉
    L.g. Gerry

    Moderator Reisiger, Angelika

    (@la-geek)

    Danke für die Rückmeldung 🙂

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)