gelöscht und wieder neu angelegt

quidnovi

Erfahrenes Mitglied
Hi @ all,

habe ein Script, das automatisch Daten aus einer DB ausliest. Mit einem Button kreiere ich dann ein .csv File, das in einen Ordner abgelegt wird.

Wenn nun dieses File kreiert ist, erscheint auf der gleichen Seite der Name dieses .csv Files.
Nun kann man auf Klick dieses File downloaden und mit einem weiteren Button dieses löschen.

Die Löschung wird auch durchgeführt, aber auch wieder neu angelegt, wenn der Browser das aufrufende File wieder öffnet.

Der genaue Ablauf in Stichworten:
Login->Script das die Daten ausliest zum download und löschen->Skript das das ausgewählte File löscht->Rückkehr auf das auf das aufrufende Skript.

Ich arbeite mit Sessions. Ich denke dass es damit zu tun hat, denn wenn ich die komplette Session lösche, wird das erzeugte File nicht wieder neu in den Ordner abgelegt, dafür ist aber auch alles dahin, auch das Login - logischerweise.

Könnt Ihr mir bitte einen Tip geben, dieses Problem zu lösen?
 
Kann es sein, dass du die die Löschung nicht richtig von dem erstellen getrennt hast? Poste am besten mal deinen Code.
 
Hi,

boah, das wird jetzt ein wenig viel.
Aber nachdem ich den Fehler nicht eingrenzen kann, muss es wohl sein.

Wohl an denn, das Skript, von dem ich die Textdatei erstellen lasse:
PHP:
<?php

	// $_POST
	include'../include/defineVariablen.inc';

	// Db-Daten einbinden
	include'../include/dbRessourcen.inc';

	//$datum = date('Y-m-d', strtotime('now -1 day'));
	// Ausgabe Datum zur Kontrolle
	//echo $datum."<br />";

	echo "<form action='./a_read.php' method='post'>";
	$abfrage="SELECT DISTINCT datTag FROM ".$abrechnung." WHERE status='1' ORDER BY 'datTag' desc";
	$res = mysql_query($abfrage) or die (mysql_errno() . ": Keine Verbindung zu \"el_rohner_abrechnung\"! " . mysql_error());
?>

	<select name="zeitraumAnfang">
<?
	while ($ausgabe = mysql_fetch_array ($res)){
		echo '<option value="'.$ausgabe['datTag'].'">'.$ausgabe['datTag'].'</option>';
	}

?>
	</select>
<?
	$abfrage="SELECT DISTINCT datTag FROM ".$abrechnung." WHERE status = '1' order by 'datTag' desc";
	$res = mysql_query($abfrage) or die (mysql_errno() . ": Keine Verbindung zu \"el_rohner_abrechnung\"! " . mysql_error());
?>

	<select name="zeitraumEnde">
<?
	while ($ausgabe = mysql_fetch_array ($res)){
		echo '<option value="'.$ausgabe['datTag'].'">'.$ausgabe['datTag'].'</option>';
	}

?>
	</select>
<?
	echo " <input type='submit' name='erzeugen' value='.csv - Datei erzeugen'></td>".
		 "</form>";
?>

