while schleife mal anders

So mein Guter, ich hab den gesamten HTML Teil mal neu geschrieben:

PHP:
<?php
include "mysql/mysql.php";
$datum = date('d.m.Y');

 if (isset($_POST['etikett'])) {                 // Wenn Variable $_POST['etikett'] existiert geh weiter..
    if (!empty($_POST['checkbox'])) {            // Ist Variable $_POST['checkbox'] auch gefüllt?!
        foreach ($checkbox as $arraybox) {       // Array Variable umwandeln und in Schleife packen

$abfrage     = "SELECT * FROM artikel WHERE id = '$arraybox'";
$ergebnis     = mysql_query($abfrage);

echo "<table><tr>";
while($row     = mysql_fetch_object($ergebnis))
{
echo "
    <td>
    <table style=\"background-image: url(layout.gif); width: 287px; height: 182px;\">
    <tr>
        <td colspan=\"2\" style=\"height: 58px;\">&nbsp;</td>
    </tr>
    <tr>
        <td colspan=\"2\" style=\"height: 23px; vertical-align: middle;\">$row->artikelnummer</td>
    </tr>
    <tr>
        <td colspan=\"2\" style=\"height: 45px;\">&nbsp;</td>
    </tr>
    <tr>
        <td style=\"height: 46px; width: 162px;\">$row->lagerplatz</td>
        <td style=\"height: 46px; text-align: right; padding-right: 10px\">$datum<td>
    </tr>
    </table>
    </td>"; 
}
echo "
</tr></table>";               
}                                                                                
}
}
?>

Hoffe, das hilft dir. Grüße,
Steffen
 
Bist du sicher, dass du meinen gesamten Quelltext kopiert hast? Der ausgegeben Quelltext deiner Seite hat nämlich immer noch einen bestimmten Fehler:

<table>
<tr>

Schleife

</tr>
</table>


So sollte es aussehen. Bei dir wird aber für jeden Schleifendurchgang immer noch die Zeile (<tr>) geschlossen sowie die Haupttabelle, und danach wieder eine neue geöffnet.

Pro Schleifendurchgang sollte nur eine neue Zelle (<td>) geöffnet werden. Darein kommt dann die Etiketttabelle. Eben genauso, wie ich es dir gegeben habe :)

Grüße
 
Also, so müsste es aussehen, wenn es richtig funktioniert:

HTML:
    <table>
    <tr>
        <td>

        <table style="background-image: url(layout.gif); width: 287px; height: 182px;">
        <tr>
            <td colspan="2" style="height: 58px;">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="2" style="height: 23px; vertical-align: middle;">Artikelnummer</td>
        </tr>
        <tr>

            <td colspan="2" style="height: 45px;">&nbsp;</td>
        </tr>
        <tr>
            <td style="height: 46px; width: 162px;">Lagerplatz</td>
            <td style="height: 46px; text-align: right; padding-right: 10px">Datum<td>
        </tr>
        </table>
        </td>

        <td>
        <table style="background-image: url(layout.gif); width: 287px; height: 182px;">
        <tr>
            <td colspan="2" style="height: 58px;">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="2" style="height: 23px; vertical-align: middle;">Artikelnummer</td>
        </tr>

        <tr>
            <td colspan="2" style="height: 45px;">&nbsp;</td>
        </tr>
        <tr>
            <td style="height: 46px; width: 162px;">Lagerplatz</td>
            <td style="height: 46px; text-align: right; padding-right: 10px">Datum<td>
        </tr>
        </table>

        </td>
    </tr>
    </table>
 
Ja aber du hast es doch oben im code auch so ...

PHP:
echo "<table><tr>";  <<-- <TABLE><TR>
while($row     = mysql_fetch_object($ergebnis))
{
echo "
    Schleife
         "; 
}
echo "
</tr></table>";          <<-- <TABLE><TR>
 
Zuletzt bearbeitet:
Argh - mein Fehler, sorry:

Du hast da ja noch ein foreach drin... ;)

Hier die Komplettlösung mit ordentlichem Einrücken, dann passieren solche Fehler auch nicht so schnell.

PHP:
<table><tr>
<?php
include "mysql/mysql.php";
$datum = date('d.m.Y');

 if (isset($_POST['etikett'])) {                 // Wenn Variable $_POST['etikett'] existiert geh weiter..
    if (!empty($_POST['checkbox'])) {            // Ist Variable $_POST['checkbox'] auch gefüllt?!
        foreach ($checkbox as $arraybox) {       // Array Variable umwandeln und in Schleife packen

            $abfrage     = "SELECT * FROM artikel WHERE id = '$arraybox'";
            $ergebnis     = mysql_query($abfrage);
            
            while($row     = mysql_fetch_object($ergebnis)) {
            echo "
                <td>
                <table style=\"background-image: url(layout.gif); width: 287px; height: 182px;\">
                <tr>
                    <td colspan=\"2\" style=\"height: 58px;\">&nbsp;</td>
                </tr>
                <tr>
                    <td colspan=\"2\" style=\"height: 23px; vertical-align: middle;\">$row->artikelnummer</td>
                </tr>
                <tr>
                    <td colspan=\"2\" style=\"height: 45px;\">&nbsp;</td>
                </tr>
                <tr>
                    <td style=\"height: 46px; width: 162px;\">$row->lagerplatz</td>
                    <td style=\"height: 46px; text-align: right; padding-right: 10px\">$datum<td>
                </tr>
                </table>
                </td>"; 
            }              
        }                                                                                
    }
}
?> 
</tr></table>

Als kleiner Tipp nebenbei, deine while-Schleife ist überflüssig. Du machst ne Abfrage nach einer ID, das heißt es gibt nur eine Zeile, die dem SELECT entspricht (vorrausgesetzt, die ID ist dein primary key, wovon ich ausgehe) - deshalb musst du keine Schleife durchlaufen. Es schadet aber auch nicht wirklich. :)
 
Zuletzt bearbeitet:
So da bin ich wieder...
Also das klappt soweit ganz gut ... danke erstma ;)
gibt es nun eine Möglichkeit das er nach 3 Etiketten einen Umbruch macht, er dann in der nächsten reihe nochmal 3 Stück reinhaut und immer so weiter .. ... Verständlich ? *gg*
denke das mit der Blätterfunktion bekomme ich noch hin.

Gruß
Rene ;)
 
Dazu musst du dir erstmal die Frage stellen, wie du eine neue Zeile startest. Wie ich bereits geschrieben habe, sind <td>'s Zellen und <tr>'s Zeilen.

Du musst also nach den ersten drei Reihen die alte Zeile schließen und eine neue eröffnen.

Wie machen wir das? Ganz simpel:

PHP:
if ($i == 3) {
	echo "
		</tr>
		<tr>";
	$i = 1;
}
$i++;

Und for Beginn der Schleife (am besten direkt nach dem <?php Aufruf ein $i=1; definieren.

Grüße,
Steffen
 
Zurück