所以我有这个PHP脚本链接到我的一个客户站点上的联系表单。 PHP脚本的作用基本上是获取所有字段和值,并使用表单中给出的信息生成.txt文件。之后,脚本根据您在字段'forefternamn'
中添加的信息决定命名文件的内容。
我的问题很简单。如何在字段后命名文件,而不是用序列号命名?
我希望序列号在第一次提交时以1000开头,然后我只想继续使用1001,1002,1003,1004等。
所以文件看起来像这样:
1000.txt 1001.txt 1002.txt 1003.txt 1004.txt 等...
这是我使用的PHP脚本:
<?php
$nyckel = array(
'privatforetag',
'forefternamn',
'foretagsnamn',
'gatuadress',
'mobil',
'telefon',
'e-post',
'epost',
'kalender-tidig',
'kalender-senast',
'flyttar-fran-gatuadress',
'flyttar-fran-portkod',
'flyttar-fran-postadress',
'boendetyp',
'meter',
'hiss',
'flyttar-till-gatuadress',
'flyttar-till-postnummer',
'flyttar-till-portkod',
'boendetyp2',
'meter2',
'hiss2',
'rum',
'personer',
'kontor',
'moblerat',
'boyta',
'biyta',
'inventarielista',
'packning',
'uppackning',
'inventarie',
'antalflyttlador',
'flyttlada',
'miljostation',
'flyttstad',
'magasinering',
'student',
'ovriginfo',
'rekommenderad',
'hurhittade'
);
foreach ($nyckel as $key) {
if ($_POST[$key]) {
$input .= $_POST[$key]. "\t";
} else {
$input .= "-\t";
}
$thekey .= $key. "\t";
}
$index = 1;
$name = str_replace(" " , "" , $_POST["forefternamn"]);
$filename = $name . $index . ".txt";
while (file_exists($filename)) {
$index++;
$filename = $name .$index. ".txt";
}
$handle = fopen($filename, 'w') or die('Cannot open file: '.$filename);
fwrite($handle, $thekey);
fwrite($handle, PHP_EOL);
fwrite($handle, $input);
fclose($handle);
if (file_exists($filename)) {
echo "<script>window.location = 'www.domain.com'</script>";
}?>
答案 0 :(得分:0)
使用主键ID字段和名称字段创建数据库表。将名称插入表中并检索生成的ID。使用此生成的ID命名文件。
答案 1 :(得分:0)
如下: -
$dir='c:/temp/inv/';
$col=glob( $dir . '*.txt' );
$tmp=array();
foreach( $col as $file ) $tmp[]=intval( pathinfo( $file, PATHINFO_FILENAME ) );
$last=intval( max( $tmp ) );
$next=( $last+1 ).'.txt';
echo $next;
按要求继续提出想法,并与“活泼”保持一致?评论......怎么样: -
$nyckel = array(
'privatforetag',
'forefternamn',
'foretagsnamn',
/* rest of the elements removed for brevity */
'student',
'ovriginfo',
'rekommenderad',
'hurhittade'
);
/* Helper function to generate next invoice id */
function getnextinvid( $path=false ){
if( $path ){
$col=glob( $path . '*.txt' );
$tmp=array();
foreach( $col as $file ) $tmp[]=intval( pathinfo( $file, PATHINFO_FILENAME ) );
$last=intval( max( $tmp ) );
return $path . ( $last+1 ).'.txt';
}
return false;
}
/* Loop through array to get POSTed values */
$thekey=$input=array();
foreach( $nyckel as $key ) {
$input[]=isset( $_POST[ $key ] ) ? $_POST[ $key ] : '-';
$thekey[]=$key;
}
/* The output filename / invoice should be sequentially numbered */
$output=getnextinvid('c:/temp/inv/');
if( $output ) {
/* write your data to the output file */
$bytes=file_put_contents( $output, implode( "\t", $thekey ) . PHP_EOL . implode( "\t", $input ), FILE_TEXT );
/* Does the new invoice exist? */
$exists=file_exists( $output ) ? true : false;
/* good practice to call this after calls to certain functions */
clearstatcache();
/* Redirect - alternatively use javascript as originally */
if( $exists && $bytes ) header('location: http://www.domain.com');
} else {
echo 'failed';
}