我构建了一些代码来将file(COPY_IF_DIFFERENT)
文件导入csv
数据库,但遇到了表单重新提交问题(刷新页面,再次上传文件)。我正在尝试使用MySQL
模式来解决此问题,但在post/redirect/get
中,由于重定向正常工作,它会变得棘手。
WordPress
我尝试了一些方法来重新指导,但还没有找到办法让事情发挥作用:
<?php
/***update csv file ***/
if(isset($_POST["submit"])) //if submit button is pressed
{
if($_FILES['file']['name']) //if file exists
{
$filename=explode('.', $_FILES['file']['name']);//seperate file into filename and csv
if($filename[1]=='csv'){ //if file format is csv
$handle= fopen($_FILES['file']['tmp_name'], "r");
while($data=fgetcsv($handle)){
$sql="INSERT INTO val_in (xxxx,xxxx,xxxx,xxxx,xxxx,xxxx) VALUES(?,?,?,?,?,?)";
//prepared statement
$stmt=mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt,$sql)){
echo "SQL prepared statement error";
}
else{
echo gettype($data[0]);
mysqli_stmt_bind_param($stmt,"issddi",$data[0],$data[1],$data[2],$data[3],$data[4],$data[5]);
mysqli_stmt_execute($stmt);
}
}
fclose($handle);
print "import done";
}
else{
echo "Incorrect file format. Please select a CSV file. ";
}
}
}
<form method='POST' enctype='multipart/form-data'>
<div align="center">
<label>Import CSV File:</label>
<input type="file" name="file" id="csvFile1" />
<input type="submit" name="submit" value="Import" class="btn btn-info" />
</div>
</form>
这些都不起作用。
此外,如果我最后放入wp_redirect( site_url(),303 );
header("Location: http://localhost:8888/dm_toolkit/wordpress/validation-data-input/?file=val_in_test.csv&submit=Import");
header("Location: xxx.php");
wp_redirect(get_permalink($post->ID) . '?success=true');
或"exit"
,则会转到不包含任何现有内容的网页。
答案 0 :(得分:1)
您可以将操作附加到模板重定向挂钩。在那里,您可以检查您的帖子请求是否已设置并执行您的游行,然后进行重定向。
add_action('template_redirect', 'handle_post_csv_request');
function handle_post_csv_request() {
if (isset($_POST["submit"])) { //if submit button is pressed
if ($_FILES['file']['name']) { //if file exists
//your code goes here
wp_redirect(site_url(), 303);
}
}
}