목차
형식을 결정하세요
가격 인상
내보내기 파일 만들기
摘要
백엔드 개발 PHP 튜토리얼 데이터 내보내기: 맞춤형 데이터베이스 테이블

데이터 내보내기: 맞춤형 데이터베이스 테이블

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="데이터 내보내기: 맞춤형 데이터베이스 테이블"></p> <p>이 시리즈의 첫 번째 기사에서 언급했듯이 사용자 정의 데이터베이스 테이블의 주요 문제점 중 하나는 기존 가져오기 및 내보내기 핸들러에서 처리되지 않는다는 것입니다. 이 기사는 이 문제를 해결하는 것을 목표로 하지만 현재 완전히 만족스러운 해결책은 없다는 점에 유의해야 합니다. </p> <p>두 가지 시나리오를 고려해 보겠습니다. </p> <ol> <li>사용자 정의 테이블은 기본 WordPress 테이블을 참조합니다</li> <li>사용자 정의 테이블은 기본 테이블과 완전히 독립적입니다</li> </ol> <p>"최악의 시나리오"는 첫 번째 시나리오입니다. 사용자 활동 로그를 저장하는 사용자 정의 테이블을 예로 들어 보겠습니다. 이는 사용자 ID, 개체 ID 및 개체 유형을 참조하며, 모두 기본 WordPress 테이블에 저장된 데이터를 참조합니다. 이제 누군가 WordPress 웹사이트의 모든 데이터를 두 번째 웹사이트로 가져오려고 한다고 상상해 보세요. 예를 들어, 게시물을 가져올 때 해당 ID를 가진 게시물이 두 번째 사이트에 이미 존재할 수 있으므로 WordPress에서 새 ID를 할당해야 하는 것이 전적으로 가능합니다. </p> <p>이 경우 해당 변경 사항을 추적하고 표에 참조된 ID를 업데이트해야 합니다. 이것 자체는 그리 어렵지 않습니다. <em>안타깝게도</em> 다른 WordPress 사이트에서 데이터 가져오기를 처리하기 위한 WordPress Importer 플러그인에는 이를 수행하는 데 필요한 후크가 부족합니다. 이 의견에서 제안한 대로 잠재적인 해결 방법은 데이터를 메타데이터에도 저장하는 것입니다. 불행하게도 이로 인해 데이터가 중복되고 데이터베이스 정규화를 위반하게 되므로 일반적으로 좋은 생각이 아닙니다. 결국 이는 몇 가지 사용 사례에서만 실제로 실현 가능합니다. </p> <p>두 번째 경우는 이러한 복잡성을 피하지만 여전히 사용자 정의 가져오기 및 내보내기 핸들러가 필요합니다. 다음 두 기사에서 이 상황을 설명하겠습니다. 그러나 이 시리즈의 나머지 부분과 일관성을 유지하기 위해 사례 (1)의 예이더라도 활동 로그 테이블을 고수하겠습니다. </p> <hr> <h2 id="형식을-결정하세요">형식을 결정하세요</h2> <p>먼저 내보낸 파일의 형식을 결정해야 합니다. 가장 좋은 형식은 데이터의 성격(또는 "구조")과 데이터 사용 방법에 따라 다릅니다. 제 생각에는 XML이 일대다 관계를 처리할 수 있기 때문에 일반적으로 더 좋습니다. 그러나 데이터가 표 형식인 경우 특히 스프레드시트 애플리케이션과의 통합이 쉽기 때문에 CSV가 더 선호될 수 있습니다. 이 예에서는 XML을 사용합니다. </p> <hr> <h2 id="가격-인상">가격 인상</h2> <p>다음 단계는 사용자가 로그 테이블에서 데이터를 내보낼 수 있도록 관리 페이지를 만드는 것입니다. 도구 메뉴 항목 아래에 페이지를 추가하는 클래스를 생성하겠습니다. 페이지에는 사용자에게 내보내기 파일을 다운로드하라는 메시지를 표시하는 버튼만 포함되어 있습니다. 또한 이 클래스는 양식 제출을 수신하고 파일 다운로드를 트리거하는 핸들러를 추가합니다. </p> <p>먼저 클래스의 구조를 살펴본 다음 메서드의 세부정보를 입력해 보겠습니다. </p> 으아아아 <p><code>WPTuts_Log_Export_Admin_Page::load()</code> 클래스를 초기화하고 적절한 작업에 콜백을 연결합니다. </p> <ul> <li> <code>add_submenu</code> – 도구 메뉴 아래에 페이지를 추가하는 메서드입니다. </li> <li> <code>maybe_download</code> – 이 방법은 다운로드 요청이 제출되었는지 확인하기 위해 청취합니다. 권한과 nonce도 확인합니다. </li> </ul> <p>헤더를 직접 설정하므로 내보내기 리스너는 헤더가 전송되기 전에 일찍 호출되어야 합니다. 여기에 더 적합한 <code>init</code> 上,但由于我们只允许在管理中下载导出文件,因此 <code>admin_init</code>에 연결할 수 있습니다. </p> <p>메뉴에 페이지를 추가하는 것은 쉽습니다. 도구 아래에 페이지를 추가하려면 <code>add_management_page()</code>를 호출하면 됩니다. </p> 으아아아 <p>여기서 <code>$hook_suffix</code>는 다양한 화면 관련 후크에 사용되는 접미사이며 여기에서 논의됩니다. 여기서는 사용하지 않습니다. 하지만 사용하는 경우 해당 값을 하드코딩하는 것보다 변수에 저장하는 것이 좋습니다. </p> <p> 위에서 메소드 <code>display()</code>를 페이지의 콜백으로 설정하고 다음으로 정의합니다. </p> 으아아아 <p>마지막으로 위 양식이 제출되는 시점을 모니터링하고 내보내기 파일 다운로드를 트리거하려고 합니다. </p> 으아아아 <p>남은 것은 .xml 파일을 생성하고 반환하는 함수 <code>wptuts_export_logs()</code>를 만드는 것입니다. </p> <hr> <h2 id="내보내기-파일-만들기">내보내기 파일 만들기</h2> <p>함수에서 가장 먼저 해야 할 일은 로그를 검색하는 것입니다. 있는 경우 적절한 헤더를 설정하고 XML 형식으로 인쇄해야 합니다. 사용자가 XML 파일을 다운로드하기를 원하므로 Content-Type을 <code>text/xml</code>,将 Content-Description 设置为 <code>File Transfer</code>로 설정했습니다. 또한 다운로드한 파일에 적합한 이름을 생성합니다. 마지막으로 몇 가지 설명을 추가하겠습니다. 이는 완전히 선택 사항이지만 사용자에게 다운로드한 파일로 무엇을 해야 하는지 안내하는 데 도움이 됩니다. </p> <p>이 시리즈의 이전 부분에서 테이블에 대한 API를 만들었으므로 내보내기 핸들러는 데이터베이스를 직접 건드릴 필요도 없고 정리할 필요도 없습니다 <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">로그인 후 복사</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">로그인 후 복사</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">로그인 후 복사</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">로그인 후 복사</div></div> <p>导航到我们的导出页面,单击“下载活动日志”应提示下载 XML 文件。</p> <hr> <h2 id="摘要">摘要</h2> <p>在本教程中,我们研究了从自定义表中导出数据。不幸的是,当数据引用本机 WordPress 表时,这充其量是有问题的。上述方法仅适用于数据无法做到这一点的情况。使用的示例(我们的活动日志)显然不属于此类,只是为了与本系列的其余部分保持一致而使用。</p> <p>当数据<em>确实</em>引用本机表时,显然有必要将其与本机表一起导入,并在此过程中跟踪导入期间发生的 ID 任何更改。目前,现有的导入和导出处理程序无法实现这一点,因此唯一可行的选择是创建自己的处理程序。在自定义数据仅引用单个帖子类型的简单情况下,可以设计导入和导出处理程序来处理该帖子类型以及自定义数据,并通知用户不要使用该帖子类型的本机导出器。 </p> <p>在本系列的下一部分中,我们将为导出的 .xml 文件创建一个简单的导入处理程序。</p>

