kostenloser Webspace werbefrei: lima-city


file() funktioniert nicht zweimal in einer Datei

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Hallo,
    ich probiere mich gerade an einer möglichket mit einem script eine Newsdatei zu verwalten.

    Diese ist so strukturiert:

    Updates

    News1
    News2
    News3
    ...


    Nun soll man über diese Oberfläche News / Zeilen löschen
    und News / zeilen hinzufügen können.

    Wenn eine Zeile hinzugefügt wird, dann soll Sie immer in der dritten Zeile stehen.

    Mein problem ist nun, dass ich den Befehl file() nur einmal benutzen kann:

    ?>
    <form action="news.php" method="POST">
    <input type="text" size="25" name="news" value="<?php echo date("d").".".date("m").".".date("Y")." "; ?>"><input type="submit" value="Eintragen"><br>
    (Struktur: <?php echo date("d").".".date("m").".".date("Y")." Newstext"; ?>)
    </form>
    <br><br>
    <?php
    
    if($_GET['del']!="") {
    	$dellines = file("../news.txt");
    	foreach($dellines as $dela => $delb) {
    		if($dela != $_GET['del']) {
    			$string.=$delb."";
    		}
    	}
    	unlink("../news.txt");
    	$datei = fopen("../news.txt","w+");
    	fwrite($datei, $string);
    	fclose($datei);
    ?>
    <b>Eintrag gelöscht.<br>
    <a href="news.php">Zurück</a></b>
    <?php
    } elseif($_POST['news']!="") {
    	$newlines = file("../news.txt");
    	foreach($newlines as $newa => $newb) {
    		$string.=$newb."";
    		if($a=="1") {
    			$string.=$_POST['news']."\n";
    		}
    	}
    	unlink("../news.txt");
    	$datei = fopen("../news.txt","w+");
    	fwrite($datei, $string);
    	fclose($datei);
    ?>
    <b>Eintrag hinzugefügt.<br>
    <a href="news.php">Zurück</a></b>
    <?php
    }
    else {
    
    $lines = file("../news.txt");
    echo "<table border=\"1\">";
    foreach($lines as $a => $b) {
    	if($a != "0" && $a != "1") {
    		if($_GET['del']=="" && $_GET['del']!=$a) {
    			echo "<tr><td>".$b."</td><td><a href=\"news.php?del=".$a."\">L&ouml;schen</a></td></tr>\n";
    		}
    	}
    }
    echo"</table>";
    }


    Einen eintrag löschen kann ich, aber wenn ich einen hinzufügen will, dann gibt er zwar "Eintrag hinzugefügt." aus, aber er macht nichts.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    wieso löschst du immer die Datei? Du könntest ja alles in einem Schritt erledigen.
    Ausserdem empfehle ich flock() zu verwenden (-> http://php.net/flock):

    <?php
    $datei = '../news.txt';
    
    if (($fp = fopen($datei,'r+')) !== false) {
      flock($fp,LOCK_EX);
      $data = '';
      while (!feof($fp))
        $data .= fread($fp,1024);
      $data = explode("\n",$data); // evtnl. \r\n durch \n ersetzen
    
      // Daten manipuliren ...
    
      if (rewind($fp))
        fwrite($fp,$data);
    
      flock($fp,LOCK_UN);
      fclose($fp);
    }
    ?>


    (Nicht getestet)

    mfg,
    hr

    Beitrag geändert: 18.7.2007 15:14:53 von heavyraptor
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!