elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 16.07.2007, 20:33 Titel:
[PHP] Snippet: Textdatei zeilenweise auslesen |
|
|
|
|
Hab gerade mal Langeweile und da fiel mir ein, dass hier glaub ich noch kein Tutorial existiert, was zumindest ein wenig die Benutzung von Dateien als Speicherort für Daten benutzt. Ich arbeite eigentlich auch nur mit mySQL aber für die Sache, die ich hier benutzt habe war mir mySQL zu umständlich.
Nunja was war mein Problem: Mich nervte es, dass ich auf meinem Apache hier soviele Projekte gleichzeitig hatte und wenn ich die aufrufen musste immer die entsprechende URL raussuchen/eingeben musste. Also hab ich mir nen kleines Script geschrieben. Ich poste es und erkläre danach ein bisschen:
Code: |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>2formmedia Project Switcher</title>
<script language="javascript" type="text/javascript">
function sendlink(){
var wahl=window.document.links.projects.selectedIndex;
if(wahl != "0"){
var link=window.document.links.projects.options[wahl].value;
window.document.location.href=link;
} else{
alert("Bitte wählen Sie ein Projekt aus!");
}
}
</script>
<style type="text/css">
option, select{
color: #A82F00;
font-weight: bold;
}
</style>
</head>
<body bgcolor="#FFFFFF">
<table border="0" align="center" cellpadding="1" cellspacing="1">
<tr><td height="100%" valign="middle">
<table border="0" align="center">
<tr>
<td height="185"></td>
</tr>
<tr><td height="100%"><img src="switcher-logo.jpg" width="222" height="55" alt="" /></td></tr>
<tr>
<td align="center">
<form method="post" name="links" action="index.php">
<select name="projects" onchange="sendlink()">
<option value="0" selected="selected">-- Projekt wählen --</option>
<?
$fp = @fopen("projects.txt", "r") or die ("Kann Projekt-Datensatz nicht lesen!");
while($line = fgets($fp, 1024)){
$data = explode("<=>",$line);
echo "<option value=\"".$data[1]."\">".$data[0]."</option>\n";
}
fclose($fp);
?>
</select>
</form>
</table>
</td></tr>
</table>
</body>
</html>
|
So, dass ist das ganze Script. Das kleine Script ist also in ein ganz normalen HTML-Aufbau eingebunden. Dass Javascript oben ist hier aus dem Forum (http://www.forum.9dots.de/viewtopic.php?t=1687) und bewirkt, dass bei Änderung der Dropdown-Liste im PHP-Script sofort auf die angegebene Datei weitergeleitet wird.
So nun die paar Zeilen PHP-Code:
[url]$fp = @fopen("projects.txt", "r") or die ("Kann Projekt-Datensatz nicht lesen!");[/url] Liest die Textdatei projects.txt ein im Nur-Lesen-Modus.
Code: |
while($line = fgets($fp, 1024)){
$data = explode("<=>",$line);
echo "<option value=\"".$data[1]."\">".$data[0]."</option>\n";
} |
Die while-Schleife liest in der Datei ($fp) solange jeweils eine Zeile aus, bis das Ende der Datei erreicht ist (siehe www.php.net/fgets). In der Variable $line ist jeweils der Inhalt dieser Zeile gespeichert. Mit $data = explode(...) zerlegt man nun die jeweilige Zeile in ein Array mit 2 Elementen. Das Trennzeichen ist hierbei das "<=>".
Das heißt, dass wenn in der txt-Datei eine Zeile folgendermaßen aussehen würde:
Code: | Ich bin<=>total toll |
würde man im neuen array $data einmal das Element Nummer 0 ( Array-Elemente werden durchnummeriert, beginnend bei Null ) mit dem Wert "Ich bin" und einmal das Element 1 mit dem Wert "total toll haben".
Der Echo-Befehl gibt nun einfach nur noch die beiden Array-Elemente innerhalb einer option-Liste aus.
Um unser Beispiel aufzugreifen würde die eine Zeile jetzt folgendermaßen nach dem Parsen aussehen:
Code: | <option value="total toll">Ich bin</option> |
Das wars auch eigentlich schon. Wie gesagt bewirkt dass Javascript, dass bei Änderung der Auswahlliste auch direkt zum value-Wert der Option-Auswahl gesprungen wird. Nun würde uns unser Beispiel mit dem "Ich bin total toll"
natürlich nichts ausser einem Fehler einbringen, also müssen wir unsere projects.txt Datei mit gescheiten Werten füllen.
Beispiel:
Code: |
9dots Forum<=>http://forum.9dots.de
meine neue Seite<=>/neuepage/index.php
meine alte Seite<=>/altepage/
|
So jetzt hab ich genug geschrieben zu diesen paar Zeilen PHP-Code. Ich denke dass Prinzip ist klar und der Zweck, den das Dingen (zumindest bei mir leistet ) auch. Ist ja auch nich so schwer, oder?
Zu guter letzt noch nen Screen wie es aussehen kann (klick |
|