WinFuture-Forum.de: Einzelne Zeile In Textdatei ändern - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Einzelne Zeile In Textdatei ändern


#1 Mitglied ist offline   cpuburner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 72
  • Beigetreten: 02. Mai 05
  • Reputation: 0
  • Wohnort:Niederschlettenbach

geschrieben 04. September 2005 - 11:00

hallo,
in einer textdatei speichern, woher die leute auf meine seite gekommen sind.
also so:

homepage|anzahl|letzte ip
homepage|anzahl|letzte ip
usw.

$herkunft = $_SERVER['HTTP_REFERER'];
preg_match("/^(http:\/\/)?([^\/]+)/i",$herkunft, $treffer);
$woher = $treffer[2];
if(!($woher=="eigene seite" || $woher==""))
{
$dn = "herkunft.txt";
$woherzahl = file($dn);
$x = 0;
while($x<count($woherzahl)) 
{
$such = explode("|",$woherzahl[$x]); 
if($woher == $such[0]){
$dz = fopen($dn,"w");
fwrite($dz,"$schreib|".($such[1] + 1)."".chr(13).chr(10));
fclose($dz);}

$x++;
}
}


soweit hab ich das jetzt hinbekommen, doch jetzt haperts etwas.
wenn der eintrag nicht gefunden wird, dann soll er angelegt werden.
und wenn er vorhanden ist, dann soll nur diese eine zeile geändert werden.

hoffe ihr könnt mir helfen.

DANKE im vorraus
0

Anzeige



#2 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 04. September 2005 - 11:37

hmmm...musst du wirklich textdateien verwenden, oder kannst du vlt mysql verwenden? weil das wäre einfacher
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#3 Mitglied ist offline   cpuburner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 72
  • Beigetreten: 02. Mai 05
  • Reputation: 0
  • Wohnort:Niederschlettenbach

geschrieben 04. September 2005 - 13:02

mag zwar sein, dass es mit mysql einfacher ist, aber mir gehts darum, dass ich schon alles in textdateien hab (gästebuch, counter, usw.) und jetzt nich noch mit mysql anfangen will

das problem is ja eigentlich nur, dass ich nicht weiss, wie ich das machen soll, dass der nur die eine zeile ändert
0

#4 Mitglied ist offline   knogger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 85
  • Beigetreten: 13. Mai 05
  • Reputation: 0

geschrieben 04. September 2005 - 13:46

hier mein vorschlag:

function zeile_aendern($datei,$zeile,$text)
{
	$inhalt = file($datei);
	$inhalt[$zeile] = $text;
	$fh = fopen($datei,'w');
	flock($fh,2);
	if(fwrite($fh,implode('',$inhalt)))
  echo 'Abschnitt erfolgreich abgeändert!!';
	else echo 'Ein Fehler ist aufgetreten.';
	flock($fh,3);
	fclose($fh);
}


meine funktion benutzt du dann so:

zeile_aendern('dateiname.txt',$diezeilennummer,'text den du durch den ursprünglichen ersetzen möchtest');


vielleicht gibts da noch ne bessere lösung aber ich machs so
0

#5 Mitglied ist offline   cpuburner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 72
  • Beigetreten: 02. Mai 05
  • Reputation: 0
  • Wohnort:Niederschlettenbach

geschrieben 04. September 2005 - 18:37

danke knogger,
es geht jetzt, dass die zeile geändert wird, aber wie kann ich jetzt, wenn es den eintrag noch nicht gibt, machen damit ein neuer gemacht wird.

EDIT:
hat geklappt, aber trotzdem danke an alle

$herkunft = $_SERVER['HTTP_REFERER'];
preg_match("/^(http:\/\/)?([^\/]+)/i",$herkunft, $treffer);
$woher = $treffer[2];
if(!($woher=="eigene seite" || $woher==""))
{
$datei = 'txt/herkunft.txt';
$dateiinhalt = file($datei);
$x = 0;
while($x<count($dateiinhalt)) 
{
$such = explode("|",$dateiinhalt[$x]);
list($suche1,$suche2) = $such;
if($woher==$suche1)
zeile_aendern($datei,$x,''.$suche1.'|'.($suche2 + 1).'
');
else{
$hlg = ($hlg + 1);
}
$x++;
}
if($hlg==count($dateiinhalt)){
$dz=fopen($datei,"a");
fputs($dz,"$woher|1".chr(13).chr(10));
fclose($dz);}
}

Dieser Beitrag wurde von cpuburner bearbeitet: 04. September 2005 - 19:50

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0