Okay, lass uns das ganze mal Zeile für Zeile durchgehen. Ich denke mal, so kannst du am einfachsten sehen, wo die Problem liegen. Versteh das hier bitte nicht als Kritik, ich will dir helfen.
[src=html4strict]<meta charset="utf-8" />[/src]
Meta-Tags sollten immer in den Head, der hier ist aber im Body. Also ab nach oben damit.
[src=php]mysql_connect('Serveradresse', 'passwort', 'sendung' or die(mysql_error());[/src]
Hier gibt es drei Punkte. Einerseits: Es fehlt die schließende Klammer für die mysql_connect-Funktion, wie von Brother John angemerkt. Korrekt wäre es:
[src=php]mysql_connect('Serveradresse', 'passwort', 'sendung') or die(mysql_error());[/src]
Der zweite Punkt ist: Benutze nicht "or die(mysql_error())". Viele Tutorials machen das so, allerdings ist es immer schlecht, dem Benutzer irgendwelche Fehlercodes ins Gesicht zu klatschen und den Rest der Seite fehlerhaft rendern zu lassen. Geb einen netten Fehlercode aus oder so. Oder geb im Body mysql_error aus, du kannst ja trotzdem überprüfen, ob mysql_connect erfolgreich ist.
Der dritte Punkt: NEIN NEIN NEIN NEIN. Benutz bitte nicht die mysql-Extension. Ich weiß, in vielen Tutorials wird davon erzählt, aber sie ist
veraltet, bei der kleinsten Unachtsamkeit extrem
unsicher und sowieso
deprecated bzw. mit PHP7
entfernt.
Tu dir und jedem, der nochmal mit dem Code arbeiten muss einen Gefallen und arbeite mit mysqli oder PDO. Beides kann und sollte man objektorientiert nutzen, mysqli kann man aber auch prozedural verwenden (wie du mysql verwendet hast). Der Umstieg ist fast überall ziemlich simpel: Einfach ein "i" an das mysql hängen. Es gibt ein paar Punkte die du beachten musst, schau dafür einfach in die Dokumentation - da ist alles unglaublich gut erklärt. Aber benutz keinesfalls mysql.
[src=php]mysql_select_db('verfolgung') or die(mysql_error());[/src]
Wieder: Kein "or die()". Soll auch das letzte mal gewesen sein, dass ich das anbringe. An allen anderen Stellen bitte auch fixen.
[src=php]echo '<table>';
echo '<tr>';
echo '<th>Auftragsnummer</th>';
echo '<th>Bestellnummer</th>';
echo '<th>Rechnungsadresse</th>';
echo '<th>Lieferadresse</th>';
echo '<th>Motorkennbuchstabe</th>';
echo '<th>Postleitzahl</th>';
echo '<th>Zustellungszeitraum ca.</th>'
echo '</tr>';[/src]
Nur als Tipp: Ich würde an der Stelle einfach die PHP-Tags schließen, die Tabelle hinschreiben und wieder öffnen. Ist schneller und einfacher.
[src=php]while(fetch = mysql_fetch_assoc($query))
echo '<tr>';
echo '<td>' . $fetch['auftragsnummer'] . '</td>';
echo '<td>' . $fetch['bestellnummer'] . '</td>';
echo '<td>' . $fetch['rechnungsadresse'] . '</td>';
echo '<td>' . $fetch['lieferadresse'] . '</td>';
echo '<td>' . $fetch['motorkennbuchstabe'] . '</td>';
echo '<td>' . $fetch['postleitzahl'] . '</td>';
echo '<td>' . $fetch['zustellungszeitraum'] . '</td>';
echo '</tr>';
)[/src]
Hier treten vermutlich die meisten deiner Probleme auf. Es gibt mehrere Probleme: Einerseits fehlt bei "fetch" das Dollar-Zeichen, sodass es als Konstante angenommen wird. Ich vermute mal dass eure Serverumgebung relativ alt ist, da sie dich nicht anschreit wegen mysql - sie wird also auch noch nicht automatisch $fetch annehmen.
Dann ist die while-Struktur falsch. Nach der Bedingungsklammer fehlt nämlich der Codeblock, der durch geschweifte Klammern angezeigt wird.
So ist es richtig (bis auf mysql):
[src=php]while($fetch = mysql_fetch_assoc($query)) {
echo '<tr>';
echo '<td>' . $fetch['auftragsnummer'] . '</td>';
echo '<td>' . $fetch['bestellnummer'] . '</td>';
echo '<td>' . $fetch['rechnungsadresse'] . '</td>';
echo '<td>' . $fetch['lieferadresse'] . '</td>';
echo '<td>' . $fetch['motorkennbuchstabe'] . '</td>';
echo '<td>' . $fetch['postleitzahl'] . '</td>';
echo '<td>' . $fetch['zustellungszeitraum'] . '</td>';
echo '</tr>';
}[/src]
Übrigens, eine Alternative für das Templating ist "<?=". Das ist dasselbe wie "<?php echo". Spart viel Boilerplate und Escaping:
[src=php]<tr>
<td><?= $fetch['auftragsnummer'] ?></td>
<td><?= $fetch['bestellnummer'] ?></td>
<td><?= $fetch['rechnungsadresse'] ?></td>
<td><?= $fetch['lieferadresse'] ?></td>
<td><?= $fetch['motorkennbuchstabe'] ?></td>
<td><?= $fetch['postleitzahl'] ?></td>
<td><?= $fetch['zustellungszeitraum'] ?></td>
</tr>[/src]
Insgesamt würde ich es eher so schreiben (keine Ahnung ob es so funktioniert, denke aber schon):
[src=php]<html>
<head>
<title>Motorenversand Verfolgung</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Ausgabe ihrer Anfrage</h1>
<table>
<?php
$error = "";
$mysqli = new mysqli("Serveradresse", "sendung", "Passwort", "verfolgung");
if($mysqli->connect_errno) {
$error = $mysqli->connect_errno;
}
if($error === "") {
$result = $mysqli->query("SELECT * FROM sendungen");
while($fetch = $result->fetch_assoc()) {
?>
<tr>
<td><?= $fetch['auftragsnummer'] ?></td>
<td><?= $fetch['bestellnummer'] ?></td>
<td><?= $fetch['rechnungsadresse'] ?></td>
<td><?= $fetch['lieferadresse'] ?></td>
<td><?= $fetch['motorkennbuchstabe'] ?></td>
<td><?= $fetch['postleitzahl'] ?></td>
<td><?= $fetch['zustellungszeitraum'] ?></td>
</tr>
<?php
}
$mysqli->close();
?>
</table>
<?php } else { ?>
<h1>Es trat ein Fehler auf!</h1>
<?php } ?>
</body>
</html>[/src]