完成代码后如何更新数组?

时间:2016-03-03 04:37:03

标签: php html arrays forms

如何在superhero.php上的所有代码完成并且我想搜索其他名称后,才能进行$superhero_list数组更新?

我发现的问题是,在我完成了superhero.php并返回superhero.html之后,它并没有保存$superhero_list数组上的姓氏。

superhero.html

 <html>
    <head>
      <title>Superhero List</title>
    </head>
    <body>
      <form method="post" action="superhero.php">
        <label for="heroname">Check The Super Hero Name:</label>
        <input type="text" id="heroname" name="heroname">
      </form>
    </body>
 </html>

superhero.php

<?php
  $superhero_list = array();


if (in_array($_POST ["heroname"], $superhero_list)) {
    echo 'Your hero was found.<br>';
    echo "These are the Super Powers:<br> - Invisibility <br> - Xray Vision    <br> - Flight <br> - Underwater Breathing <br> - Immortality <br> - Healing Power <br> 
    - Mind Reading <br> - Supersmart <br> - Strenght<br>";
} else {
    echo "Hero was added to the Super Hero List!";
    array_push($superhero_list,$_POST ["heroname"]);
}


echo '<br><br>';
echo 'This your Hero List:<br>';
echo implode("<br>",$superhero_list);

?>

另一件事,有没有更好的方法来编写这段代码?有功能还是其他循环?

先谢谢你们!

3 个答案:

答案 0 :(得分:1)

如果您不想存储在数据库中,则需要在cookie中存储数组值。

http://php.net/manual/en/features.cookies.php

对于Cookie,您可以存储值,直到您的浏览器无法关闭。

答案 1 :(得分:0)

根据我的理解,你想:

  • 如果英雄存在,请回复有关英雄的信息。

  • 如果主角不存在,请将它们添加到数组中。

并且您希望能够跟踪添加到阵列中的每个英雄,即使在用户离开并再次返回之后也是如此。

当您离开php文件/页面时,变量/ file / class中的任何数据都将丢失。您必须有一些方法来存储heros列表(如数据库/其他形式的存储)。

使用数据库,您将拥有名称/每个特征的字段。当用户提交表单并发送到superhero.php文件时,您需要在数据库中查询条目/英雄列表。然后你就可以检查英雄是否存在。如果英雄存在,则回显heros字段/数据。如果主角不存在,请将它们插入数据库。

我想另一种选择是将每组数据保存到文本文件中。然后,每次调用脚本时,您都必须管理对文件的读/写。但是,我不会这样做......

答案 2 :(得分:0)

每次运行PHP脚本时都要重置数组。您需要保存数据,以便下次运行时可以将数据拉回来。 您可以通过构建数据库来保存所有名称,也可以将它们保存到文件中。有了这个小东西,将它保存到文件可能是最简单,最快捷的选择。

要将数据保存到文件,请将php脚本更改为

<?php
    $superhero_list = array();
    //Load the list from the file
    $filename = 'heroNames.txt';
    //First check if the file exists
    if (file_exists($filename)) {
        //If the file exists load the data
        //First open the file for reading using "r"
        $myfile = fopen($filename, "r") or die("Unable to open file!");
        //Save it into the temp string
        $tempString = fgets($myfile);
        //turn that string into an array using ":" as the seperator. We will save using ":" later
        $superhero_list = explode(":", $tempString);
        //ALWAYS CLOSE THE FILE!!!
        fclose($myfile);
    } 

    //Now the data is either empty since its the first time used or it has all the names of the old superheros
if (in_array($_POST ["heroname"], $superhero_list)) {
    echo 'Your hero was found.<br>';
    echo "These are the Super Powers:<br> - Invisibility <br> - Xray Vision    <br> - Flight <br> - Underwater Breathing <br> - Immortality <br> - Healing Power <br> 
    - Mind Reading <br> - Supersmart <br> - Strenght<br>";
} else {
    echo "Hero was added to the Super Hero List!";
    array_push($superhero_list,$_POST ["heroname"]);
}

//Now to save the data.

//With PHP if you open a file to write and the file does not exist, it will create the file... SO...
//Open the file for writing using "w"
$myfile = fopen($filename, "w");
//Convert the superhero array to a string using ":" to separate them
$tempString = implode(":", $superhero_list);
//Now save that string to the file
fwrite($myfile, $tempString);
//ALWAYS CLOSE THE FILE
fclose($myfile);



echo '<br><br>';
echo 'This your Hero List:<br>';
echo implode("<br>",$superhero_list);

?>