Таблица пожертвований php с циклом while

Я новичок в 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>";
?>

Спасибо заранее.

Поместите код таблицы вне цикла

Serving Quarantine period 06.04.2021 13:12

Хотя в этом случае это не является абсолютно необходимым, лучше всего привести пример вашего ввода, то есть пример содержимого вашего файла. См .: stackoverflow.com/help/minimal-reproducible-example

k0pernikus 06.04.2021 13:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
49
2

Ответы 2

Используйте переменную $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, если файл пуст.

Valerio Marcellino 06.04.2021 13:37

Да, спасибо, что заметили этот крайний случай, когда файл пуст. Я починил это!

Steverst1 06.04.2021 13:43

Большое спасибо за быстрый ответ, но, к сожалению, пока не работает. Я отредактировал свой вопрос и опубликовал весь код, если вы могли бы взглянуть сейчас. Еще раз спасибо.

SandraLopez 06.04.2021 13:44

Нет проблем, я отправляю еще один ответ, я надеюсь получить то, о чем вы просите! и если вы не понимаете какую-то строку кода, просто прокомментируйте ее. Я вам объясню, рад помочь!

Steverst1 06.04.2021 14:31

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

Другие вопросы по теме