5

I'm using a "foreach" loop in PHP to create tables from my MySQL data

What I'm trying to achieve is to count the amount of rows being returned by the loop

The loop is creating new tables for each "machine" and fills the "contracts" as new rows but whenever I try to count the rows it returns the count from all tables together instead of only the a single one.

Here's my code:

<?php

foreach ($this->datatitle as $head) {

    $cards = 1;

    echo '<table id="cards" class="cards">';

    echo '<tr>';

    foreach ($this->datacount as $datacount) {

        echo '<td>' . $head->machine_text . ' ' . $head->machine_name . ' [' . $datacount->count . ']</td>';

    }

    echo '</tr>';
    echo '<tr>';
    echo '<td>';
    echo '<ul id="sortable" class="connectedSortable">';

    foreach ($this->data as $body) {

        if ($head->machine_text == $body->machine_text) {

            echo '<li class="ui-state-default">Auftrag: ' . $body->aufnr;
            echo '<br>' . $body->matnr . ' ' . $body->matxt;
            echo '<br>Menge ' . $body->gamng;
            echo '<br><br>';
            echo 'Start: ' . $body->gstrp;
            echo '<br>Ende: ' . $body->ssavd . '</li>';

            if ($cards++ == 10) {
                break;
            }

        } else {

        }

    }

    echo '</td>';
    echo '</tr>';
    echo '</table>';

}

?>

The $cards defines the amount of rows want to display, but i want to count the rows which aren't displayed aswell.

tl;dr create tables with foreach, want to count rows from single table

2 Answers 2

4

Above youre foreach loop, define a counter.

$count = 0

Then in your foreach loop:

$count = $count + 1

After your foreach loop:

echo $count

Example:

<?php

foreach ($this->datatitle as $head) {

$count = 0;
$cards = 1;

echo '<table id="cards" class="cards">';

echo '<tr>';

foreach ($this->datacount as $datacount) {
    $count = $count + 1;
    echo '<td>' . $head->machine_text . ' ' . $head->machine_name . ' [' . $datacount->count . ']</td>';

}

echo '</tr>';
echo '<tr>';
echo '<td>';
echo '<ul id="sortable" class="connectedSortable">';

foreach ($this->data as $body) {

    if ($head->machine_text == $body->machine_text) {

        echo '<li class="ui-state-default">Auftrag: ' . $body->aufnr;
        echo '<br>' . $body->matnr . ' ' . $body->matxt;
        echo '<br>Menge ' . $body->gamng;
        echo '<br><br>';
        echo 'Start: ' . $body->gstrp;
        echo '<br>Ende: ' . $body->ssavd . '</li>';

        if ($cards++ == 10) {
            break;
        }

    } else {

    }

}

echo '</td>';
echo '</tr>';
echo '</table>';
echo $count;
}
?>
Sign up to request clarification or add additional context in comments.

10 Comments

Thanks for your reply! I'm only getting the row count from all tables together that way instead of the count for each table individually
try the example, maybe you need to move the Count+1 were you need it
okay now it's looking really good, is it possible to echo out the count in the table header?
Sure, just place the 'echo $count' in the header where you need it
What about $count++;
|
1

i think this will help.

<?php

$count = 0;

foreach ($names as $name){
    echo  "<td>".$count."</td>
           <td>".$name."</td>";

    $count += 1;
}

?>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.