Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Datensätze in Textdatei speichern

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

ich habe folgendes Problem:

Ich möchte Daten (eine Fußballtabelle) in eine Textdatei speichern. Bisher habe ich das so gelöst, dass ich einfach 16 Textdateien habe, und in jeder ein Verein gespeichert ist. In dieser Art:

Eingabe:

$fd = fopen ("platz1.dat", "w+");
fwrite ($fd, $name_1);
fclose ($fd);[/PHP]

[b]Ausgabe:[/b]

[PHP]$fd = fopen("platz1.dat","r");
while (!feof($fd)) {
$buffer = fgets($fd,4096);
echo $buffer;
}
fclose($fd);

Und das habe ich eben 16x durchgeführt. Geht das auch das ich alle 16 Mannschaften in eine Textdatei unterbringe, und irgendwie dem Browser über einen Befehl sage, dass er in der Reihe 1 die erste Zeile der Textdatei auslesen soll, in Reihe 2 dann die 2. Zeile?

Die bisherige Tabelle findet Ihr unter TuS Hackenheim

Danke und Gruß,

MCT

gehe ich recht in der annahme, das bei dir aktuelle jede platzierung in der Tabelle eine Mannschaft darstellt und in jedem file nicht mehr steht, als der Mannschaftsname und die Punkte?

Ich gehe davon aus, das du PHP verwendest?!

hm folgender Aufbau:

tabelle.txt


1. Mannschaft

2. Mannschaft

3. Mannschaft

4. Mannschaft

.

.

.

16. Mannschaft

dann einfach eine function bauen

function getTeam( $Platzierung) {

   // alle zeilen aus der datei in ein array einlesen und nach punkten sortieren

  // entsprechende Teamdaten vllt auch als Array zurückgeben?!

  return $teamname;

}


function getTable() {

  echo "<table>"

  for( $i = 1; $i <= 16; $i++) {

     echo "<tr>";

     echo "<td>" .getTeam( $i). "</td>";

     echo "</tr>";

  }

  echo "</table>"

}

falls du mehr daten zu jedem team speichern willst, musst du dir halt einen "DatenTrenner" z.b. "||" wählen und damit dann die Daten der Mannschaft einfach hinten anhängen z.b. tabelle.txt

FC Bayern||13

Eintracht||15

.

.

.

Duisburg||12

Ich mache es noch eine Stufe primitiver, ich habe 16 Textdateien mit jeweils einem Mannschaftsnamen und 16 Dateien mit den Punkten *grins*

Nein ich bin nicht verrückt, nur mehr konnte ich in PHP nicht :-).

Wie kann ich denn einzelne Zeilen aus der *.txt Datei auslesen?

Ciao,

Timm

Hi,

also ich weiß jetzt wie man Daten aus einer Textdatei zeilenweise ausliest:


<?
$dateiarray=file("text.txt");
echo $dateiarray[0];
echo $dateiarray[1];
?>
[/PHP]

Nun habe ich aber noch 2 Fragen:

1. Wie lese ich z.B. mit einem normalen input Feld einen Datensatz ein, und er fügt Ihn z.B. in der 5. Zeile ein, das ganze soll ja später mal ein Tabellenskript sein, das auslesen klappt ja schonmal, aber mir fällt keine gute Lösung für die Eingabe ein?!

2. Die Frage stelle ich doch erst später ...