Jetzt geht es auf jenes Skript, das dieses .csv File erstellt:
PHP:
<?PHP	

	session_start();

	include'../include/defineVariablen.inc';
	include'../include/dbRessourcen.inc';

	if ($zeitraumAnfang && $zeitraumEnde){

		$von = $zeitraumAnfang;
		$bis = $zeitraumEnde;

		// Einträge aus DB anzeigen
		$sql = "SELECT * FROM ".$abrechnung." WHERE datTag BETWEEN '$von' AND '$bis' ORDER BY 'datTag' asc";
		$res = mysql_query ($sql) or die (mysql_errno() . ": Keine Verbindung zu \"el_rohner_abrechnung\"! " . mysql_error());

		while ($row = mysql_fetch_object($res)){

			$basic 	= ($row->tag.".".$row->monat.".".$row->jahr.";".$row->auftragsNr.";".$row->persNr.";");
			$la  	= ($basic.$row->la.";".str_replace('.', ',', $row->laH) .";".preg_replace("/(\n|\r|\r\n)/", "", $row->arbBericht) .";");
			$la8  	= ($basic.$row->lohn8.";".str_replace('.', ',', $row->kmAbFa) .";");
			$la19 	= ($basic.$row->lohn19.";".$row->diaeten .";");

			$leer = "";

			if($la == 0.0)
				$leer;
			else{
				$csv = $von." bis ".$bis.'.csv';
				$txt = ($la."\r\n");//Zeilenumbruch darstellen: Windows \r\n; Linux \n; Mac \r
				$dest = "./files/";
				$datei = fopen($dest.$csv, 'a+');
				fwrite($datei, $txt);
				fclose($datei);
			}

			if($kmAbFa == 0.0)
				$leer;
			else{
				$csv = $von." bis ".$bis.'.csv';
				$txt = ($la8."\r\n");
				$dest = "./files/";
				$datei = fopen($dest.$csv, 'a+');
				fwrite($datei, $txt);
				fclose($datei);
			}
			if($diaeten == 0.0)
				$leer;
			else{
				$csv = $von." bis ".$bis.'.csv';
				$txt = ($la19."\r\n");
				$dest = "./files/";
				$datei = fopen($dest.$csv, 'a+');
				fwrite($datei, $txt);
				fclose($datei);
			}
		}
		// Status in DB auf 0 setzen
		$statussql = "UPDATE ".$abrechnung." SET status=0 WHERE datTag BETWEEN '$von' AND '$bis'";
		$result = mysql_query ($statussql) or die (mysql_errno() . ": Keine Verbindung zu \"el_rohner_abrechnung\"! " . mysql_error());
	}
?>

Jetzt das Script, das dieses erzeugte File in den Ordner legt:
PHP:
<body link="blue" vlink="red" alink="green" >
        <?

			// $_POST
			//include'../include/defineVariablen.inc';
            $ordner = "./files/";
			//echo "Sie befinden sich in  <font color=\"red\">" . $ordner . "</font><br />";
            $handle = opendir($ordner);//Öffnen des Quellordners
            while ($file = readdir ($handle))//Solange er lesen kann wiederhohlen
            {
                if($file != "./files/")//Ordner darf nicht "." sein
                {
                    $e = strlen($file);
                    $endung = substr($file,$e-4,4);
                    switch($endung){

						case".csv":
							echo "<table width='800' border='0' cellspacing='0' cellpadding='0'>".
							      "<tr>".
							       "<td width='700'>".
							        "<a href='dauni.php?file=" . $ordner . $file . "'>" . $file . "</a><hr size='1' />".
							       "</td>".
							       "<td width='100' align='center'>".
							        "<a href='loeschen.php?file=" . $ordner . $file . "'>File l&ouml;schen</a><hr size='1' />".
							       "</td>".
							      "</tr>".
							      "</table>";
							$_GET['file'];
                        break;

                        default:
							$dot = substr($file,$e-4,1);
                            if($dot == "."){
								}
								else{
									echo "<a href=\"show_one.php?file=" . $file . "\">" . $file . "</a><br>";
									$_POST['file'];
								}
								break;

                    }
                }
            }
            closedir($handle);
        ?>

Im letzten File findet man den Link zum Löschen. Der Code dieses Files:
PHP:
<?php	session_start();

		include'../include/functions.php';

		$filename = $_GET['file'];

		$myfile = $filename;
		if (unlink($myfile)){
			echo "geloescht<br /><br /><a href='./a_read.php'>zur&uuml;ck</a>";
		}
		else
			echo "konnte nicht gel&ouml;scht werden<br /><br /><a href='./a_read.php'>zur&uuml;ck</a>";

?>

So, jetzt wird dieses File auch aus dem Ordner gelöscht. Wenn ich nun auf das erste File zurückgehe, habe ich Anfangs die Funktion "loescheWerte();" eingefügt.

