0

配列を保存しようとしているので、次のコードがあります。

<?php

$sql = "SELECT * FROM scenarii where code_s='".mysql_real_escape_string($_POST['code_s'])."'";
$qry = mysql_query($sql) or die(__LINE__.mysql_error().$sql);


$i = -1; // index des enregistrements
?>
<table cellpadding="5" cellspacing="5">
   <tr>
      <td><strong>CODE SCENARIO</strong></td>
      <td><strong>LIBELLE</strong></td>
      <td><strong>ACTION</strong></td>
      <td><strong>DESCRIPTION</strong></td>
      <td><strong>DATE</strong></td>
   </tr>
   <form action="<?php echo (isset($_POST['go'])) ? 'go.php' : '#'; ?>" method="post">
      <input type="hidden" name="liasse" value="<?php echo $_POST['liasse']; ?>"/>
      <input type="hidden" name="n_doss" value="<?php echo $_POST['n_doss']; ?>"/>
      <input type="hidden" name="qualite" value="<?php echo $_POST['qualite']; ?>"/>
      <?php while($row = mysql_fetch_assoc($qry)): ?>
      <tr>
         <td><input name="data[<?php echo ++$i; ?>][code_s]" type="text" value="<?php echo $row['code_s'];?>" size="10"></td>
         <td><input name="data[<?php echo $i; ?>][titre]" type="text" value="<?php echo $row['titre']; ?>" size="45"></td>
         <td><input name="data[<?php echo $i; ?>][action]" type="text" value="<?php echo $row['action']; ?>" size="15"></td>
         <td><input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['libelle']; ?>" size="55"></td>
         <td><input type="text" name="data[<?php echo $i; ?>][date]" value="<?php echo $get_date($row['jour']) ; ?>" size="12"></td>
      </tr>
      <?php endwhile; ?>

そしてこれを保存するために私はこのコードを持っています:

if (isset($_POST['liasse']))  {
$value = $_POST['data'] ; 

foreach($value as $key => $array)
{

        $sql = 'INSERT INTO agenda SET
        liasse = "'.mysql_real_escape_string($_POST['liasse']).'",
        code_s = "'.mysql_real_escape_string($array['code_s']).'",
        date_action = "'.date('Y-m-d',strtotime($array['date'])).'", 
        libelle = "'.mysql_real_escape_string($array['titre']).'",
        action = "'.mysql_real_escape_string($array['action']).'",
        description = "'.mysql_real_escape_string($array['libelle']).'",
        n_doss = "'.mysql_real_escape_string($_POST['n_doss']).'",
        qualite = "'.mysql_real_escape_string($_POST['qualite']).'"
        ';
mysql_query($sql) or die(__LINE__.mysql_error().$sql);

}

しかし、私は本当に迷っています、

実際、私はそのためのフォームを使用していますが、今はこのデータをすべて送信したいと思いますが、フォームを使用せずに、最初のデータを保存したいときに直接送信します。

そのdata[][code_s]のような変数を呼び出すことができないため、私は迷子になっています。

だから私はこれを保存する方法がわかりません。バックグラウンドで保存し、何かが保存されたことを表示したくない。

私の最大限の敬意をすべて受け取る

敬具、

SP。

4

1 に答える 1

1

下のコード ブロックのコードを関数にラップし、値の配列を引数として渡します。

function storeValues ($data) {
    foreach($data as $key => $val) 
    {
        $catalog=sprintf("%s='%s'",$key,$val);
        $sql = sprintf('INSERT INTO agenda SET %s', implode(',',$catalog));
        mysql_query($sql) or die(__LINE__.mysql_error().$sql);
    } // foreach 
} // function storeValues

値を保存する場合は、この関数を呼び出します。したがって、データベースからそれらを取得した後。取得する行ごとに呼び出して、次のように値を渡します。

storeValues ($row);

これにより、一度に 1 行の値が格納されます。明らかに、これは複数の挿入を使用するように最適化できます。でも、一歩一歩踏み出そう…

于 2012-10-04T13:24:51.357 に答える