使用输入类型文本写入文本文件

时间:2015-11-29 18:00:25

标签: php html html5

我有一个小问题,我想解决。好吧,我有一个购物车,用户可以键入它想要购买多少商品。但问题是当用户输入例如" 2"我希望它写给文本文件的商品肉肉的名称,例如,而不是数字2.我有一个数组,我存储好,价格等。

这是我存储的数组:

{
  "size": 30,
  "from": 0,
  "body": {
    "query": {
      "bool": {
        "filter": {
          "geo_distance": {
            "distance": "100km",
            "location": {
              "lat": 49.449919468911,
              "lon": 11.073560787681
            }
          }
        }
      }
    },
    "script_fields": {
      "distance": {
        "lang": "groovy",
        "params": {
          "lat": 49.449919468911,
          "lon": 11.073560787681
        },
        "script": "doc['location'].distanceInKm(lat,lon)"
      }
    },
    "sort": [
      {
        "_geo_distance": {
          "location": {
            "lat": 49.449919468911,
            "lon": 11.073560787681
          },
          "order": "asc",
          "unit": "km"
        }
      },
      {
        "upgrade_sort": {
          "order": "desc"
        }
      },
      {
        "has_siegel": {
          "order": "desc"
        }
      }
    ]
  },
  "fields": [
    "_source",
    "distance"
  ]
}

我为每个商品输入了五种形式。     

$filename="shop.txt"; 
$lines = array(); 
$file = fopen($filename, "r"); 

while(!feof($file)) { 

//read file line by line into a new array element 
$lines[] = fgets($file, 4096); 

} 
fclose ($file); 

这是我得到一个for循环,它检查表单并写入文本文件。

Meat:   <input type="text" name="cb4" value=""><br> 
        <input type="submit" value="Submit"> 
</form>

如果我在肉类商品中输入2,则输出现在为:

您的购物车包含以下内容: 2 你的购物车总共有1件商品

1 个答案:

答案 0 :(得分:0)

这应该加载行 - 在session_start();之前必须没有输出到浏览器。计数器在循环的顶部递增,以便它从1开始

<?php session_start(); ?>

 <?php
 $filename="shop.txt"; 
 $_SESSION['lines'] = array(); 
 $file = fopen($filename, "r"); 
 $counter = 0;
 while(!feof($file)) { 
 $counter++;
 //read file line by line into a new array element 
 $_SESSION['lines'][$counter] = fgets($file, 500); 

 } 
 fclose ($file); 

 ?>

这也应该将文件分解为没有循环的数组

    $file = fread($file, filesize($file)); // Get file contents
    $_SESSION['list'] = explode ("\n", $file); // Split all the rows 

您可能需要在文件顶部有一个空行才能占据位置0。

这应该让他们出局

 <?php session_start(); ?>

 <?php
 if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         $result_string = '';
         foreach($_POST as $item) {

             $result_string .= $_SESSION['list'][$item] . "\n";
             $counter++;

         }            
         file_put_contents('kundvagn.txt', $result_string , FILE_APPEND);

     }
 ?>

这是如何使用会话的一个很好的描述: http://www.w3schools.com/php/php_sessions.asp

这显示了从文件中获取行的另一种方法 - 如果将其读入变量,它实际上已经是一个数组 - 然后它可以被换行符拆分。

Parse txt files and turn them into static html files

如果他们将数量放在方框中而不是他们想要的商品编号,那么这应该有效

  <?php
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         $result_string = '';
          foreach($_POST as $item) {


          $result_string .= $item . " " . $_SESSION['list'][$counter] . "\n";
          $counter++;

          }            
          file_put_contents('kundvagn.txt', $result_string , FILE_APPEND);

      }
  ?>

这将记录那些没有文字输入的内容,因此您需要考虑删除&#34; 0&#34;的:

 // only list items greater than 0
 if($item > 0){
     $result_string .= $item . " " . $_SESSION['list'][$counter] . "\n";
 }

据我所知,计数器应该计算每个提交的POST项目是否已设置。我无法检查。

你需要把加载计数器放在加载循环的底部 - 这是之前的假设,假设没有项目值&#34; 0&#34;所以可能没有阵列位置&#34; 0&#34;这是相关的 - 除了你想要一条消息说'#34;你没有选择.....&#34;。如果你使用爆炸方法,那将是理所当然的,并且可能是最有效的方法。您可能还需要检查POST阵列是否符合预期顺序。

这对于探索POST数组可能很方便: Print $_POST variable name along with value

相关问题