2016-03-03 2 views
0

Как я могу сделать свои обновления массива $superhero_list после того, как весь код на superhero.php сделан, и я хочу найти другое имя?Как обновить массив после завершения кода?

Проблема, которую я нахожу, заключается в том, что после того, как я сделал с 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); 

?> 

Другое дело, есть ли лучший способ, чтобы написать этот код? С функциями или другими петлями?

Спасибо заранее, ребята!

ответ

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); 

?> 
+0

Удивительный брат !!! Спасибо! –

+0

Можете ли вы объяснить эту часть: // Преобразование массива супергероев в строку с использованием «:» для их разделения $ tempString = implode (":", $ superhero_list); Почему:? –

+0

Если вы хотите сохранить больше, чем их имя, вы должны изучить json_encode и json_decode. Он будет работать со сценарием, который я написал с небольшими корректировками. –

0

В моем понимании вы хотите:

  • Если герой существует, эхо информации о герое.

  • Если героя не существует, добавьте его в массив.

И вы хотите, чтобы иметь возможность следить за каждым героем, который добавляется в массив, даже после того, как пользователь покидает и обратно.


При удалении от файла/страницы php любые данные в переменных/файле/классе теряются. У вас должен быть какой-то метод для хранения списка героев (например, базы данных/какой-либо другой формы хранения).

С базой данных у вас будут поля для названия/каждого признака. Когда пользователь отправляет форму и отправляется в файл superhero.php, вам нужно запросить базу данных для списка записей/heros. Тогда вы сможете проверить, существует ли герой или нет. Если герой существует, эхо, это heros fields/data. Если герой не существует, вставьте его в базу данных.

Предполагаю, что другой вариант - сохранить каждый набор данных в текстовом файле. Тогда вам придется управлять чтением/записью в файл каждый раз при вызове сценария. Тем не менее, я бы не сделал этого так ...

1

Если вы не хотите хранить в базе данных, вам необходимо сохранить значение массива в cookie.

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

Для печенья вы можете сохранить значение, пока ваш браузер не будет закрыт.

Смежные вопросы