Der Code:
PHP:
function loescheWerte(){
		if (isset($_SESSION['tag']))
			unset($_SESSION['tag']);
		if (isset($_SESSION['monat']))
			unset($_SESSION['monat']);
		if (isset($_SESSION['jahr']))
			unset($_SESSION['jahr']);
		if (isset($_SESSION['dat']))
			unset($_SESSION['dat']);
		if (isset($_SESSION['datTag']))
			unset($_SESSION['datTag']);
		if (isset($_SESSION['vm']))
			unset($_SESSION['vm']);
		if (isset($_SESSION['nm_1']))
			unset($_SESSION['nm_1']);
		if (isset($_SESSION['nm_2']))
			unset($_SESSION['nm_2']);
		if (isset($_SESSION['nm_3']))
			unset($_SESSION['nm_3']);
		if (isset($_SESSION['beginV']))
			unset($_SESSION['beginV']);
		if (isset($_SESSION['endV']))
			unset($_SESSION['endV']);
		if (isset($_SESSION['beginN_1']))
			unset($_SESSION['beginN_1']);
		if (isset($_SESSION['endN_1']))
			unset($_SESSION['endN_1']);
		if (isset($_SESSION['beginN_2']))
			unset($_SESSION['beginN_2']);
		if (isset($_SESSION['endN_2']))
			unset($_SESSION['endN_2']);
		if (isset($_SESSION['beginN_3']))
			unset($_SESSION['beginN_3']);
		if (isset($_SESSION['endN_3']))
			unset($_SESSION['endN_3']);
		if (isset($_SESSION['gesamtV']))
			unset($_SESSION['gesamtV']);
		if (isset($_SESSION['gesamtN']))
			unset($_SESSION['gesamtN']);
		if (isset($_SESSION['noLa1V']))
			unset($_SESSION['noLa1V']);
		if (isset($_SESSION['noLa1N']))
			unset($_SESSION['noLa1N']);
		if (isset($_SESSION['auftragsNr']))
			unset($_SESSION['auftragsNr']);
		if (isset($_SESSION['arbBericht']))
			unset($_SESSION['arbBericht']);
		if (isset($_SESSION['diaeten']))
			unset($_SESSION['diaeten']);
		if (isset($_SESSION['kmAbFa']))
			unset($_SESSION['kmAbFa']);
		if (isset($_SESSION['id']))
			unset($_SESSION['id']);
		if (isset($_SESSION['auswahl']))
			unset($_SESSION['auswahl']);
		if (isset($_SESSION['la1']))
			unset($_SESSION['la1']);
		if (isset($_SESSION['la2']))
			unset($_SESSION['la2']);
		if (isset($_SESSION['la3']))
			unset($_SESSION['la3']);
		if (isset($_SESSION['la8']))
			unset($_SESSION['la8']);
		if (isset($_SESSION['la9']))
			unset($_SESSION['la9']);
		if (isset($_SESSION['la12']))
			unset($_SESSION['la12']);
		if (isset($_SESSION['la13']))
			unset($_SESSION['la13']);
		if (isset($_SESSION['la19']))
			unset($_SESSION['la19']);
		if (isset($_SESSION['la29']))
			unset($_SESSION['la29']);
		if (isset($_SESSION['zeitraumAnfang']))
			unset($_SESSION['zeitraumAnfang']);
		if (isset($_SESSION['zeitraumEnde']))
			unset($_SESSION['zeitraumEnde']);
		if (isset($_SESSION['datum']))
			unset($_SESSION['datum']);
		if (isset($_SESSION['filename']))
			unset($_SESSION['filename']);
	}

Ich vermutete, dass ich der Wert der Var "zeitraumAnfang" und "zeitraumEnde" zu löschen sei, weil dieser ja das File in den Ordner legt - isses aber nit.

Habe schon sehr viel ausprobiert, leider ohne Erfolg.

Bitte um Hilfe, danke
 
spät, aber doch!

PHP:
<?php	session_start();

		include'../include/functions.php';

		$filename = $_GET['file'];

		$_SESSION['myfile'] = $filename;
		if (@unlink($_SESSION['myfile'])){
			echo "Das File wurde geloescht<br /><br /><a href='./a_read.php'>zur&uuml;ck</a>";
			unset($_SESSION['zeitraumAnfang']);
			unset($_SESSION['zeitraumEnde']);
		}
		else{
			echo "Das File konnte nicht gel&ouml;scht werden<br /><br /><a href='./a_read.php'>zur&uuml;ck</a>";
		}
?>

Damit wird das File gelöscht.

Danke für Eure Hilfe
 
Zurück