Я новичок в PHP, и мне нужно закодировать HTML-таблицу с помощью цикла while, но я не хочу зацикливать заголовки (имя и фамилию), и я не знаю, как прервать цикл в этой строке . Вы можете найти ниже мой код.
<html>
<head>
<form method = "post">
<input type = "submit" class = "button" name = "displayNameDonation" id = "displayNameDonation" value = "Press to show largest donator" />
<br><br>
<input type = "submit" class = "button" name = "sendData" id = "sendData" value = "Press to send max donation and largest donor to text file" />
</form>
</head>
</html>
<?php
// Open your file which is “r” only –search what r stands for, or …(explain)
//function fopen
$file = fopen("file.txt", "r") or die("Unable to open file!");
//store array
$valuesArray = array();
//Create loop to separate values and store in array.
//function feof
<table>
while(!feof($file))
{
//fgets function
$line = fgets($file);
//explode function
$value = explode(",", $line);
//stores the names and amounts into separate arrays.
$valuesArray[] = array($value[0], $value[1]);
//puts values from arrays
echo $value[0]. $value[1];
}
//fclose function
fclose($file);
//Create line counter.
$lineCounter = sizeof($valuesArray);
//Set variable to max value and convert to integer.
$maxDonation = (int) $valuesArray[0][1];
//create loop to read array elements
for($i = 0; $i <$lineCounter; $i++)
{
//Check to see if value in array is greater than the maxDonation
if ((int) $valuesArray[$i][1] > $maxDonation)
{
//Convert value from array to integer
$maxDonation = (int) $valuesArray[$i][1];
//Obtain donors name
$donationName = $valuesArray[$i][0];
}
}
//function to display $maxDonation & $donationName when button is clicked.
function displayNameDonation($donationName, $maxDonation)
{
echo $donationName . $donationName. ": " . $maxDonation ;
}
if (isset($_POST['displayNameDonation']))
{
displayNameDonation($donationName, $maxDonation);
}
//function to import data into separate file
function sendData($donationName, $maxDonation)
{
$var_str = var_export($donationName.$maxDonation, true);
$var = "The max donation was by = $var_str;\n\n";
file_put_contents('results.txt', $var);
}
if (isset($_POST['sendData']))
{
sendData($donationName, $maxDonation);
}
?>
И это таблица, которую мне нужно добавить (но сняв переменные $ a и $ b и заменив их для цикла while выше:
<?php
$a = "John";
$b = "Smith";
echo "<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>". $a ."</td>
<td>". $b ."</td>
</table>";
?>
Спасибо заранее.
Хотя в этом случае это не является абсолютно необходимым, лучше всего привести пример вашего ввода, то есть пример содержимого вашего файла. См .: stackoverflow.com/help/minimal-reproducible-example






Используйте переменную $i, чтобы отслеживать, является ли это первым циклом отображения заголовка
$file = fopen('data.txt', 'r');
$i=0;
echo "<table border='1'>";
while(!feof($file))
{
if ($i===0){
echo "<tr><th>First Name</th><th>Last Name</th></tr>";
}
$line = fgets($file);
$fullName = explode(",", $line);
echo "<tr><td>$fullName[0]</td><td>$fullName[1]</td></tr>";
$i++;
}
echo "</table>";
fclose($file);
или просто покажите заголовок таблицы перед запуском цикла и чтением из файла.
$file = fopen('data.txt', 'r');
echo "<table border='1'>";
echo "<tr><th>First Name</th><th>Last Name</th></tr>";
while(!feof($file))
{
$line = fgets($file);
$fullName = explode(",", $line);
echo "<tr><td>$fullName[0]</td><td>$fullName[1]</td></tr>";
}
echo "</table>";
fclose($file);
Я думаю, что в первом примере echo "<table border = '1'>" следует разместить вне цикла. В противном случае этот фрагмент кода может привести к повреждению HTML, если файл пуст.
Да, спасибо, что заметили этот крайний случай, когда файл пуст. Я починил это!
Большое спасибо за быстрый ответ, но, к сожалению, пока не работает. Я отредактировал свой вопрос и опубликовал весь код, если вы могли бы взглянуть сейчас. Еще раз спасибо.
Нет проблем, я отправляю еще один ответ, я надеюсь получить то, о чем вы просите! и если вы не понимаете какую-то строку кода, просто прокомментируйте ее. Я вам объясню, рад помочь!
file.txt содержат данные доноров с указанием их суммы через запятую.
Boss,100
Steve,12
Everst,300
Alpha,200
<form method = "post">
<input type = "submit" class = "button" name = "displayNameDonation"
value = "Press to show largest donator" />
<br><br>
<input type = "submit" class = "button" name = "sendData" id = "sendData"
value = "Press to send max donation and largest donor to text file" />
</form>
функция generous() возвращает щедрого донора название и количество денег, которые он жертвует от file.txt
<?php
function generous(){
$file = fopen('file.txt', 'r');
for ($i=0; !feof($file) ; $i++) {
$line = fgets($file);
$donation = explode(",", $line);
$name = $donation[0];
$amount = (int)$donation[1];
if ($i===0){
$maxN = $name;
$maxA = $amount;
}
if ($maxA <= $amount){
$maxN = $name;
$maxA = $amount;
}
}
return [$maxN,$maxA];
}
function displayNameDonation(){
list($maxN, $maxA) = generous();
echo $maxN.'='.$maxA;//Everst=300
}
if (isset($_POST['displayNameDonation'])){
displayNameDonation();
}
function sendData($donationName, $maxDonation)
{
return "The max donation was by $donationName with amount of $maxDonation dollars.\n";
}
if (isset($_POST['sendData'])){
list($maxN, $maxA) = generous();
file_put_contents('results.txt', sendData($maxN, $maxA));
}
?>
Поместите код таблицы вне цикла