PHP。基于POST GET用户输入的内容加载

问题描述 投票:1回答:2

谢谢你看了我的问题。纯粹是关于PHP POST GET函数的问题。

这是我的代码。

index.php

<html>
<body>
&nbsp;<p>
<center>
<form action="story_get.php" method="post">
<label for="name">Name:</label> <input type="text" name="name">
<label for="age">Age:</label><input type="number" size=2 name="age"><p>
<label for="place">Place:</label> <input type="text" name="place"><p>

 <label for="storys">Choose a story:</label>
  <select name="story" id="story">
    <option value="sea">Sea side</option>
    <option value="mount">Mountain</option>
  </select>

<p>

<input type="submit" value="Enter">
<button type="reset" value="Reset">Reset</button>
</form>

</body>
</html> 

story_get.php

<html>
<body>


<center>
<h1>Welcome <font color=red><i><?php echo $_POST["name"]; ?></i></font>, age of <font color=red><i><?php echo $_POST["age"]; ?></i></font><br>
to the wonderfull land of <br><font color=red><i><?php echo $_POST["place"]; ?></i></font>
<?php echo $_POST["story"]; ?>



 <p><a href=index.php>Edit</a>
</body>
</html>

我的代码工作正常,但没有用 <?php echo $_POST["story"]; ?> 我想打印200字以上的故事,与用户选择的内容有关。我希望你能理解我想达到的目的,并能提出简单的解决方案。先谢谢您

php post get
2个回答
0
投票

你需要从某个地方得到这个故事。有几种方法可以达到目的。


如果你想从文本文件加载它。

// Here we sanitize the story ID to avoid getting hacked:
$story_id = preg_replace('#[^a-zA-Z0-9_ -]#', '', $_POST['story']);

// Then we load the text file containing the story:

$path = 'stories/' . $story_id . '.txt';
$story_text = is_file($path) ? file_get_contents($path) : 'No such story!';

如果你想从数据库中加载它

$conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn->prepare("SELECT * FROM stories WHERE story_id = ? LIMIT 1");
$stmt->bind_param("s", $_POST['story']);
$stmt->execute();
$result = $stmt->get_result();
$story = $result->fetch_assoc();
$story_text = !empty($story['story_text']) ? $story['story_text'] : 'No such story!';

假设你有一个叫 stories 带字段 story_idstory_text.


你也可以有一个单独的文件,将所有的故事分配到变量中(假设你真的只有几个故事,那么加载未使用的故事对性能的影响是最小的)。

$stories['Seaside'] = <<<EOL
Here is the seaside story.
EOL;

$stories['Mountain'] = <<<EOL
Here is the mountain story.
EOL;

然后在你的故事讲述文件中,你 "加载 "它。

$story_text = !empty($stories[$_POST['story']) ? $stories[$_POST['story']] : 'No such story!';

然后(用以上任何一个选项),简单地说:

<?php echo $story_text; ?>

在上面的选项中,我会选择文本文件加载的方式来寻找故事文本的来源,如果你正在寻找一些简单易维护的东西。祝你讲故事顺利:)


假设你想使用表格变量 里面 你的故事。你会想使用代币,比如说 {{ place }}并在输出故事文本之前替换它们。

$story_text = str_replace('{{ name }}', $_POST['name'], $story_text);
$story_text = str_replace('{{ place }}', $_POST['place'], $story_text);

这样就会变成 "从前有一个{{名字}}在探索{{地方}}..." 进入 "从前有一个Светослав在勘察堪察加半岛...",等等。


0
投票

...instead of <?php echo $_POST["story"]; ?> I want to print 200+ words story relating to what User has chosen.

使用条件式 if()switch 语句来查看你的$_POST['story']是否被设置并等于你的story选项之一。


//--> ON story_get.php 
//--> (Provided the $_POST variable in fact has the values assigned to the global array)
//--> use var_dump($_POST) on story_get.php to check if the global $_POST array has 
//--> key/value pairs coming from your index.php page

// set variables that have your story information. 
$seaside = //--> Your story about the sea side
$mountain = //--> Your story about the mountain
$output = null; //--> Empty variable to hold display info from conditional
//--> Now to see if the form element that selects story is set using isset
if(isset($_POST['story']){
  //--> Now that we know the input in the form that holds the value for story isset
  //--> Check to see if it is set and then declare a variable and assign it to that variable
  $story = $_POST['story'];
  if($story === 'sea'){
    $output = $seaside;
  }elseif($story === 'mount'){
    $output = $mountain;
  }else{
    $output = //--> Set a default setting that displays output here if neither story is selected.
  }
}

回应变量 $output 您希望在html文档中显示故事内容的地方。

<div>
  <?=$output?>

  <!--// OR //-->

  <?php echo $output; ?>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.