1

次の情報を変数に追加したいと思います(txt-via-hnテキストボックスは家番号、txt-viaは住所の詳細です)

$vias =         $_POST['txt-via-hn2'].' '.$_POST['txt-via2'] 
               .$_POST['txt-via-hn3'].' '.$_POST['txt-via3']
               .$_POST['txt-via-hn4'].' '.$_POST['txt-via4']
               .$_POST['txt-via-hn5'].' '.$_POST['txt-via5']
               .$_POST['txt-via-hn6'].' '.$_POST['txt-via6']
               .$_POST['txt-via-hn7'].' '.$_POST['txt-via7']
               .$_POST['txt-via-hn8'].' '.$_POST['txt-via8']
               .$_POST['txt-via-hn9'].' '.$_POST['txt-via9']
               .$_POST['txt-via-hn10'].' '.$_POST['txt-via10'];

私はPHPにかなり慣れていないので、これを行う方法がよくわかりませんが、基本的に、これを行うために必要な形式は次のとおりです。

$vias = <vias>
        <vh1>$_POST['txt-via-hn2']</vh1><vi1>$_POST['txt-via2']</vi1>
        <vh2>$_POST['txt-via-hn3']</vh2><vi2>$_POST['txt-via3']</vi2>
        <vh3>$_POST['txt-via-hn4']</vh3><vi3>$_POST['txt-via4']</vi3>
        <vh4>$_POST['txt-via-hn5']</vh4><vi4>$_POST['txt-via5']</vi4>
        <vh5>$_POST['txt-via-hn6']</vh5><vi5>$_POST['txt-via6']</vi5>
        <vh6>$_POST['txt-via-hn7']</vh6><vi6>$_POST['txt-via7']</vi6>
        <vh7>$_POST['txt-via-hn8']</vh7><vi7>$_POST['txt-via8']</vi7>
        <vh8>$_POST['txt-via-hn9']</vh8><vi8>$_POST['txt-via9']</vi8>
        <vh9>$_POST['txt-via-hn10']</vh9><vi9>$_POST['txt-via10']</vi9>
        </vias>

また、たとえば$_POST['txt-via-hn10']&が空の場合、変数に含まれていない$_POST['txt-via10']可能性はありますか?<vh9> and </vh9>

これに関する助けをいただければ幸いです。:)

4

4 に答える 4

1

これを行う最も簡単な方法は、行ごとに if ステートメントを使用して $_POST 変数が存在するかどうかを確認し、true の場合はそれらを連結することです。

$vias = "<vias>";
$vias .= (isset($_POST['txt-via-hn2']) && isset($_POST['txt-via2'])) ? "<vh1>" . $_POST['txt-via-hn2'] . "</vh1><vi1>" . $_POST['txt-via2'] . "</vi1>    " : null;
.
.
.
$vias .= "</vias>";

または、ここで適切に宣言された数値シーケンスを使用しているため、FOR ループを使用して反復することもできます。

$vias = "<vias>";
for ($x = 1; $x < 10; ++$x) {
    $vias .= (isset($_POST['txt-via-hn'.($x+1)]) && isset($_POST['txt-via'.($x+1)])) ? "<vh$x>" . $_POST['txt-via-hn'.($x+1)] . "</vh$x><vi$x>" . $_POST['txt-via'.($x+1)] . "</vi$x>    " : null;
}
$vias .= "</vias>";
于 2012-07-24T10:08:57.293 に答える
0

配列に値を追加するには、フォームの変更を開始する必要があります。これを行うには、フィールドの名前を「家番号[]」に変更します。

アドレス詳細フィールドについても同じようにします。

次に、結果の2つの$ _POST配列をループして、文字列のような最終的なxmlを作成します。

以下の簡単な例を作成しました。

form.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title></title>
</head>
<body>
    <form action="action.php" method="post">
        <input type="text" name="housenumber[]" id="" />
        <input type="text" name="detail[]" id="" /><br />
        <input type="text" name="housenumber[]" id="" />
        <input type="text" name="detail[]" id="" /><br />
        <input type="text" name="housenumber[]" id="" />
        <input type="text" name="detail[]" id="" /><br />
        <input type="text" name="housenumber[]" id="" />
        <input type="text" name="detail[]" id="" /><br />
        <input type="text" name="housenumber[]" id="" />
        <input type="text" name="detail[]" id="" /><br />
        <input type="submit" value="Submit" />
    </form>
</body>
</html>

action.php:

<?php
$total_housenumbers = count($_POST['housenumber']);
$vias = '';

for ($i = 0; $i < $total_housenumbers; $i++) {
    if ($_POST['housenumber'][$i] != '' && $_POST['detail'][$i] != '') {
        $vias .= $_POST['housenumber'][$i]. ' ' .$_POST['detail'][$i]. '<br />';
    }
}

echo $vias;
?>
于 2012-07-24T09:59:28.747 に答える
0

変数が存在するかどうかを確認するには、isset()関数を使用して変数を確認し、これに基づいて何を出力するかを決定できます。条件式を使用すると、次のようになります。

(isset($_POST['txt-via-hn10']) && isset($_POST['txt-via10']))
?'<vh9>'.$_POST['txt-via-hn10'].'</vh9><vi9>'.$_POST['txt-via10'].'</vi9>'
: ''

変数が類似しているために生成しようとしている文字列については、forループを使用できます。その中に上記で記述した条件を使用して、変数の存在を確認し、$vias初期化した文字列に行を追加します。ループの外側:

$number_of_field = count($_POST);
$vias = '<vias>';
for($i = 1; $i<=$number_of_field; $i++){
 $vias .=(isset($_POST['txt-via-hn'.$i]) && isset($_POST['txt-via'.$i]))
?'<vh'.($i-1).'>'.$_POST['txt-via-hn'.$i].'</vh'.($i-1).'><vi'.($i-1).'>'.$_POST['txt-via'.$i].'</vi'.($i-1).'>'
: ''
}
$vias .= '</vias>';
于 2012-07-24T09:59:38.650 に答える
0

php isset() を使用して、変数が設定されているかどうかをテストします。次のようにコードを使用します。

$vias = "<vias>";

if(isset($_POST['txt-via-hn2'])
{
$vas=$vas."<vh1>".$_POST['txt-via-hn2']."</vh1>";       
}

if(isset($_POST['txt-via2'])
{
$vas=$vas."<vi1>".$_POST['txt-via2']."</vi1>";      
}

... and continue as you need..



and at last 
$vias=$vias." </vias>"; 
于 2012-07-24T10:03:03.563 に答える