위 내용은 데이터 내보내기: 맞춤형 데이터베이스 테이블의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

ECharts 및 Java 인터페이스: 통계 차트 데이터를 내보내고 공유하는 방법 ECharts 및 Java 인터페이스: 통계 차트 데이터를 내보내고 공유하는 방법 Dec 17, 2023 am 08:44 AM

ECharts는 데이터 시각화 및 대형 화면 표시에 사용할 수 있는 강력하고 유연하며 사용자 정의가 가능한 오픈 소스 차트 라이브러리입니다. 빅데이터 시대를 맞아 통계차트의 데이터 내보내기 및 공유 기능이 더욱 중요해지고 있습니다. 이 기사에서는 Java 인터페이스를 통해 ECharts의 통계 차트 데이터 내보내기 및 공유 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. ECharts 소개 ECharts는 Baidu에서 오픈 소스로 제공하는 JavaScript 및 Canvas 기반의 데이터 시각화 라이브러리로 풍부한 차트를 제공합니다.

vue 및 Element-plus를 사용하여 데이터를 내보내고 인쇄하는 방법 vue 및 Element-plus를 사용하여 데이터를 내보내고 인쇄하는 방법 Jul 18, 2023 am 09:13 AM

Vue 및 ElementPlus를 사용하여 데이터 내보내기 및 인쇄 기능을 구현하는 방법 최근 프런트 엔드 개발의 급속한 발전으로 인해 점점 더 많은 웹 애플리케이션에서 데이터 사용에 대한 사용자의 다양한 요구를 충족시키기 위해 데이터 내보내기 및 인쇄 기능을 제공해야 합니다. . 널리 사용되는 JavaScript 프레임워크인 Vue는 ElementPlus 구성 요소 라이브러리와 함께 사용하면 데이터 내보내기 및 인쇄 기능을 쉽게 구현할 수 있습니다. 이 문서에서는 데이터 내보내기 및

