Inhaltsverzeichnis
Entscheiden Sie sich für das Format
Preiserhöhung
' . __( 'Export Activity Logs', 'wptuts-log' ) . '
Exportdatei erstellen
摘要
Heim Backend-Entwicklung PHP-Tutorial Datenexport: benutzerdefinierte Datenbanktabelle

Datenexport: benutzerdefinierte Datenbanktabelle

Sep 02, 2023 pm 06:01 PM
数据导出 定制 数据库表

<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/169364887365792.jpg" class="lazy" alt="Datenexport: benutzerdefinierte Datenbanktabelle"></p> <p>Wie im ersten Artikel dieser Serie erwähnt, besteht eines der Hauptprobleme bei benutzerdefinierten Datenbanktabellen darin, dass sie nicht von vorhandenen Import- und Export-Handlern verarbeitet werden. Ziel dieses Artikels ist es, dieses Problem anzugehen, es ist jedoch zu beachten, dass es derzeit keine vollständig zufriedenstellende Lösung gibt. </p> <p>Betrachten wir zwei Szenarien: </p> <ol> <li>Benutzerdefinierte Tabellen verweisen auf native WordPress-Tabellen</li> <li>Benutzerdefinierte Tabellen sind völlig unabhängig von nativen Tabellen</li> </ol> <p>Das „Worst-Case-Szenario“ ist das erste Szenario. Nehmen Sie als Beispiel eine benutzerdefinierte Tabelle, die Benutzeraktivitätsprotokolle enthält. Es verweist auf die Benutzer-ID, die Objekt-ID und den Objekttyp, die alle auf Daten verweisen, die in nativen WordPress-Tabellen gespeichert sind. Stellen Sie sich nun vor, dass jemand alle Daten seiner WordPress-Website in eine zweite Website importieren möchte. Es ist beispielsweise durchaus möglich, dass WordPress beim Importieren eines Beitrags ihm eine neue ID zuweisen muss, da möglicherweise bereits ein Beitrag mit dieser ID auf der zweiten Site vorhanden ist. </p> <p>In diesem Fall ist es notwendig, solche Änderungen zu verfolgen und die in der Tabelle aufgeführten IDs zu aktualisieren. Das ist an sich nicht so schwierig. <em>Leider</em> fehlen dem WordPress-Importer-Plugin für den Import von Daten von anderen WordPress-Sites die notwendigen Hooks, um dies zu erreichen. Wie in diesem Kommentar vorgeschlagen, besteht eine mögliche Problemumgehung darin, die Daten auch in den Metadaten zu speichern. Leider führt dies zu doppelten Daten und verstößt gegen die Datenbanknormalisierung – im Allgemeinen keine gute Idee. Letztlich ist es nur in wenigen Anwendungsfällen wirklich realisierbar. </p> <p>Der zweite Fall vermeidet diese Komplexität, erfordert aber dennoch benutzerdefinierte Import- und Export-Handler. Wir werden diese Situation in den nächsten beiden Artikeln demonstrieren. Aus Gründen der Konsistenz mit dem Rest dieser Serie bleiben wir jedoch bei der Aktivitätsprotokolltabelle, auch wenn es sich um ein Beispiel für Fall (1) handelt. </p> <hr> <h2 id="Entscheiden-Sie-sich-für-das-Format">Entscheiden Sie sich für das Format</h2> <p>Zuerst müssen wir das Format der exportierten Datei festlegen. Das beste Format hängt von der Art (oder „Struktur“) der Daten und ihrer Verwendung ab. Meiner Meinung nach ist XML im Allgemeinen besser, da es Eins-zu-viele-Beziehungen verarbeiten kann. Wenn die Daten jedoch in Tabellenform vorliegen, kann CSV manchmal vorzuziehen sein, insbesondere wegen der einfachen Integration in Tabellenkalkulationsanwendungen. In diesem Beispiel verwenden wir XML. </p> <hr> <h2 id="Preiserhöhung">Preiserhöhung</h2> <p>Der nächste Schritt besteht darin, eine Admin-Seite zu erstellen, damit Benutzer Daten aus der Protokolltabelle exportieren können. Wir erstellen eine Klasse, die eine Seite unterhalb des Menüpunkts „Extras“ hinzufügt. Die Seite enthält lediglich eine Schaltfläche, die den Benutzer zum Herunterladen der Exportdatei auffordert. Die Klasse fügt außerdem einen Handler hinzu, der auf Formularübermittlungen wartet und Dateidownloads auslöst. </p> <p>Schauen wir uns zunächst die Struktur der Klasse an und geben dann die Details ihrer Methoden ein. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>class WPTuts_Log_Export_Admin_Page{ /** * The page hook suffix */ static $hook_suffix=''; static function load(){ add_action('admin_menu', array(__CLASS__,'add_submenu')); add_action('admin_init', array(__CLASS__,'maybe_download')); } static function add_submenu(){} static function maybe_download(){} static function display(){} } WPTuts_Log_Export_Admin_Page::load(); </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p><code>WPTuts_Log_Export_Admin_Page::load()</code> Initialisieren Sie die Klasse und verknüpfen Sie Rückrufe mit den entsprechenden Vorgängen: </p> <ul> <li> <code>add_submenu</code> – Methode, die für das Hinzufügen von Seiten im Menü „Extras“ verantwortlich ist. </li> <li> <code>maybe_download</code> – Diese Methode überwacht, um zu prüfen, ob die Download-Anfrage übermittelt wurde. Dadurch werden auch Berechtigungen und Nonces überprüft. </li> </ul> <p>Der Export-Listener muss frühzeitig aufgerufen werden, bevor Header gesendet werden, da wir diese Header selbst festlegen. Wir können es mit <code>init</code> 上,但由于我们只允许在管理中下载导出文件,因此 <code>admin_init</code> verbinden, was hier passender ist. </p> <p>Das Hinzufügen von Seiten zu Ihrem Menü ist ganz einfach. Um eine Seite unter Extras hinzuzufügen, rufen wir einfach <code>add_management_page()</code> auf. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>static function add_submenu(){ self::$hook_suffix = add_management_page( __('Export Logs','wptuts-log'), __('Export Logs','wptuts-log'), 'manage_options', 'wptuts-export', array(__CLASS__,'display') ); } </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>Das <code>$hook_suffix</code> hier ist ein Suffix, das für verschiedene bildschirmspezifische Hooks verwendet wird, die hier besprochen werden. Wir verwenden es hier nicht – aber wenn Sie es tun, ist es besser, seinen Wert in einer Variablen zu speichern, anstatt ihn fest zu codieren. </p> <p> Oben legen wir die Methode <code>display()</code> als Callback unserer Seite fest, als nächstes definieren wir sie: </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>static function display(){ echo '&lt;div class=&quot;wrap&quot;&gt;'; screen_icon(); echo '&lt;h2 id=&quot;Export-Activity-Logs-wptuts-log&quot;&gt;' . __( 'Export Activity Logs', 'wptuts-log' ) . '&lt;/h2&gt;'; ?&gt; &lt;form id=&quot;wptuts-export-log-form&quot; method=&quot;post&quot; action=&quot;&quot;&gt; &lt;p&gt; &lt;label&gt;&lt;?php _e( 'Click to export the activity logs','wptuts-log' ); ?&gt;&lt;/label&gt; &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;export-logs&quot; /&gt; &lt;/p&gt; &lt;?php wp_nonce_field('wptuts-export-logs','_wplnonce') ;?&gt; &lt;?php submit_button( __('Download Activity Logs','wptuts-log'), 'button' ); ?&gt; &lt;/form&gt; &lt;?php } </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>Abschließend möchten wir überwachen, wann das obige Formular übermittelt wird, und den Download der Exportdatei auslösen. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>static function maybe_download(){ /* Listen for form submission */ if( empty($_POST['action']) || 'export-logs' !== $_POST['action'] ) return; /* Check permissions and nonces */ if( !current_user_can('manage_options') ) wp_die(''); check_admin_referer( 'wptuts-export-logs','_wplnonce'); /* Trigger download */ wptuts_export_logs(); } </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>Jetzt müssen Sie nur noch die Funktion <code>wptuts_export_logs()</code> erstellen, die unsere .xml-Datei erstellt und zurückgibt. </p> <hr> <h2 id="Exportdatei-erstellen">Exportdatei erstellen</h2> <p>Das erste, was die Funktion tun soll, ist das Abrufen des Protokolls. Falls vorhanden, müssen wir die entsprechenden Header festlegen und sie im XML-Format drucken. Da wir möchten, dass der Benutzer die XML-Datei herunterlädt, setzen wir den Content-Type auf <code>text/xml</code>,将 Content-Description 设置为 <code>File Transfer</code>. Außerdem generieren wir einen passenden Namen für die heruntergeladene Datei. Abschließend fügen wir einige Kommentare hinzu – diese sind völlig optional, helfen dem Benutzer jedoch dabei, zu erfahren, was mit der heruntergeladenen Datei zu tun ist. </p> <p>Da wir im vorherigen Teil dieser Serie die API für die Tabelle erstellt haben, muss unser Export-Handler die Datenbank nicht direkt berühren – und sie muss auch nicht bereinigt werden <code>$args</code> 数组,因为这是由 <code> 处理的wptuts_get_logs()</code>. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>function wptuts_export_logs( $args = array() ) { /* Query logs */ $logs = wptuts_get_logs($args); /* If there are no logs - abort */ if( !$logs ) return false; /* Create a file name */ $sitename = sanitize_key( get_bloginfo( 'name' ) ); if ( ! empty($sitename) ) $sitename .= '.'; $filename = $sitename . 'wptuts-logs.' . date( 'Y-m-d' ) . '.xml'; /* Print header */ header( 'Content-Description: File Transfer' ); header( 'Content-Disposition: attachment; filename=' . $filename ); header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); /* Print comments */ echo &quot;&lt;!-- This is a export of the wptuts log table --&gt;\n&quot;; echo &quot;&lt;!-- (Demonstration purposes only) --&gt;\n&quot;; echo &quot;&lt;!-- (Optional) Included import steps here... --&gt;\n&quot;; /* Print the logs */ } </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>您会注意到,我们已将实际查询数组作为参数传递给 <code>wptuts_export_logs()</code> 函数。我们可以对此进行硬编码,但不这样做也是有道理的。虽然这里的目的只是导出表中的<em>所有内容</em>,但将查询作为参数传递允许我们稍后添加在特定时间范围内或针对特定用户导出日志的选项。</ p> <p>创建 XML 文件时,我们需要确保标签之间打印的值不包含字符 <code>&</code>、<code><</code> 或 <code>></code>。为了确保这一点,对于 ID,我们使用 <code>absint</code> 清理数据,并使用 <code>sanitize_key</code> 清理对象类型和活动(因为我们希望这些仅包含小写字母数字、下划线和连字符)。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>/* Print logs to file */ echo '&lt;logs&gt;'; foreach ( $logs as $log ) { ?&gt; &lt;item&gt; &lt;log_id&gt;&lt;?php echo absint($log-&gt;log_id); ?&gt;&lt;/log_id&gt; &lt;activity_date&gt;&lt;?php echo mysql2date( 'Y-m-d H:i:s', $log-&gt;activity_date, false ); ?&gt;&lt;/activity_date&gt; &lt;user_id&gt;&lt;?php echo absint($log-&gt;user_id); ?&gt;&lt;/user_id&gt; &lt;object_id&gt;&lt;?php echo absint($log-&gt;object_id); ?&gt;&lt;/object_id&gt; &lt;object_type&gt;&lt;?php echo sanitize_key($log-&gt;object_type); ?&gt;&lt;/object_type&gt; &lt;activity&gt;&lt;?php echo sanitize_key($log-&gt;activity); ?&gt;&lt;/activity&gt; &lt;/item&gt; &lt;?php } echo '&lt;/logs&gt;'; </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>更一般地,您可以使用以下函数将要打印的值包装在 <code>CDATA</code> 标记内来清理它们:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>/** * Wraps the passed string in a XML CDATA tag. * * @param string $string String to wrap in a XML CDATA tag. * @return string */ function wptuts_wrap_cdata( $string ) { if ( seems_utf8( $string ) == false ) $string = utf8_encode( $string ); return '&lt;![CDATA[' . str_replace( ']]&gt;', ']]]]&gt;&lt;![CDATA[&gt;', $string ) . ']]&gt;'; } </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>最后我们 <code>exit()</code> 以防止任何进一步的处理:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'> /* Finished - now exit */ exit(); </pre><div class="contentsignin">Nach dem Login kopieren</div></div> <p>导航到我们的导出页面,单击“下载活动日志”应提示下载 XML 文件。</p> <hr> <h2 id="摘要">摘要</h2> <p>在本教程中,我们研究了从自定义表中导出数据。不幸的是,当数据引用本机 WordPress 表时,这充其量是有问题的。上述方法仅适用于数据无法做到这一点的情况。使用的示例(我们的活动日志)显然不属于此类,只是为了与本系列的其余部分保持一致而使用。</p> <p>当数据<em>确实</em>引用本机表时,显然有必要将其与本机表一起导入,并在此过程中跟踪导入期间发生的 ID 任何更改。目前,现有的导入和导出处理程序无法实现这一点,因此唯一可行的选择是创建自己的处理程序。在自定义数据仅引用单个帖子类型的简单情况下,可以设计导入和导出处理程序来处理该帖子类型以及自定义数据,并通知用户不要使用该帖子类型的本机导出器。 </p> <p>在本系列的下一部分中,我们将为导出的 .xml 文件创建一个简单的导入处理程序。</p>

