Php 使用$GET从文本文件中读取特定行,然后回显它

Php 使用$GET从文本文件中读取特定行,然后回显它,php,get,echo,Php,Get,Echo,我有一个文本文件,它已经由用户创建和附加,我正在使用这种格式来附加它。在每次输入后换行,并用分号分隔: 电影标题1;电影评级1;图1 电影片名2;电影评级2;图2 电影片名3;电影评级3;图3 等等等等 我已经设法修复了上面的问题,现在我想从文本文件中读取一行,然后回显它。此特定行可通过$GET参数并基于电影标题找到 例如,我单击一个链接,在本例中是一个电影的标题,然后通过$get:movies.php获得标题名,以更改为movies.php?title=MovieTitle。然后我得到了当前的

我有一个文本文件,它已经由用户创建和附加,我正在使用这种格式来附加它。在每次输入后换行,并用分号分隔:

电影标题1;电影评级1;图1

电影片名2;电影评级2;图2

电影片名3;电影评级3;图3

等等等等

我已经设法修复了上面的问题,现在我想从文本文件中读取一行,然后回显它。此特定行可通过$GET参数并基于电影标题找到

例如,我单击一个链接,在本例中是一个电影的标题,然后通过$get:movies.php获得标题名,以更改为movies.php?title=MovieTitle。然后我得到了当前的电影名称,读了这一行,并附和了它。这是我的密码:

//Writes input from user to movies.txt
<?php
    if (isset($_POST["submit"])) {
        $title = $_POST['movieTitle'];
        $rating = $_POST['movieRatings'];
        $plot = $_POST['plot'];


    $handle = fopen('movies.txt', 'a');
    $names_array = array("$title","$rating","$plot");
    $string = implode(';', $names_array);
    fwrite($handle, $string."\n");          
    fclose($handle);
    }   
    ?>

//Reads line from movies.txt and adds it to a li, with movie title becoming a link
<?php
    $filename = 'movies.txt';

    $handle = fopen($filename, 'r');

    $datain = fread($handle, filesize($filename)); 

    $lines = explode ("\n",trim($datain));
    foreach($lines as $line)
    {
        list($title,$rating,$plot) = explode(";",$line,3);
        echo '<li><a href="movies.php?title='.$title.'">'.$title.'</a><span>'.$rating.'</span></li>';
    }
    ?>//So far so good

//And now I want to read title name, and based on the
//title name find a specific line with rating and plot 
//which belongs to current clicked movie title...
<?php
if (isset($_GET["title"])) {
    $readin = file('movies.txt');

    foreach ($readin as $fname) 
    $names_array = explode(';', $fname);
    {
            echo '<h1>'.$names_array[0]./*MovietitleName*/'</h1>''<h2>'.$rating.'</h2>'.$plot;//So I want to echo the specific "movieTitle movie, movieRating and moviePlot". What I've done so far is wrong, I need help here! 
    }
    }
?>
//将用户输入写入movies.txt
//读取movies.txt中的行并将其添加到li中,电影标题成为链接
//到目前为止还不错
//现在我想读一下书名,基于
//标题名称查找带有评级和绘图的特定行
//属于当前单击的电影标题的。。。

首先,您的语法有错误。其次,这就是数据库对于解决方案的作用,因为它不会扩展。然而,要让它发挥作用,请执行以下操作

if (isset($_GET["title"])) {
  $readin = file('movies.txt');

  foreach ($readin as $fname) 
  {
     $names_array = explode(';', $fname);//this has to go here
     if($_GET['title']===$names_array[0]){//only echo if the title mathces
        echo '<h1>'.$names_array[0]./*MovietitleName*/'</h1>''<h2>'.$names_array[1].'</h2>'.$names_array[2];
     }
  }
}
if(isset($\u GET[“title”])){
$readin=file('movies.txt');
foreach($fname读入)
{
$names_array=explode(“;”,$fname);//必须转到这里
if($\u GET['title']==$names\u array[0]){//仅当标题匹配时回显
回显'.$names_数组[0]./*MovietitleName*/''''.$names_数组[1].'.$names_数组[2];
}
}
}
试试这段代码

if (isset($_GET["title"])) {
  $readin = file('movies.txt');

  foreach ($readin as $fname) 
  {
     $names_array = explode(';', $fname);//this has to go here
     if($_GET['title']==$names_array[0]){
        echo '<h1>'.$names_array[0].'</h1><h2>'.$names_array[1].'</h2>'.$names_array[2];
     }
  }
}
if(isset($\u GET[“title”])){
$readin=file('movies.txt');
foreach($fname读入)
{
$names_array=explode(“;”,$fname);//必须转到这里
if($\u GET['title']=$names\u数组[0]){
回显'.$names_数组[0].'.$names_数组[1].'.$names_数组[2];
}
}
}

您是否考虑过使用数据库?这并不难,对你也有好处。不,我不考虑建立数据库。谢谢你的回答!但是我没有把现在的线路弄出来。。。它呼应出一个不同的等级。使用$names\u数组[1]来呼应等级,使用$names\u数组[2]来呼应情节。正如@Emil所说。如果您对
$names\u数组所包含的内容感到困惑,请执行
打印($names\u数组)检查it@Mike米勒,谢谢!