選択ボックスと、以前に選択されたデータベースからの値を含むフォームがあります。はい、フォーム内で最後に選択されたものとして表示されるように選択されたこの値が必要です。私はphp domを使ってみましたが、どこにも行きません。
したがって、ここにhtmlがあります:
<select name="conf_1">
<option value="Y">Yes</option>
<option value="N">No</option>
</select>
<select name="conf_2">
<option value="text">text</option>
<option value="alsotext">alsotext</option>
</select>
そして今、次のように配列に格納されている選択したオプションを表示したいと思います:
$confs = array([1] => N, [2] => text );
いくつかのコードを実行します。
loop{
<option value="$confs[$i]">$confs[$i]</option> has to be appended to <select name="conf_$i">
}
今、私はこれを行う方法を見つけることができません。私はphp domを使用してみましたが、名前属性で要素を選択してからトラフをループする方法がわからないため、実際のphpの例を作成できません。どこから始めたらいいのかわからないだけです。
誰かがこれを行う方法を持っている場合は、私に教えてください!?
@Markus I.に触発されたこのコードでそれを行いました:
$dom = new DOMDocument();
$dom->loadHTML($form);
$xPath = new DOMXPath($dom);
foreach ($dom->getElementsByTagName('select') as $select) {
$name = $select->getAttribute('name');
$name = str_replace('conf_', '', $name);
foreach($xPath->query('./option', $select) as $option) {
if ($option->getAttribute('value') == $confs[$name]) {
$option->setAttribute('selected', 'selected');
}
}
}
$form = $dom->saveHTML($dom);
echo $form;