Das obige ist der detaillierte Inhalt vonDatenexport: benutzerdefinierte Datenbanktabelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

ECharts- und Java-Schnittstelle: So exportieren und teilen Sie statistische Diagrammdaten ECharts- und Java-Schnittstelle: So exportieren und teilen Sie statistische Diagrammdaten Dec 17, 2023 am 08:44 AM

ECharts ist eine leistungsstarke, flexible und anpassbare Open-Source-Diagrammbibliothek, die zur Datenvisualisierung und Großbildschirmanzeige verwendet werden kann. Im Zeitalter von Big Data sind die Datenexport- und Freigabefunktionen statistischer Diagramme immer wichtiger geworden. In diesem Artikel wird erläutert, wie die Export- und Freigabefunktionen für statistische Diagrammdaten von ECharts über die Java-Schnittstelle implementiert werden, und es werden spezifische Codebeispiele bereitgestellt. 1. Einführung in ECharts ECharts ist eine Datenvisualisierungsbibliothek basierend auf JavaScript und Canvas, Open Source von Baidu, mit umfangreichen Diagrammen.

So verwenden Sie vue und Element-plus zum Exportieren und Drucken von Daten So verwenden Sie vue und Element-plus zum Exportieren und Drucken von Daten Jul 18, 2023 am 09:13 AM

