-1

$_POST を使用して、フォーム ページから MySQL クエリを取得しています。前のページでは、データベースから ID のリストを送信しています。ただし、implode を使用すると、文字列がエコーされます。

2210222022362244

Implode 関数を使用していますが、次のようにします。

$variable = implode(',' ,$_POST['job_ids']);
echo $variable

バリエーションも試しました:

$variable = implode(',' ,(array)$_POST['job_ids']);
echo $variable

ただし、それは同じ文字列をエコーし​​ます。「get」も試してみたところ、次の URL 文字列が生成され、同じものが生成されました: 「2210222022362244」文字列:

testing.php?job_ids%5B%5D=%0D%0A%09%09%09%09%09++%09%09%0D%0A%09%09%09%09%09++%09%092210222022362244 %09%09%09%09%09++%09%09%0D%0A%09%09%09%09%09++%09%09&supervisorid=58

私が探している出力は次のとおりです。

2210,2220,2236,2244

これらの値を変数に保存し、MySQL 更新クエリで使用したいと考えています。これは、前のページから送信している配列に問題があることを意味していると思います。そのページで使用しているコードは次のとおりです。

<form action="testing.php" method="post">
<input type="hidden" name="job_ids[]" value="

<?php
$senditbaby=0;

while ($senditbaby < $num)                      
{
$senditbabyID=mysql_result($result,$senditbaby,"job_id");                       
echo $senditbabyID;                     
$senditbaby++;
}

?>
">

<div class="modal-footer">
<input type="submit" class="btn btn-primary" value="Approve all tickets">
</div></form>

あなたの助けは大歓迎です!

4

5 に答える 5

1

は 1 つのjob_ids[]入力のみなので、 には 1 つの値しかありません$_POST['job_ids']。したがって、内破するものは何もありません。値を作成するループは、job_ids[]値を次々にエコーアウトするだけで、決して分割しません。

于 2013-01-24T17:24:02.420 に答える
1

これを試して:

$variable = implode(',', str_split($_POST['job_ids'], 4));
echo $variable
于 2013-01-24T17:26:16.657 に答える
1

あなたは単純な間違いに対して本当に長い質問を書いています: コンマを出力し忘れたので、コンマがありません。

ただし、私のアドバイスは次のとおりです。最初にデータを収集してから、出力に注意してください。

function get_job_ids_array($num, $result)
{
    $ids = array();
    $senditbaby = 0;

    while ($senditbaby < $num)                      
    {
         $senditbabyID = mysql_result($result, $senditbaby, "job_id");
         $ids[] = $senditbabyID;
         $senditbaby++;
    }

    return $ids;
}

コンマ区切りのリストを取得するには、次のようにします。

echo implode(', ', get_job_ids_array($num, $result));
于 2013-01-24T17:28:44.417 に答える
0

GROUP_CONCATを使用して、カンマ区切りの job_id を単一のクエリで取得できます。この方法は、内破や複数のクエリを回避するのに役立ちます。

于 2013-01-24T17:49:36.443 に答える
0

入力を手動でデコードすると、区切り文字なしで実際に「2210222022362244」になります。そのため、入力で数字が互いに離れていることを伝える方法はありません。すべての数字が 4 桁の長さの場合、その事実に対応する特定のコードを記述する必要があります。それは PHP が推測できるものではないからです。

さらに、php は $_POST['job_ids'] を文字列として扱います。最初にそれを配列に分解する必要があります。これは単純に、配列を HTTP 経由で直接転送するという概念がないためです。

おそらく例の単なるエラー: $_POST を使用していますが、例の URL は GET を使用しているため、実際には $_GET['job_ids'] が必要になります。

于 2013-01-24T17:24:50.903 に答える