Hallo Leute.
Ich habe das PHP-Skript für eigene Zwecke modifiziert und möchte eine Änderung bewerkstelligen, doch diese überfordert mich.
Ich habe die Textdatei um einige weitere Einträge ergänzt, sowie den Code soweit geändert, daß bei fehlendem Inhalt eines Tabelleneintrags sowohl diese als auch die zugehörige Überschrift aufgeblendet werden. Desweiteren wird im Code, wo $result[14] eingetragen wird, dieser Eintrag direkt als Link zu DHL-Tracking ausgeführt.
Die Änderung die mich überfordert ist der Eintrag des Aktualisierungsdatums der Textdatei.
Zur Zeit füge ich diese hinter jede einzelne Zeile ein. Somit habe ich mehrere tausende redundante Einträge.
Ich möchte dies soweit ändern, daß das Aktualisierungsdatum als Kopfzeile, also als erste Zeile in der Textdatei steht.
Zur Zeit sieht meine Textdatei folgendermaßen aus:
012345=WDB30048511012345|Marke1|Modell1|Farbe1|Destination1|Bereit date1|Kai 1337 - 23.06.2017|Schiffname|24.06.2017|Montag 25.06.2017|Monday 25.06.2017|lundi 25.06.2017|BL 26.06.2017|DHL123456|23.06.2017 - 03:19:23 CET
123456=WDB30048511123456|||bordeaux1|Lome1|22.06.2017|Kai 1337 - 23.06.2017|Shipname1|24.06.2017|Montag 25.06.2017|Monday 25.06.2017|lundi 25.06.2017|BL 26.06.2017|DHL123456|23.06.2017 - 03:19:23 CET
234567=WDB30048511234567|MercedesBenz2|Passenger Bus2|bordeaux2|Lome2|22.06.2017|Kai 1337 - 23.06.2017|Shipname2|24.06.2017|Montag 25.06.2017|Monday 25.06.2017|lundi 25.06.2017|BL 26.06.2017|DHL234567|23.06.2017 - 03:19:23 CET
So soll sie in Zukunft aussehen:
23.06.2017 - 03:19:23 CET
012345=WDB30048511012345|Marke1|Modell1|Farbe1|Destination1|Bereit date1|Kai 1337 - 23.06.2017|Schiffname|24.06.2017|Montag 25.06.2017|Monday 25.06.2017|lundi 25.06.2017|BL 26.06.2017|DHL123456
123456=WDB30048511123456|||bordeaux1|Lome1|22.06.2017|Kai 1337 - 23.06.2017|Shipname1|24.06.2017|Montag 25.06.2017|Monday 25.06.2017|lundi 25.06.2017|BL 26.06.2017|DHL123456
234567=WDB30048511234567|MercedesBenz2|Passenger Bus2|bordeaux2|Lome2|22.06.2017|Kai 1337 - 23.06.2017|Shipname2|24.06.2017|Montag 25.06.2017|Monday 25.06.2017|lundi 25.06.2017|BL 26.06.2017|DHL234567
Wie man sieht, kommt das Aktualisierungsdatum in Zukunft nur ein einziges Mal vor, im Vergleich zur bisherigen Version, wo das Aktualisierungsdatum in jeder Zeile vorkommt.
Dazu muss das PHP-Skript geändert werden, doch meine Kenntnisse in PHP reichen für eine solch größere Änderung nicht aus.
Hier ist mein Skript und ich werde mich sehr freuen, wenn mir jemand Hinweise gibt, wie ich nur die erste Zeile aus dem parsenden code herausnehmen kann. Es ist also $result[15], welches aus der ersten Zeile gebildet wird.
Hier noch mein modifizierter Code und ein Bild der Ausgabe:
<?php
error_reporting(E_ALL);
/* formular-checks immer bevor das formular ausgegeben wird */
$gefunden = false;
$formularfehler = '';
if(isset($_POST['submitbutton'])){
// formular abgesandt
if(!isset($_POST['statuscode'])or empty($_POST['statuscode'])){
// es wurde kein code eingegeben
$formularfehler = 'Type Chassis#!';
}else{
// es wurde ein code eingegeben
$suchwort = trim($_POST['statuscode']); // trim entfernt u.a. leerzeichen am anfang und ende
$suchwort = strtoupper($suchwort);
// file name festlegen
$filename = 'Tracking/track.txt';
// existiert die datei?
if(!file_exists($filename)){
/* nein, datei nicht gefunden
HIER DEINE FEHLERBEHANDLUNG
*/
}else{
$daten = file($filename); // liest eine datei in ein array (http://de2.php.net/manual/en/function.file.php)
/* jetzt ist der inhalt von 'track.txt' in $daten */
foreach($daten as $str){ // für jede zeile in $daten als (genannt) $str
// temp-ziel-variable (erstmal ein leeres array):
$result = array();
// wir trennen mittels "="
$temp = explode("=", $str);
if(count($temp) < 2){
// hier dann was du brauchst -- fehler meldung? oder ignorieren?
// HIER DEINE FEHLERBEHANDLUNG
// continue bewirkt, dass mit der nächsten zeile weitergemacht wird.
continue;
}
/* $temp[0] stecken wir nun in unsere temp-ziel-variable */
$result[0] = $temp[0]; // "YECXXcc"
$str = $temp[1];
/* jetzt teilen wir via "|" */
$temp = explode("|", $temp[1]);
// $result[0] ist schon (siehe weiter oben) zugewiesen und enthält "YECXX"
// daher machen wir hier mit $result[1] weiter
$result[1] = $temp[0];
$result[2] = $temp[1];
...
$result[14] = $temp[13];
$result[15] = $temp[14];
// Wenn der 1. Eintrag ( 0 ) mit dem Suchwort übereinstimmt
if($result[0] == $suchwort){
// sagen das gefunden wurde
$gefunden = true;
// break beendet hier die foreach() -schleife
break;
}
} // [ENDE] foreach
} // [ENDE] else ($daten war nicht false)
} // [ENDE] else (wenn $_POST['statuscode'] nicht leer war)
} // [ENDE] isset($_POST['submitbutton'])
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta charset="utf-8" />
<title>Trackingsite</title>
<style>
table { width:100%; }
.Meine { text-align: left; font-size:6em; color:#000000; background-color:#ffffff; vertical-align:top; }
.Butt { text-align: left; font-size:3.3em; color:#ffffff; background-color:#2A2100; vertical-align:top; }
.Titel { text-align: left; font-size:4.3em; color:#ffffff; background-color:#2A211C; }
.Titelo { text-align: left; font-size:5em; color:#ffffff; background-color:#EC6A11; }
.Titelos { text-align: left; font-size:5em; color:#EFBC0B; background-color:#2A211C; }
.Inhalt { text-align: left; font-size:5em; color:#000000; background-color:#ffffff; vertical-align:top; }
Rest { text-align: left; font-size:4em; color:#000000; background-color:#ffffff; vertical-align:top; }
Restb { text-align: left; font-size:4em; color:#ffffff; vertical-align:top; }
</style>
</head>
<body bgcolor="#2A211C">
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="application/x-www-form-urlencoded">
<img src='images/logo-africar.png' width='324' height='145' border='0' style='margin-left: 0px; margin-top: 0px;' />
<input class="Meine" type="text" size="6" name="statuscode" /><input class="Butt" type="image" src="images/lupe_tr.png" name="submitbutton" width='145' height='145' value="OK"><br>
<Restb>Type last six numbers of Chassis#</Restb><br>
<?php echo htmlspecialchars($formularfehler); ?>
</form>
<?php
//Wenn etwas gefunden wurde
if($gefunden){
// zur erinnerung: die gefundene zeile steckt in $result
?>
<caption>
<Restb>Results for "<?php echo htmlspecialchars($suchwort); ?>"</Restb>
</caption>
<table>
<thead>
<tr><th class="Titel">Chassis#:</th></tr>
<tr><td class="Inhalt"><b><?php echo htmlspecialchars($result[1]); ?></b></td><tr>
<?php if (isset($result[2]) && $result[2] !== ''): ?>
<tr><th class="Titel">Brand<tr></tr>
<tr><td class="Inhalt"><?php echo htmlspecialchars($result[2]); ?></td></tr>
<?php endif; ?>
...
<?php if (isset($result[9]) && $result[9] !== ''): ?>
<tr><th class="Titel">Estimated date of departure<tr></tr>
<tr><td class="Inhalt"><?php echo htmlspecialchars($result[9]); ?></td></tr>
<?php endif; ?>
<?php if (isset($result[10]) && $result[10] !== ''): ?>
<tr><th class="Titelo">Estimated time for arrival:<tr></tr>
<tr><td class="Titelo"><?php echo htmlspecialchars($result[10]); ?></td></tr>
<tr><td class="Titelo"><?php echo htmlspecialchars($result[11]); ?></td></tr>
<tr><td class="Titelo"><?php echo htmlspecialchars($result[12]); ?></td></tr>
<?php endif; ?>
<?php if (isset($result[13]) && $result[13] !== ''): ?>
<tr><th class="Titel">Date of delivery for Bill of Lading<tr></tr>
<tr><td class="Inhalt"><?php echo htmlspecialchars($result[13]); ?></td></tr>
<?php endif; ?>
<?php if (isset($result[14]) && $result[14] !== ''): ?>
<tr><th class="Titel">Bill of Lading tracking code<tr></tr>
<tr><td class="Inhalt">
<?php echo '<a link rel="parent" href="https://nolp.dhl.de/nextt-online-pub...o?lang=en&idc=' . $result[14] . '&rfn=&extendedSearch=true" target="_blank">' . $result[14] . '</a>'; ?></td></tr>
<?php endif; ?>
<tr><th class="Titel">Database update<tr></tr>
<tr><td class="Inhalt"><?php echo htmlspecialchars($result[15]); ?></td></tr>
<tr><th class="Titel"><img src='images/logo-africar.png' width='864' height='396' border='0' style='margin-left: 0px; margin-top: 0px;' />
<a href="tel:+492022781370">CALL</a>
</tr>
</thead>
</table>
<?php
}
//wenn nichts gefunden wurde oder die Datei nicht geöffnet werden konnte
elseif(isset($_POST['submitbutton']) and $formularfehler == ''){
// die meldung nur anzeigen, wenn die form angesandt wurde und keine $formularfehler vorkamen
echo "No results. Please try again.";
}
?>
</body>
</html>
Alles anzeigen
Am liebsten wäre mir eine Ergänzung des eingestellten Codes, denn meine Kenntnisse sind wirklich vollkommen anfängerhaft, aber auch hilfreiche und nicht zu komplizierte Hinweise sind willkommen.