So implementieren Sie Datenexport- und Druckfunktionen mit Vue und ElementPlus. Mit der rasanten Entwicklung der Front-End-Entwicklung müssen immer mehr Webanwendungen Datenexport- und Druckfunktionen bereitstellen, um den unterschiedlichen Anforderungen der Benutzer an die Datennutzung gerecht zu werden . Als beliebtes JavaScript-Framework kann Vue bei Verwendung mit der ElementPlus-Komponentenbibliothek problemlos Datenexport- und Druckfunktionen implementieren. In diesem Artikel wird ein Datenexport vorgestellt und

So verwenden Sie PHP, um Excel-Funktionen für den Datenimport und -export zu implementieren So verwenden Sie PHP, um Excel-Funktionen für den Datenimport und -export zu implementieren Sep 06, 2023 am 10:06 AM

So verwenden Sie PHP zum Implementieren von Excel-Funktionen für den Datenimport und -export. Das Importieren und Exportieren von Excel-Dateien ist eine der häufigsten Anforderungen in der Webentwicklung. Durch die Verwendung der PHP-Sprache können wir diese Funktion einfach implementieren. In diesem Artikel stellen wir vor, wie Sie PHP und die PHPExcel-Bibliothek verwenden, um Datenimport- und -exportfunktionen in Excel-Dateien zu implementieren. Zuerst müssen wir die PHPExcel-Bibliothek installieren. Sie können es von der offiziellen Website herunterladen (https://github.com/PHPOffice/P

PHP-Formularverarbeitung: Formulardatenexport und -druck PHP-Formularverarbeitung: Formulardatenexport und -druck Aug 09, 2023 pm 03:48 PM

PHP-Formularverarbeitung: Formulardatenexport und -druck Bei der Website-Entwicklung sind Formulare ein unverzichtbarer Bestandteil. Wenn ein Formular auf der Website vom Benutzer ausgefüllt und übermittelt wird, muss der Entwickler die Formulardaten verarbeiten. In diesem Artikel erfahren Sie, wie Sie Formulardaten mit PHP verarbeiten und wie Sie die Daten in eine Excel-Datei exportieren und ausdrucken. 1. Formularübermittlung und grundlegende Verarbeitung Zunächst müssen Sie ein HTML-Formular erstellen, damit Benutzer Daten ausfüllen und übermitteln können. Nehmen wir an, wir haben ein einfaches Feedback-Formular mit Name, E-Mail-Adresse und Kommentaren. HTM

So verwenden Sie Vue und Element-UI zur Implementierung von Datenimport- und -exportfunktionen So verwenden Sie Vue und Element-UI zur Implementierung von Datenimport- und -exportfunktionen Jul 22, 2023 pm 01:25 PM

So implementieren Sie Datenimport- und -exportfunktionen mit Vue und Element-UI. Mit der Entwicklung von Webanwendungen sind Datenimport- und -exportfunktionen in vielen Projekten immer wichtiger geworden. Durch die Bereitstellung praktischer Datenimport- und -exportfunktionen für Benutzer kann nicht nur die Benutzererfahrung verbessert, sondern auch die Gesamteffizienz des Systems verbessert werden. In diesem Artikel wird die Verwendung von Vue und Element-UI zum Implementieren von Datenimport- und -exportfunktionen vorgestellt und entsprechende Codebeispiele angehängt. 1. Vorbereitungsarbeiten Zuerst müssen wir Vu in das Projekt einführen

Golang Practical Combat: Austausch von Implementierungstipps für die Datenexportfunktion Golang Practical Combat: Austausch von Implementierungstipps für die Datenexportfunktion Feb 29, 2024 am 09:00 AM

Die Datenexportfunktion ist eine sehr häufige Anforderung in der tatsächlichen Entwicklung, insbesondere in Szenarien wie Back-End-Managementsystemen oder dem Export von Datenberichten. In diesem Artikel wird die Golang-Sprache als Beispiel verwendet, um die Implementierungsfähigkeiten der Datenexportfunktion zu teilen und spezifische Codebeispiele zu geben. 1. Vorbereitung der Umgebung Bevor Sie beginnen, stellen Sie sicher, dass Sie die Golang-Umgebung installiert haben und mit der grundlegenden Syntax und Funktionsweise von Golang vertraut sind. Darüber hinaus müssen Sie zur Implementierung der Datenexportfunktion möglicherweise eine Bibliothek eines Drittanbieters verwenden, z. B. github.com/360EntSec

Die perfekte Kombination aus Vue und Excel: So exportieren Sie Daten stapelweise Die perfekte Kombination aus Vue und Excel: So exportieren Sie Daten stapelweise Jul 21, 2023 pm 12:13 PM

Die perfekte Kombination aus Vue und Excel: So implementieren Sie den Batch-Export von Daten. In vielen Frontend-Entwicklungen ist der Export von Daten nach Excel eine häufige Anforderung. Als beliebtes JavaScript-Framework bietet Vue viele praktische Tools und Methoden, um diese Funktion zu erreichen. In diesem Artikel wird erläutert, wie Sie die Bibliotheken Vue und Excel.js verwenden, um die Stapelexportfunktion von Daten zu implementieren. Zuerst müssen wir die Excel.js-Bibliothek installieren. Es kann mit dem npm-Paketmanager installiert werden: npminstall

Detaillierte Erläuterung der Verwendung von Golang zur Implementierung der Datenexportfunktion Detaillierte Erläuterung der Verwendung von Golang zur Implementierung der Datenexportfunktion Feb 28, 2024 pm 01:42 PM

Titel: Detaillierte Erläuterung der Datenexportfunktion mit Golang. Mit der Verbesserung der Informatisierung müssen viele Unternehmen und Organisationen in Datenbanken gespeicherte Daten zur Datenanalyse, Berichtserstellung und anderen Zwecken exportieren. In diesem Artikel wird erläutert, wie die Programmiersprache Golang zum Implementieren der Datenexportfunktion verwendet wird, einschließlich detaillierter Schritte zum Herstellen einer Verbindung zur Datenbank, zum Abfragen von Daten und zum Exportieren von Daten in Dateien sowie zur Bereitstellung spezifischer Codebeispiele. Um zunächst eine Verbindung zur Datenbank herzustellen, müssen wir den in Golang bereitgestellten Datenbanktreiber verwenden, z. B. da

See all articles