Table des matières
Décidez du format
Augmentation des prix
' . __( 'Export Activity Logs', 'wptuts-log' ) . '
Créer un fichier d'exportation
摘要
Maison développement back-end tutoriel php Exportation de données : table de base de données personnalisée

Exportation de données : table de base de données personnalisée

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="Exportation de données : table de base de données personnalisée"></p> <p>Comme mentionné dans le premier article de cette série, l'un des principaux problèmes des tables de bases de données personnalisées est qu'elles ne sont pas gérées par les gestionnaires d'importation et d'exportation existants. Cet article vise à résoudre ce problème, mais il convient de noter qu’il n’existe actuellement aucune solution pleinement satisfaisante. </p> <p>Considérons deux scénarios : </p> <ol> <li>Les tableaux personnalisés font référence aux tableaux WordPress natifs</li> <li>Les tables personnalisées sont complètement indépendantes des tables natives</li> </ol> <p>Le « pire scénario » est le premier scénario. Prenons comme exemple une table personnalisée qui enregistre les journaux d'activité des utilisateurs. Il fait référence à l’ID utilisateur, à l’ID d’objet et au type d’objet, qui font tous référence à des données stockées dans des tables WordPress natives. Imaginez maintenant que quelqu’un souhaite importer toutes les données de son site WordPress vers un deuxième site Web. Par exemple, il est tout à fait possible que lors de l’importation d’une publication, WordPress doive lui attribuer un nouvel identifiant, car une publication avec cet identifiant existe peut-être déjà sur le deuxième site. </p> <p>Dans ce cas, il est nécessaire de suivre ces modifications et de mettre à jour les identifiants référencés dans le tableau. En soi, ce n’est pas si difficile. <em>Malheureusement</em>, le plugin WordPress Importer pour gérer l'importation de données depuis d'autres sites WordPress ne dispose pas des crochets nécessaires pour y parvenir. Comme suggéré dans ce commentaire, une solution de contournement potentielle consisterait également à stocker les données dans des métadonnées. Malheureusement, cela entraîne des données en double et viole la normalisation de la base de données, ce qui n'est généralement pas une bonne idée. En fin de compte, ce n’est vraiment réalisable que dans quelques cas d’utilisation. </p> <p>Le deuxième cas évite cette complexité mais nécessite toujours des gestionnaires d'importation et d'exportation personnalisés. Nous démontrerons cette situation dans les deux prochains articles. Cependant, par souci de cohérence avec le reste de cette série, nous nous en tiendrons au tableau du journal d'activité, même s'il s'agit d'un exemple du cas (1). </p> <hr> <h2 id="Décidez-du-format">Décidez du format</h2> <p>Nous devons d’abord décider du format du fichier exporté. Le meilleur format dépend de la nature (ou « structure ») des données et de la manière dont elles seront utilisées. À mon avis, XML est généralement meilleur car il peut gérer des relations un-à-plusieurs. Cependant, parfois, si les données sont sous forme de tableau, le format CSV peut être préférable, notamment en raison de sa facilité d'intégration avec les tableurs. Dans cet exemple, nous utiliserons XML. </p> <hr> <h2 id="Augmentation-des-prix">Augmentation des prix</h2> <p>L'étape suivante consiste à créer une page d'administration pour permettre aux utilisateurs d'exporter les données de la table de journal. Nous allons créer une classe qui ajoutera une page sous l'élément de menu Outils. La page contient uniquement un bouton invitant l'utilisateur à télécharger le fichier d'exportation. La classe ajoutera également un gestionnaire pour écouter les soumissions de formulaires et déclencher le téléchargement de fichiers. </p> <p>Regardons d’abord la structure de la classe, puis complétons les détails de ses méthodes. </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">Copier après la connexion</div></div> <p><code>WPTuts_Log_Export_Admin_Page::load()</code> Initialisez la classe et accrochez les rappels aux opérations appropriées : </p> <ul> <li> <code>add_submenu</code> – Méthode responsable de l’ajout de pages dans le menu Outils. </li> <li> <code>maybe_download</code> – Cette méthode écoutera pour vérifier si la demande de téléchargement a été soumise. Cela vérifiera également les autorisations et les noms occasionnels. </li> </ul> <p>L'écouteur d'exportation doit être appelé tôt avant l'envoi des en-têtes, car nous définirons ces en-têtes nous-mêmes. On peut le brancher sur <code>init</code> 上,但由于我们只允许在管理中下载导出文件,因此 <code>admin_init</code> ce qui est plus approprié ici. </p> <p>Ajouter des pages à votre menu est facile. Pour ajouter une page sous Outils, il suffit d'appeler <code>add_management_page()</code>. </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">Copier après la connexion</div></div> <p>Le <code>$hook_suffix</code> ici est un suffixe utilisé pour divers crochets spécifiques à l'écran, discutés ici. Nous ne l'utilisons pas ici - mais si vous le faites, il est préférable de stocker sa valeur dans une variable plutôt que de la coder en dur. </p> <p> Ci-dessus nous définissons la méthode <code>display()</code> comme rappel de notre page, ensuite nous la définissons : </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">Copier après la connexion</div></div> <p>Enfin, nous souhaitons surveiller le moment où le formulaire ci-dessus est soumis et déclencher le téléchargement du fichier d'exportation. </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">Copier après la connexion</div></div> <p>Il ne reste plus qu'à créer la fonction <code>wptuts_export_logs()</code> qui crée et renvoie notre fichier .xml. </p> <hr> <h2 id="Créer-un-fichier-d-exportation">Créer un fichier d'exportation</h2> <p>La première chose que nous voulons que la fonction fasse est de récupérer le journal. Le cas échéant, nous devons définir les en-têtes appropriés et les imprimer au format XML. Puisque nous voulons que l'utilisateur télécharge le fichier XML, nous définissons le Content-Type sur <code>text/xml</code>,将 Content-Description 设置为 <code>File Transfer</code>. Nous générerons également un nom approprié pour le fichier téléchargé. Enfin, nous ajouterons quelques commentaires – ceux-ci sont totalement facultatifs, mais utiles pour guider l’utilisateur sur quoi faire avec le fichier téléchargé. </p> <p>Depuis que nous avons créé l'API pour la table dans la partie précédente de cette série, notre gestionnaire d'exportation n'a pas besoin de toucher directement la base de données - ni de la nettoyer <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">Copier après la connexion</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">Copier après la connexion</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">Copier après la connexion</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">Copier après la connexion</div></div> <p>导航到我们的导出页面,单击“下载活动日志”应提示下载 XML 文件。</p> <hr> <h2 id="摘要">摘要</h2> <p>在本教程中,我们研究了从自定义表中导出数据。不幸的是,当数据引用本机 WordPress 表时,这充其量是有问题的。上述方法仅适用于数据无法做到这一点的情况。使用的示例(我们的活动日志)显然不属于此类,只是为了与本系列的其余部分保持一致而使用。</p> <p>当数据<em>确实</em>引用本机表时,显然有必要将其与本机表一起导入,并在此过程中跟踪导入期间发生的 ID 任何更改。目前,现有的导入和导出处理程序无法实现这一点,因此唯一可行的选择是创建自己的处理程序。在自定义数据仅引用单个帖子类型的简单情况下,可以设计导入和导出处理程序来处理该帖子类型以及自定义数据,并通知用户不要使用该帖子类型的本机导出器。 </p> <p>在本系列的下一部分中,我们将为导出的 .xml 文件创建一个简单的导入处理程序。</p>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Interface ECharts et Java : Comment exporter et partager des données de graphiques statistiques Interface ECharts et Java : Comment exporter et partager des données de graphiques statistiques Dec 17, 2023 am 08:44 AM