Ich verzweifel langsam an dem Ding :(:(

Gruß,

Timm

da musst du mit nem formular arbeiten.

schau dich ma nach tutorials um.

das geht immer gleich

mehr infos gibts am Montag, falls du noch nicht weiter gekommen bist

Ich habe nunmehr folgendes Problem. Ich möchte diese Prozedur in eine for Schleife packen:


//Mannschaft 2
$buffer = "$mannschaft2\n";
$fd = fopen("../../../verein/mannschaften/1mannschaft/tabelle/mannschaften.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);

//Mannschaft 3
$buffer = "$mannschaft3\n";
$fd = fopen("../../../verein/mannschaften/1mannschaft/tabelle/mannschaften.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
[/PHP]

hierfür habe ich dann folgenden Ansatz:

[PHP]
for ($i=2; $i<=16; $i++)
{
$buffer = "$mannschaft$i\n";
$fd = fopen("../../../verein/mannschaften/1mannschaft/tabelle/mannschaften.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);

Nur leider funktionniert das so nicht, in C++ hätte es so funktioniert, was muss ich ändern damit es klappt?

Gruß,

MCT

wie siehts aus, wenn du alle daten in eine Datei reinpackst?

z.b.

<Mannschaftsname>||<Punkte>

.

.

.

dann würde ich einfach das komplette File in ein array auslesen, nach punkte sortieren und danach in einer schleife ausgeben

soviel Kenntnisse habe ich aber dann auch wieder nicht, um das so zu realisieren, deshalb tendiere ich eher zur oberen Lösung.

Gruß,

MCT

soviel Kenntnisse habe ich aber dann auch wieder nicht, um das so zu realisieren, deshalb tendiere ich eher zur oberen Lösung.

Gruß,

MCT

wart ma ab, ich mach schnell nen ansatz inner mittagspause!

du bist meine Rettung :-)

so:

ranking.php


<?php

function getTeamData() {
$aTeamData = array();
$aData = file("teams.txt");

foreach( $aData as $value) {
$aTeamAttr = explode( "||", trim( $value));
// TeamId Team-Name Team-Punkte
$aTeamData[ $aTeamAttr[0]] = array( $aTeamAttr[1], $aTeamAttr[2]);
}

return $aTeamData;
}

function getSortedTeamData() {
return ksort( getTeamData());
}

function getTeamPoints( $aTeamData, $iTeamId) {
return $aTeamData[ $iTeamId][1];
}

function setTeamPoints( &$aTeamData, $iTeamId, $iPoints) {
$aTeamData[ $iTeamId][1] = $iPoints;
}

function getTeamName( $aTeamData, $iTeamId) {
return $aTeamData[ $iTeamId][0];
}

function getTeamName( &$aTeamData, $iTeamId, $sTeamName) {
$aTeamData[ $iTeamId][0] = $sTeamName;
}

function printRankings( $aTeamData) {
echo '<table border="1">';
echo '<tr>';
echo '<th>Mannschaft</th>';
echo '<th>Punkte</th>';
echo '</tr>';

foreach( $aTeamData as $iTeamId => $aTeamAttr) {
echo '<tr>';
echo '<td>'. $aTeamAttr[0] .'</td>';
echo '<td>'. $aTeamAttr[1] .'</td>';
echo '</tr>';
}

echo '</table>';
}
?>
[/PHP]

Vorraussetzung dafür:

eine Datei mit dem Namen "teams.txt"

mit folgendem aufbau:

<TeamId>||<TeamName>||<TeamPunkte>

TeamId, TeamName und TeamPunkte dürfen dann natürlich keine "||" enthalten.

Das Trennzeichen kannst du natürlich auch ändern!

verusch ma ob du nu weiterkommst

Alles ungetestet!!

Beispiel seite könnte dann so aussehen:

table.php

[PHP]
include( 'ranking.php');

$aTeamData = getSortedTeamData();
printRankings( $aTeamData);

################

Hab grad was in nem anderen Thread noch gesehen:

es gibt einen "ligamanager online". mit dem kannst du eine liga verwalten.

einfach alle mannschaften eintragen, dann immer die aktellen ergebnisse eintragen und schon rechnet das skript alle möglichen tabellen, statistiken und fieberkurven aus.

ist zwar nicht das wonach du suchst, aber vielleicht kannst du sowas auch gebrauchen.

ps: den "ligamanger online" gibt es auch als normales programm. dieses kann dann bilder und html files exportieren... heißt dann "ligamanager 98"

Habe aber noch allgemein eine Frage, und zwar was stimmt denn hier nicht:


for ($i=2; $i<=16; $i++)
{
$buffer = "$mannschaft$i\n";
$fd = fopen("../../../verein/mannschaften/1mannschaft/tabelle/mannschaften.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
}
[/PHP]

Es geht nur oben um das Variablenvirvar "$mannschaft$i". Brauche solche Dinge noch für mehrere Sachen, kannst du mir eventuell sagen was hier falsch ist?

Ciao und 1000 Dank,

MCT

Habe aber noch allgemein eine Frage, und zwar was stimmt denn hier nicht:


for ($i=2; $i<=16; $i++)
{
$buffer = "$mannschaft$i\n";
$fd = fopen("../../../verein/mannschaften/1mannschaft/tabelle/mannschaften.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
}
[/PHP]

Es geht nur oben um das Variablenvirvar "$mannschaft$i". Brauche solche Dinge noch für mehrere Sachen, kannst du mir eventuell sagen was hier falsch ist?

Ciao und 1000 Dank,

MCT

versuch ma so:

[PHP]
$buffer = $mannschaft . $i ."\n";

So meinte ich das nicht,

in diesem Fall werden In einem Formular z.B. in 16 Feldern die Namen von 1 bis 16 eingegeben:

mannschaft1, mannschaft2, etc.

Das soll dann in diesem Skript verarbeitet werden und in eine Text Datei geschrieben werden.

Es geht mir ja nur ums Prinzip, das er erst die Variable mannschaft1 in die txt Datei speichert dann die mannschaft2, usw.

dies habe ich dann versucht so zu lösen:


for ($i=2; $i<=16; $i++)
{
$buffer = "$mannschaft$i\n"; //Die Variable $i soll einfach die mannschaftsvariable beeinflussen
$fd = fopen("../../../verein/mannschaften/1mannschaft/tabelle/mannschaften.dat","a");
fwrite ($fd, $buffer);
fclose ($fd);
}
[/PHP]

Ich hoffe du hast mein Problem verstanden, ist schwer in Worte zu fassen oder ich kann mich einfach net ausdrücken ;) .

Gruß,

MCT

inwiefern soll die Varibale $i die Varibale $Mannschaft beeinflussen?

Meinst du als Array Index?

Zum Bleifstift:

Variable mannschaft1, die vorher im Formular eingelesen wurde, wird mit dem for Schleifen index $i aufgerufen, wenn also $i=1 dann soll die Variable mannschaft1 verarbeitet werden, bei $i=2 soll mannschaft2 verarbeitet werden, deshalb auch meine Überlegung:

$buffer = "$mannschaft$i\n";

Zum Bleifstift:

Variable mannschaft1, die vorher im Formular eingelesen wurde, wird mit dem for Schleifen index $i aufgerufen, wenn also $i=1 dann soll die Variable mannschaft1 verarbeitet werden, bei $i=2 soll mannschaft2 verarbeitet werden, deshalb auch meine Überlegung:

$buffer = "$mannschaft$i\n";

das könntest du wie folgt lösen:

eval( '$buffer = '.$mannschaft . $i .';');

aber das ist nicht so schön.

Du könntest von vorne herrein deine Mannschaften aus dem Formular als Array übergeben.

z.b.


<input type='text' name='mannschaft[1]'/>

<input type='text' name='mannschaft[2]'/>

<input type='text' name='mannschaft[3]'/>

cool geht das auch, jawoll dann habe ich schon die Lösung für mein nächstes Problem.

Vielen Dank mein lieber du hast mir sehr geholfen !

Gruß und noch frohes schaffen,

MCT

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.