2016-04-28 8 views
1

HTMLフォームの内容をXMLファイルに出力するためにPHPでforループを設定する際に問題があります。それはforループなしでは動作しますが、forループでは動作しません。何か案は?私の髪を引き裂く!PHPのループを使ってxmlに出力する値

ありがとうございます。

for ($i=1; $i <50; $i++) 
{ 
    (...) 
    $xml->Slot = ""; 
    $xml->Slot->addChild('Name', $name); 
} 

このところで、各反復で前<Slot>ノードを上書き:あなたはこの構文を使用

//PHP Form 

<?php 
if (isset($_POST['lsr-submit'])) 
{ 
} 
$str = '<?xml version="1.0" encoding="UTF-8"?><entrys></entrys>'; 
$xml = simplexml_load_string($str); 
$i=1; 
for ($i=1; $i <50; $i++) 
{ 
    $name = $_POST['Name_'.$i]; 
    $time = $_POST['Time_'.$i]; 
    $duration = $_POST['Duration_'.$i]; 
    $name = htmlentities($name, ENT_COMPAT, 'UTF-8', false); 
    $time = htmlentities($time, ENT_COMPAT, 'UTF-8', false); 
    $duration = htmlentities($duration, ENT_COMPAT, 'UTF-8', false); 
    $xml->Slot = ""; 
    $xml->Slot->addChild('Name', $name); 
    $xml->Slot->addChild('Time', $time); 
    $xml->Slot->addChild('Duration', $duration); 
} 
$doc = new DOMDocument('1.0'); 
$doc->formatOutput = true; 
$doc->preserveWhiteSpace = false; 
$doc->loadXML($xml->asXML(), LIBXML_NOBLANKS); 
$doc->save('../scSHARE/editor.xml'); 
print "<meta http-equiv=\"refresh\"  content=\"0;URL=return.php\">"; 
?> 

//HTML Form 

<?php 
$xml=simplexml_load_file("../scSHARE/editor.xml"); 
$xml_array = (array) $xml; 
$chunks=array_chunk($xml_array["Slot"], 7); 
$i=1; 
$l=1; 
foreach($chunks as $bank) { 
    ?> 
    <form name="form1" method="post" action="form.php"> 
    <div class="menu-toggle bank_<?php echo $i; ?>" style="display:none;"> 
     <?php 
     foreach($bank as $slot) { ?> 
     <div class="row"> 
      <div class="small-12 column"> 
      <div class="small-6 column"> 
       Slot <?php echo $l?> 
       <input type="text" name="Name_<?php echo $l;?>" value="<?php echo $slot->Name;?>"> 
      </div> 
      <div class="small-6 column"> 
       <div class="row"> 
       <div class="small-6 column"> 
        Time 
        <input type="text" name="Time_<?php echo $l;?>" value="<?php echo $slot->Time;?>"> 
       </div> 
       <div class="small-6 column"> 
        Duration 
        <input type="text" name="Duration_<?php echo $l;?>" value="<?php echo $slot->Duration;?>"> 
       </div> 
       </div> 
      </div> 
      </div> 
     </div> 
     <?php $l++;} ?> 
     <p style="text-align: center;"> 
     <input type="submit" name="submit" id="submit" class="hollow success button" value="Update"> 
     </p> 
    </div> 
    </form> 

<?php $i++; 
} 
?> 
+1

まずによってコード全体を包む考えてみましょう、あなたの ' if(isset($ _ POST ['lsr-submit'])) 'は効果がありません。コードをすべてのコードに適用する必要があります。 – fusion3k

答えて

1

for ($i=1; $i <3; $i++) 
{ 
    (...) 
    $slot = $xml->addChild("Slot"); 
    $slot->addChild('Name', $name); 
    $slot->addChild('Time', $time); 
    $slot->addChild('Duration', $duration); 
} 

サイドノート:あなたは代わりに、ルートノードに子(複数可)を追加する必要が

すべてのisset($_POST['lsr-submit'])

if (isset($_POST['lsr-submit'])) 
{ 
    $str = '<?xml version="1.0" encoding="UTF-8"?><entrys></entrys>'; 
    (...) 
    print "<meta http-equiv=\"refresh\"  content=\"0;URL=return.php\">"; 
} 
+0

ああ、それは理にかなって、今は完璧に動作しています。早速のご返事ありがとうございます。とても有難い! – user3194625

+0

ようこそ。私は助けてうれしいです。 – fusion3k

関連する問題