Füllen Sie eine zweispaltige HTML-Tabelle mit einem einzelnen PHP-Ergebnissatz

Lesezeit: 3 Minuten

Bitte verzeihen Sie mir, da ich Anfänger in PHP bin.

Ich versuche, 2 zweispaltige Tabellen mit Bestandsinformationen zu füllen. Mit meinem aktuellen Code habe ich das folgende Bild:
Inventar

Ich möchte in dieser Tabelle zwei Filialen nebeneinander haben. dh Filialnummer 2 und Filialnummer 7 in der Tabellenzeile in der Tabelle, dann Filiale 10 und 11 in derselben Zeile und so weiter. Unten ist der Code, den ich bisher verwende, um dies zu erreichen:

global $wpdb;

$result = $wpdb->get_results( 
    $wpdb->prepare( "
        SELECT STORE_NAME,REPLACE(STORE_NAME, ' ', '-') as STOREURL, INVENTORY, STORE_NUMBER FROM StoreInventory 
        WHERE SKU = %s", 
        $product_sku 
    ) 
);

if ($result){
    echo '<table class=\'inventory\'>';
    foreach($result as $row) {
        echo '<tr><td><div><a href=\'https://mystore.com/stores/'. $row->STOREURL . '\' target=\'_parent\'>Store Number: ' . $row->STORE_NUMBER . '</a><br/>' .$row->INVENTORY. ' on hand. </div></td></tr>';
    }
    echo '</table>';
} else {
    echo '<table class=\'nostock\'><td>This item is out of stock, check back later for updated information!</td></table>';
}

Das Problem, das ich habe, ist, dass ich den Datensatz Zeile für Zeile durchlaufe und die Daten zu jeder Zeile hinzufüge. Ich habe versucht, eine Schleife in einer Schleife zu haben, was mir nicht die richtigen Ergebnisse liefert.

Ist es möglich, die Ergebnismenge in zwei mehrdimensionale Arrays aufzuteilen und jedes separat zu durchlaufen und dann der Tabelle hinzuzufügen? Kann ich eine bestimmte Zeile mit einem Zähler innerhalb der Schleife aufrufen?

Jeder Rat oder jede Richtung wäre eine große Hilfe.

Ein relativ einfacher Ansatz wäre, eine Dummy-Variable zum Speichern der Spalte zu erstellen. EX:

$column_number = 0;
echo '<table class=\'inventory\'><tr>';
foreach($result as $row) {
    echo '<td><div><a href=\'https://mystore.com/stores/'. $row->STOREURL . '\' target=\'_parent\'>Store Number: ' . $row->STORE_NUMBER . '</a><br/>' .$row->INVENTORY. ' on hand. </div></td>';
    $column_number += 1;
    if ($column_number == 2) {
        echo '</tr><tr>';
        $column_number = 0;
    }
}
echo '</tr></table>';

  • Ich wollte vorschlagen, Modulus zu verwenden, aber dies macht dasselbe, es setzt nur die Zahl auf 0 zurück.

    – Flüsse

    5. Juni 2019 um 19:57 Uhr

  • Super, das hat funktioniert danke. Musste meine td width = 50% setzen, um beide Spalten ganz nach unten gleich breit zu halten, aber das funktionierte perfekt. Vielen Dank!

    – Mike Davis

    6. Juni 2019 um 14:24 Uhr

Endgültige Antwort basierend auf der Antwort von ARubiksCube:

if ($result){
    $column_number = 0;
    echo '<table class=\'inventory\'><tr>';
    foreach($result as $row) {
        echo '<td \' width=\'50%\' ><div><a href=\'https://shopliquornl.com/stores/'. $row->STOREURL . '\' target=\'_parent\'>' . $row->STORE_NAME . '</a><br/>' .$row->INVENTORY. ' on hand</div></td>';
        $column_number += 1;
        if ($column_number == 2) {
            echo '</tr><tr>';
            $column_number = 0;
        }
    }
    echo '</table>';
} else {
    echo '<table class=\'nostock\'><td>This item is out of stock, check back later for updated information!</td></table>';
}

1229500cookie-checkFüllen Sie eine zweispaltige HTML-Tabelle mit einem einzelnen PHP-Ergebnissatz

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy