1

私はphpに慣れていないので、以前に尋ねた基本的なことを尋ねている場合はご容赦ください。私はこれを数日間グーグルで検索しました。以前の回答のほとんどを見つけたこのフォーラムですが、この問題について何も見つからないので、質問する必要があります。これは私の最初の質問です。

// this array is coming from MySQL db as a result. It's a list of user's friends and it could contain dozens or hundreds of friends. Now he wants to put them in different groups.

$array = array(
       array("John", "Doe", "1"),
       array("Peter", "Citizen", "2")
       ...
      );


// a page is created with the result. Each record has a checkbox that the user can select.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<?php

foreach($array as $item){
$nItem = $item;

?>

<input type="text" name="fname" value="<?php if(isset($nItem)){echo $nItem[0];} ?>" readonly="readonly" />
<input type="text" name="lname" value="<?php if(isset($nItem)){echo $nItem[1];} ?>" readonly="readonly" />
<input type="text" name="uid" value="<?php if(isset($nItem)){echo $nItem[2];} ?>" readonly="readonly" />
<input type="checkbox" name="val[]" value="<?php if(isset($nItem)){echo $nItem;} ?>" /> // I want to send this $nItem array as it is to the action page and read its keys and values there.
<br>

<?php
}
?>

<input type="submit" name="submit" value="Submit">
</form>

<br />

<?php

// if I tick both checkboxes and submit I get the following:

if(isset($_POST['val'])){

$val = $_POST['val'];

echo var_dump($val), '<br />'; // array(2) { [0]=> string(5) "Array" [1]=> string(5) "Array" }

echo count($val), '<br />';    // 2

print_r($val);                 // Array ( [0] => Array [1] => Array )

echo("val is {$val[0]}");      // val is Array

foreach($val as $key => $value){
    echo "Key and Value are: ".$key." ".$value, '<br />'; // Key and Value are: 0 Array
}                                                         // Key and Value are: 1 Array

}

?>

velus を読み取ることができる実際の配列ではなく、文字列「Array」を返すだけです。次のようなチェックボックスの値に個々の値を入れると-

if(isset($nItem)){echo "".$nItem[0]." ".$nItem[1]." ".$nItem[2]."";}

-- それから私は --

0 John Doe 1

――しかし、それは私が望むものではありません。アクションページに反復できる実際の配列が必要です。すでに配列なので難しくないと思っていたのですが、違いました。

誰かが私にそれを行う方法を教えてもらえますか?

よろしくお願いします。

4

1 に答える 1

0
<?php foreach($array as $item): ?>
    <input type="text" name="fname" value="<?php echo $item[0]; ?>" readonly="readonly" />
    <input type="text" name="lname" value="<?php echo $item[1]; ?>" readonly="readonly" />
    <input type="text" name="uid" value="<?php echo $item[2]; ?>" readonly="readonly" />
    <input type="checkbox" name="val" value="<?php echo htmlentities(serialize($item)); ?>" />
    <br>
<?php endforeach; ?>

送信後、配列$_POST['val']のシリアル化を解除します。この配列で何をするかに応じて、この方法は注入を考慮して使用するのにそれほど節約できません。

すべての情報を含む配列を操作する代わりに、各レコードにIDを使用することをお勧めします。「val」という名前のチェックボックスには、対応するIDの値があります。

<input type="checkbox" name="val" value="<?php echo $item['id']; ?>" />

送信後、IDに属するレコードをクエリし、返された配列を使用して処理します。

于 2013-03-09T09:04:22.087 に答える