Zum Inhalt springen

Datensätze in Textdatei speichern


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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"

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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";

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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";

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]'/>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...