4

さて、これが私がやりたいことです(注:私はPHPに慣れていません):

映画/シリーズなどの登録フォームがあります。入力されたフォームのデータが登録され(register.php)、MySQLデータベースに送信されます。これは正常に機能しています。ただし、次のようになります。同じレジスタファイル(register.php)に、既存のXMLファイル(data.xml)にデータを格納することも必要です。ここで重要なのは、正常に送信されたすべてのフォームが同じXMLファイル(data.xml)に保存されることです。

登録されているすべての「映画」をwhileループを介してHTMLテーブルに表示します。これにより、データベースからデータが収集されます。また、テーブルの外側のどこかに、XMLファイルのコンテンツを生成/表示するボタンを新しいタブ(?)に追加するための支援を求めています。テーブルデータはMySQLから収集されるため、右クリックしてソースを表示しないでください。これは不可能です。

これが私がこれまでに持っているものです(これは各送信をdata.xmlに保存することができますが、別の送信が行われると置き換えられます-置き換えではなく追加したいです):

まず、index.php:

<form enctype="multipart/form-data" action="core/register.php" method="post" autocomplete="true">
    <p><input type="text" name="name" placeholder="Program name" /></p>
    <p><input type="date" name="date" placeholder="Program date" /></p>
    <p><input type="time" name="time" placeholder="Program time" /></p>
    <p><input type="text" name="bline" placeholder="B-line" /></textarea></p>
    <p><textarea name="synopsis" placeholder="Program synopsis" /></textarea></p>
    <p><textarea name="leadtext" placeholder="Lead text" /></textarea></p>
    <p><input type="url" name="url" placeholder="URL" /></p>
    <p><input type="submit" value="Register" name="register" /></p>
</form>

次は、data.xml:

<?xml version="1.0" encoding="UTF-8"?>
<programs>
    <program>
        <name></name>
        <date></date>
        <start_time></start_time>
        <b-line></b-line>
        <synopsis></synopsis>
        <leadtext></leadtext>
        <url></url>
    </program>
</programs>

最後に、register.php:

require_once('db.php');

$str = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="xsl.xsl"?><programs></programs>';
$xml = simplexml_load_string($str);

$name = $_POST['name'];
$date = $_POST['date'];
$time = $_POST['time'];
$bline = $_POST['bline'];
$synopsis = $_POST['synopsis'];
$leadtext = $_POST['leadtext'];
$url = $_POST['url'];

$name = htmlentities($name, ENT_COMPAT, 'UTF-8', false);
$date = htmlentities($date, ENT_COMPAT, 'UTF-8', false);
$time = htmlentities($time, ENT_COMPAT, 'UTF-8', false);
$bline = htmlentities($bline, ENT_COMPAT, 'UTF-8', false);
$synopsis = htmlentities($synopsis, ENT_COMPAT, 'UTF-8', false);
$leadtext = htmlentities($leadtext, ENT_COMPAT, 'UTF-8', false);
$url = htmlentities($url, ENT_COMPAT, 'UTF-8', false);

$xml->program->addChild('name', $name);
$xml->program->addChild('date', $date);
$xml->program->addChild('start_time', $time);
$xml->program->addChild('b-line', $bline);
$xml->program->addChild('synopsis', $synopsis);
$xml->program->addChild('leadtext', $leadtext);
$xml->program->addChild('url', $url);

$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = true;
$doc->loadXML($xml->asXML(), LIBXML_NOBLANKS);
$doc->save('data.xml');

私は探しているものを正確に見つけることなく何時間も検索しました。また、私自身の「機能しない解決策」をたくさん試すために最善を尽くしました。また、この問題の回答に関連するコードの部分を選択しました。

4

1 に答える 1

5

次のような値をノードに割り当てて、programノードを永続的にする必要があります。

$xml->program = "";

子ノードを追加する直前にその行を追加します。

$xml->program = "";
$xml->program->addChild('name', $name);
$xml->program->addChild('date', $date);
....
于 2012-08-27T02:22:03.033 に答える