PHP를 사용하여 데이터 가져오기 및 Excel 기능 내보내기를 구현하는 방법 PHP를 사용하여 데이터 가져오기 및 Excel 기능 내보내기를 구현하는 방법 Sep 06, 2023 am 10:06 AM

PHP를 사용하여 데이터 가져오기 및 내보내기 Excel 기능을 구현하는 방법 Excel 파일 가져오기 및 내보내기는 웹 개발의 일반적인 요구 사항 중 하나입니다. PHP 언어를 사용하면 이 기능을 쉽게 구현할 수 있습니다. 이 기사에서는 PHP와 PHPExcel 라이브러리를 사용하여 데이터 가져오기 및 Excel 파일로 내보내기 기능을 구현하는 방법을 소개합니다. 먼저 PHPExcel 라이브러리를 설치해야 합니다. 공식 홈페이지(https://github.com/PHPOffice/P)에서 다운로드 받으실 수 있습니다.

PHP 양식 처리: 양식 데이터 내보내기 및 인쇄 PHP 양식 처리: 양식 데이터 내보내기 및 인쇄 Aug 09, 2023 pm 03:48 PM

PHP 양식 처리: 양식 데이터 내보내기 및 인쇄 웹사이트 개발에서 양식은 없어서는 안 될 부분입니다. 사용자가 웹사이트의 양식을 작성하고 제출하면 개발자는 양식 데이터를 처리해야 합니다. 이 기사에서는 PHP를 사용하여 양식 데이터를 처리하는 방법을 소개하고 데이터를 Excel 파일로 내보내고 인쇄하는 방법을 보여줍니다. 1. 양식 제출 및 기본 처리 먼저 사용자가 데이터를 작성하고 제출할 수 있는 HTML 양식을 만들어야 합니다. 이름, 이메일, 댓글이 포함된 간단한 피드백 양식이 있다고 가정해 보겠습니다. HTM

Vue 및 Element-UI를 사용하여 데이터 가져오기 및 내보내기 기능을 구현하는 방법 Vue 및 Element-UI를 사용하여 데이터 가져오기 및 내보내기 기능을 구현하는 방법 Jul 22, 2023 pm 01:25 PM

Vue 및 Element-UI를 사용하여 데이터 가져오기 및 내보내기 기능을 구현하는 방법 최근 몇 년 동안 웹 애플리케이션이 개발되면서 많은 프로젝트에서 데이터 가져오기 및 내보내기 기능이 점점 더 중요해지고 있습니다. 사용자에게 편리한 데이터 가져오기 및 내보내기 기능을 제공하면 사용자 경험을 향상시킬 뿐만 아니라 시스템의 전반적인 효율성도 향상시킬 수 있습니다. 이 기사에서는 Vue 및 Element-UI를 사용하여 데이터 가져오기 및 내보내기 기능을 구현하고 해당 코드 예제를 첨부하는 방법을 소개합니다. 1. 준비 작업 먼저 프로젝트에 Vu를 도입해야 합니다.

Vue와 Excel의 완벽한 조합: 데이터를 일괄적으로 내보내는 방법 Vue와 Excel의 완벽한 조합: 데이터를 일괄적으로 내보내는 방법 Jul 21, 2023 pm 12:13 PM

Vue와 Excel의 완벽한 조합: 데이터 일괄 내보내기를 구현하는 방법 많은 프런트 엔드 개발에서 데이터를 Excel로 내보내는 것은 일반적인 요구 사항입니다. 널리 사용되는 JavaScript 프레임워크인 Vue는 이 기능을 달성하기 위한 많은 편리한 도구와 방법을 제공합니다. 이 기사에서는 Vue 및 Excel.js 라이브러리를 사용하여 데이터 일괄 내보내기 기능을 구현하는 방법을 소개합니다. 먼저 Excel.js 라이브러리를 설치해야 합니다. npm 패키지 관리자를 사용하여 설치할 수 있습니다: npminstall

Golang 실전: 데이터 내보내기 기능 구현 팁 공유 Golang 실전: 데이터 내보내기 기능 구현 팁 공유 Feb 29, 2024 am 09:00 AM

데이터 내보내기 기능은 실제 개발, 특히 백엔드 관리 시스템이나 데이터 보고서 내보내기와 같은 시나리오에서 매우 일반적인 요구 사항입니다. 이 기사에서는 Golang 언어를 예로 들어 데이터 내보내기 기능의 구현 기술을 공유하고 구체적인 코드 예제를 제공합니다. 1. 환경 준비 시작하기 전에 Golang 환경이 설치되어 있는지 확인하고 Golang의 기본 구문 및 작업에 익숙해야 합니다. 또한 데이터 내보내기 기능을 구현하려면 github.com/360EntSec와 같은 타사 라이브러리를 사용해야 할 수도 있습니다.

Golang을 사용하여 데이터 내보내기 기능을 구현하는 방법에 대한 자세한 설명 Golang을 사용하여 데이터 내보내기 기능을 구현하는 방법에 대한 자세한 설명 Feb 28, 2024 pm 01:42 PM

제목: Golang을 이용한 데이터 내보내기 기능에 대한 자세한 설명 정보화가 진행됨에 따라 많은 기업과 조직에서는 데이터 분석, 보고서 생성 및 기타 목적을 위해 데이터베이스에 저장된 데이터를 다른 형식으로 내보내야 합니다. 이 기사에서는 Golang 프로그래밍 언어를 사용하여 데이터베이스 연결, 데이터 쿼리 및 데이터를 파일로 내보내기 위한 세부 단계를 포함하여 데이터 내보내기 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 데이터베이스에 연결하려면 da와 같은 Golang에서 제공하는 데이터베이스 드라이버를 사용해야 합니다.

See all articles