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