Löschen funtioniert nicht - Dateifunktion

Tucker

Erfahrenes Mitglied
Hi,

mein Gästebuch ist nun endlich online, soweit habe ich es geschafft. Allerdings hör ich trotzdem nicht auf zu arbeiten, um das Ding noch benutzerfreundlicher undumfangreicher zumachen. Zur Zeit brüte ich vor einem Adminbereich.
Folgenes Script habe ich zusammen gebastelt, in derHoffnung, dass es mir gewählte Einträge löscht.

PHP:
<?php 
$eintraege=file('gb2.txt');
for ($i=0; $i<count($eintrage); $i++)
{
	if ($i!=$eingabe[$i])
	{
		$fp="gb2.txt";
		$modus="w";
		fopen($fp, $modus);
		fputs($fp, $eintaege[$i]."\n");
		fclose($fp);
	}
	else
	{}
}
echo "";?>

Kann mir schon denken, woran der Fehler liegt. Liegt bestimmt ander Übermittlung derCheckboxen- Values.

Das folgende Script liefert mir Checkboxen mit jeweils einem Eintrag daneben.
PHP:
echo "<form method=\"post\" action=\"delete.php\">";
		echo "<table border=\"1\" cellspacing=\"1\">";
		$eintraege=file('gb2.txt');
		for ($i=0; $i<count($eintraege); $i++)
		{
			$daten=explode("|*|", $eintraege[$i]);
			echo "<tr>";
			echo "<td>";
			echo "<input type=\"checkbox\" name=\"eingabe[".$i."]\" value=\"".$i."\">";
			echo "</td>";
			echo "<td>";
			echo "Name:&nbsp;".$daten[0]."\n";
			echo "Datum:&nbsp;".$daten[1]."\n\n";
			echo "Nachricht:&nbsp;".$daten[4];
			echo "</td>";
			echo "</tr>";
		}
		echo "<tr><td><input type=\"submit\"></td></tr>";
		echo "</form>";

Was muss ich in diesem Script abändern, damit es mir im nächsten,also im oberen, auch die ausgewählten EInträge löscht?


Vielen Dank im Vorraus
 
Für sowas würde ich, glaube ich, ne Datenbank nehmen .. ansonsten hast du immer das Problem, dass du die Datensätze nicht auseinander halten kannst in der Datei .. Du müsstets irgend ne ID vergeben, die einen Datensatz identifiziert .. denke ich ..
 
Die ID entspricht der Zeilennummer. Jede Zeile entspricht einem Eintrag mit allenDaten, sprich Datum,Name, E- Mail ... Diese einzelnen Datensätze werden druch |*| getrennt. Somit bruahct man keine extra ID
 
Mir ist grad der erste Fehler eingefallen beim duschen. Als ich das Duschbad nahm und es leer war, stellte ich es wieder hin. Nach ein paar Minuten, völlig in Gedanken, nahm iches wieder und mir viel ein, ups, es ist doch leer. Nichts anderes passiert bei jedem Schleifendurchlaufim zweiten Script. Bi jedem Durchlauf leert es die Datei und schreibt eine Zeile rein, die es im nächsten Durchlauf wieder löscht.
Richtig muss das Script die folgende Syntax haben:
PHP:
<?php 
$eintraege=file('gb2.txt'); 
        $fp="gb2.txt"; 
        $modus="w"; 
        fopen($fp, $modus); 
for ($i=0; $i<count($eintrage); $i++) 
{ 
    if ($i!=$eingabe[$i]) 
    { 

        fputs($fp, $eintaege[$i]."\n"); 
            } 
    else 
    {} 
} 
fclose($fp); 
?>

Allerdings liegt das "nichtlöschen" nicht am behobenen Fehler, da es ja gar nichts gelöscht hat.
 
Kann mir keiner helfen? Weiß keiner, wie ich das Script ändern muss/sollte, damit alles funktioniert?

Bitte helft mir doch!

edit: Kann mir wirklich keiner helfen? Das Thema rutscht schon wieder immer weiter runter und niemand gibt mir eine Antwort. :(
 
Zuletzt bearbeitet:
Anfangs kann es nich schaden, wenn du dich auf eine Art einigst die Variable $eintraege, $eintrage, $eintaege zu benennen ... Dann musst du halt mit echo immer mal Prüfausgaben machen .. was überhaupt ankommt oder gelöscht wird .. Im Prinzip kannst du doch einfach an das Delete Script die erste Nummer des Array Feldes übergeben, welches gelöscht werden soll, die übrigen liessen sich daraus errechnen und für diese Werte wird halt die fputs() Schleife übersprungen ..

PHP:
<?php
$eintraege=file('gb2.txt');
        $fp="gb2.txt";
        $modus="w";
        fopen($fp, $modus);
for ($i=0; $i<count($eintrage); $i++)
{
    if ($i!=$eingabe[$i])
    {

        fputs($fp, $eintaege[$i]."\n");
            }
    else
    {}
}
fclose($fp);
?>
 
Danke schon mal für deine Hilfe, aber an diesem Script liegt der Fehler nicht. Es liegt an dem anderen. Und dort liegt es an der Checkboxbezeichnung.

Mal eine Frage zu den Checkboxen: Wenn ich für mehrere Checkboxen den selben Namen wähle mit jeweils unterschiedlichem Value und dies an PHP weitergebe, werden diese Values der CHeckboxen in ein Array umgewandelt?

Mal ein Beispiel, um die Frage zu verständlichen:
Folgendes EingabeScript:
Code:
<form ...>
<input type="checkbox" name="checkbox" value="0">
<input type="checkbox" name="checkbox" value="1">
<input type="checkbox" name="checkbox" value="2">
<input type="checkbox" name="checkbox" value="3">
...
</form>
Die daraus resultierenden Eingaben gebe ich nun an das PHP- Script weiter.

Ist es möglich nun in diesem Script die Values als indiziertes Array zu übernehmen?
In diesem Stil:
PHP:
<?php
$checkbox;  //ist ein array
/* und würde, wenn es möglich ist dann aufgelistet so aussehen:
$checkbox[0]=0;
$checkbox[1]=1;
$checkbox[2]=2;
$checkbox[3]=3;
...*/
?>


Hoffe ihr versteht wie ich das meine.
 
Nee, ich glaub die werden einfach überschrieben vom jeweils letzten Wert . Ich würde es einfach über Radio Buttons machen .. dann is sicher gestellt , das nur ein Wert übergeben wird .. und du brauchst auch nur einen Namen ..
 
Ich habe es jetzt ganz anders probiert, allerdings funtioniert es so leider auch nicht.

Ich habe versucht, mit einem Link (per GET) die zu Löschende Zeilennummer weiter zu geben. Allerdings wird beimir trotzdemnich twirklich was gelöscht.

Der Linksieht dann immer wiefolgt aus:
Code:
index2.php?aktion=delete&eintrag=<!-- Nummer des Eintrags -->

Das Script, was diesen Link auswerten soll sieht so aus:
PHP:
<?php
if ($aktion)
{
	if ($aktion == "delete")
	{
		$lines=file("gb2.txt");
		$file="gb2.txt";
		$mode="w";
		fopen($file, $mode);
		for ($log=0; $log<count($lines); $log++)
			{
				if ($eintrag != $log)
					{
						fputs($file, $lines[$log]."\n");
					}
				else 
					{
					}
			}
		fclose($file);
	}
}
 ?>


Woliegt mein Fehler, dass es mir nicht mal eine einzige beliebige Zeile löscht, bzw, eine nicht wieder in die Datei schreibt?!
:mad:
 
Zuletzt bearbeitet:
Zurück