ECharts est une bibliothèque de graphiques open source puissante, flexible et personnalisable qui peut être utilisée pour la visualisation de données et l'affichage sur grand écran. À l’ère du Big Data, les fonctions d’exportation et de partage de données des graphiques statistiques sont devenues de plus en plus importantes. Cet article présentera comment implémenter les fonctions d'exportation et de partage de données de graphiques statistiques d'ECharts via l'interface Java, et fournira des exemples de code spécifiques. 1. Introduction à ECharts ECharts est une bibliothèque de visualisation de données basée sur JavaScript et Canvas open source par Baidu, avec des graphiques riches.

Comment utiliser vue et Element-plus pour exporter et imprimer des données Comment utiliser vue et Element-plus pour exporter et imprimer des données Jul 18, 2023 am 09:13 AM

Comment utiliser Vue et ElementPlus pour implémenter des fonctions d'exportation et d'impression de données. Ces dernières années, avec le développement rapide du développement front-end, de plus en plus d'applications Web doivent fournir des fonctions d'exportation et d'impression de données pour répondre aux divers besoins des utilisateurs en matière d'utilisation des données. . En tant que framework JavaScript populaire, Vue peut facilement implémenter des fonctions d'exportation et d'impression de données lorsqu'il est utilisé avec la bibliothèque de composants ElementPlus. Cet article présentera une exportation de données et

Comment utiliser PHP pour implémenter les fonctions d'importation et d'exportation de données Excel Comment utiliser PHP pour implémenter les fonctions d'importation et d'exportation de données Excel Sep 06, 2023 am 10:06 AM

