1


私は csv ファイルをアップロードし、それを phpでmysqlデータベースにインポートする Web ページを持っています。私は、データベース内の行を数える
ようなmysqlクエリを持っています。"SELECT * FROM wifi"次に、csv のインポートを実行し、同じクエリを作成して、「前後」の数を表示する行を再度カウントする必要があります。これでうまくいきました。

問題は、「前」の番号をカウントする最初のクエリがページの上部にあり、番号が表示されることです。送信ボタンを押すと、csv が php に送信され、データベースに挿入され、どこにリダイレクトされます"pagehere?success=1"か。 「後」の番号が表示されるはずです。ただし、ページがリロード/リダイレクトされると、「前」の番号を持つ最初のクエリが再実行され、「後」の番号が表示されます。

したがって、「前」の番号が1つあり、csvとページのリロードをインポートし、「後」の番号が2つあります。

ページのリダイレクト中に「前」の番号を保持するにはどうすればよいですか?
コードは次のようになります (私はまだ学習中です。何か問題がある可能性があります)。

(THIS CODE IS IN WEBPAGE)
//Count before import
$before = mysql_query("SELECT * FROM wifi");
$num_rows_before = mysql_num_rows($before);

(THIS CODE IS WHERE THE FORM UPLOAD FILE TO AFTER SUBMIT-BUTTON)
<?php 

if ($_FILES[csv][size] > 0) {

//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");

//loop through the csv file and insert into database
do {
    if ($data[0]) {
        mysql_query("INSERT IGNORE INTO wifi (bssid, channel, privacy, ciper, auth, power, essid, latitude, longitude, first_seen, last_seen) VALUES
            (
                '".addslashes($data[0])."',
                '".addslashes($data[1])."',
                '".addslashes($data[2])."',
                '".addslashes($data[3])."',
                '".addslashes($data[4])."',
                '".addslashes($data[5])."',
                '".addslashes($data[6])."',
                '".addslashes($data[7])."',
                '".addslashes($data[8])."',
                '".addslashes($data[9])."',
                '".addslashes($data[10])."' 
            )
        ");
    }
} while ($data = fgetcsv($handle,1000,","));

//redirect
header('Location: index.php/upload?success=1'); die;

}

//Count after import
$after = mysql_query("SELECT * FROM wifi");
$num_rows_after = mysql_num_rows($after);


//echo stats
echo "Number of rows before - ";
echo "$num_rows_before";
<br>
echo "Number of rows after - ";
echo "$num_rows_after";

//generic success notice
if (!empty($_GET[success])) { echo "<br><b>Result: Your file is imported!</b><br>"; } 

//Close connection to databse
mysql_close($connect) ; 

?>
4

2 に答える 2

5

「前」の番号を引数として 2 番目の Web ページに渡します。したがって、コードの最後の行を次のように変更します

header('Location: index.php/upload?success=1&before=' . $num_rows_before); die;
于 2013-06-18T08:36:23.827 に答える
0

リクエスト間でデータを保持するためのいくつかのオプションがあります

  1. sessionオレンジピルが提案するように使用してください。$_SESSIONPHPの場合、生のPHPを使用している場合はセッションを保存できます
  2. URL クエリ パラメータを使用します。データを処理した後、最後の値を保存するために URL のパラメーターを設定できます。yourdomain.com?previous=somepreviousdata
  3. クッキーを使用します。以前のデータを Cookie に保存することもできます。フレームワークなしで生の PHP を使用している場合は、setcookie("previous", $data);
于 2013-06-18T08:46:07.563 に答える