Comment utiliser PHP pour implémenter les fonctions d'importation et d'exportation de données Excel. L'importation et l'exportation de fichiers Excel sont l'un des besoins courants en développement Web. En utilisant le langage PHP, nous pouvons facilement implémenter cette fonction. Dans cet article, nous présenterons comment utiliser PHP et la bibliothèque PHPExcel pour implémenter des fonctions d'importation et d'exportation de données dans des fichiers Excel. Tout d’abord, nous devons installer la bibliothèque PHPExcel. Vous pouvez le télécharger depuis le site officiel (https://github.com/PHPOffice/P

Traitement des formulaires PHP : exportation et impression des données du formulaire Traitement des formulaires PHP : exportation et impression des données du formulaire Aug 09, 2023 pm 03:48 PM

Traitement des formulaires PHP : exportation et impression des données des formulaires Dans le développement de sites Web, les formulaires sont un élément indispensable. Lorsqu'un formulaire sur le site Web est rempli et soumis par l'utilisateur, le développeur doit traiter les données du formulaire. Cet article explique comment utiliser PHP pour traiter les données d'un formulaire et montre comment exporter les données vers un fichier Excel et les imprimer. 1. Soumission du formulaire et traitement de base Tout d'abord, vous devez créer un formulaire HTML que les utilisateurs pourront remplir et soumettre des données. Disons que nous avons un simple formulaire de commentaires avec le nom, l'adresse e-mail et les commentaires. HTM

Comment utiliser Vue et Element-UI pour implémenter des fonctions d'importation et d'exportation de données Comment utiliser Vue et Element-UI pour implémenter des fonctions d'importation et d'exportation de données Jul 22, 2023 pm 01:25 PM

Comment utiliser Vue et Element-UI pour implémenter des fonctions d'importation et d'exportation de données Ces dernières années, avec le développement d'applications Web, les fonctions d'importation et d'exportation de données sont devenues de plus en plus importantes dans de nombreux projets. Fournir aux utilisateurs des fonctions pratiques d'importation et d'exportation de données peut non seulement améliorer l'expérience utilisateur, mais également améliorer l'efficacité globale du système. Cet article expliquera comment utiliser Vue et Element-UI pour implémenter des fonctions d'importation et d'exportation de données et joindra des exemples de code correspondants. 1. Travail de préparation Tout d'abord, nous devons introduire Vu dans le projet

La combinaison parfaite de Vue et Excel : comment réaliser une exportation par lots de données La combinaison parfaite de Vue et Excel : comment réaliser une exportation par lots de données Jul 21, 2023 pm 12:13 PM

La combinaison parfaite de Vue et Excel : comment implémenter l'exportation par lots de données Dans de nombreux développements front-end, l'exportation de données vers Excel est une exigence courante. En tant que framework JavaScript populaire, Vue fournit de nombreux outils et méthodes pratiques pour réaliser cette fonction. Cet article expliquera comment utiliser les bibliothèques Vue et Excel.js pour implémenter la fonction d'exportation par lots de données. Tout d’abord, nous devons installer la bibliothèque Excel.js. Il peut être installé à l'aide du gestionnaire de packages npm : npminstall

Golang Practical Combat : partage de conseils de mise en œuvre pour la fonction d'exportation de données Golang Practical Combat : partage de conseils de mise en œuvre pour la fonction d'exportation de données Feb 29, 2024 am 09:00 AM

La fonction d'exportation de données est une exigence très courante dans le développement réel, en particulier dans des scénarios tels que les systèmes de gestion back-end ou l'exportation de rapports de données. Cet article prendra le langage Golang comme exemple pour partager les compétences d'implémentation de la fonction d'exportation de données et donnera des exemples de code spécifiques. 1. Préparation de l'environnement Avant de commencer, assurez-vous d'avoir installé l'environnement Golang et de connaître la syntaxe et les opérations de base de Golang. De plus, afin d'implémenter la fonction d'exportation de données, vous devrez peut-être utiliser une bibliothèque tierce, telle que github.com/360EntSec.

Explication détaillée de l'utilisation de Golang pour implémenter la fonction d'exportation de données Explication détaillée de l'utilisation de Golang pour implémenter la fonction d'exportation de données Feb 28, 2024 pm 01:42 PM

Titre : Explication détaillée de la fonction d'exportation de données à l'aide de Golang Avec l'amélioration de l'informatisation, de nombreuses entreprises et organisations doivent exporter les données stockées dans des bases de données dans différents formats pour l'analyse des données, la génération de rapports et à d'autres fins. Cet article expliquera comment utiliser le langage de programmation Golang pour implémenter la fonction d'exportation de données, y compris les étapes détaillées pour se connecter à la base de données, interroger les données et exporter les données vers des fichiers, et fournira des exemples de code spécifiques. Pour nous connecter à la base de données, nous devons d'abord utiliser le pilote de base de données fourni dans Golang, tel que da

See all articles