Ein Wert aus einem Array löschen

firstlord18

Erfahrenes Mitglied
Hi,

ich habe ein Array. Ich möchte nurn ein bestimmtes Element aus diesem Element löschen
Ich wollte die über get machen, weil dies für ein Gästebuch sein soll. Also $_GET[id], und $Array[0] hat bei mir ID 1 und $array[1] hat ID2 usw. Wie kann ich nun diese ID rauslöschen
Danke im vorraus
 
danke, aber wie soll ich den denn direkt löschen
ich hab eine textdatei, in welcher alle daten abgespeichert sind, je Zeile ein Eintrag, und diese lese ich per file($file); in ein Array ein, wie soll ich die denn sofort löschen
danke für die schnelle antwort
 
uff, mit filereadern hatte ich nox nicht zu tun. Aber php.net is da immer ganz hilfreich, wenn man etwas noch nicht kennt. Interessant ist nicht nur die Erklärung zu einer Funktion, sondern auch die Basteleien der PHP-Coder, die unter der Erklärung stehen.

Aber nicht immer findet man was, da hilft dann google.de und tadaa, ich habe hier ein Codeschnippsel für dich
PHP:
$datei = fopen("test.txt", "r");
$zahl = 1;
while($zeile = fgets($datei,1024))
{
  $text[$zahl] = $zeile;
  $zahl++;
 }
fclose($datei);

$datei = fopen( "test.txt", "w" );
$anzahl = count($text);
for($zahl=1;$zahl<=$anzahl;$zahl++)
{
  if($zahl != 3)
  {
     fwrite($datei, "$text[$zahl]\n");
  }
}
fclose($datei);
Dieses Script liest die datei und löscht dann in diesem fall zeile Nr.3. Mit ein bisschen umformen und so weiter kannst du das dann mit einem schönen Interface vereinfachen :)

mfg
 
irgendwie funktioniert das nicht. ich habe das script so umgeändert, das es die $idtokill anstatt der 3 löscht ($idtokill ist $_GET[id])
so sieht das script bei mir aus:

PHP:
	$datei = fopen($file, "r");
 	$zahl = 1;
 	while($zeile = fgets($datei,1024))
 		{
 		$text[$zahl] = $zeile;
 		$zahl++;
 	}
 	fclose($datei);
 
 	$datei = fopen($file, "w" );
 	$anzahl = count($text);
 	for($zahl=1;$zahl<=$anzahl;$zahl++)
 	{
 		if($zahl != $idtokill)
 			{
 			fwrite($datei, "$text[$zahl]\n");
 		}
 	}
 	fclose($datei);

komisch oder
 
@Oberst Klink

keine Ahnung, der macht einfach garnix. Aber ergal, ich habe dies jetzt über die GET-Methode gelöst.
Ich hab das jetzt so gemcaht:

PHP:
  <?php
  if ($_GET["id"]) {
  	$idzumkillen = $_GET['id'];
  	$array=file($file);
  	
  	if ($_GET["id"]==0 and count($array)==1) {
  		unlink($file);
  		echo "<br>Der ".$_GET['id']." Eintrag wurde aus der Datenbank gelöscht";
  	}
  	else {
  		// Die gelinkte ID über GET löschen:
  		unset($array[$_GET['id']]);
  		echo "<br>Der ".$_GET['id']." Eintrag wurde aus der Datenbank gelöscht";
  		// Neues Array in Datei schreiben:
  		unlink($file);
  		$fp=fopen($file, "a+");
  		fputs($fp, $array);
  		fclose($fp);
  	
  		// Wieder in Array einlesen: 
  		$array=file($file);
  	}
  // Hier wieder ausgeben
  // Mit einer For-Schleife
  }
  else {
  
  // Hier dann die Einträge auflisten, mit einem löschen-Link
  }

und ich weiß nicht, warum das nicht funktioniert. angenommen, ich lösche den Eintrag 1 (ID=0), dann macht er garnix, und wenn ich irgendeinen anderen Eintrag lösche, dann geht das zwar, aber irgendwie hab ich dann in meiner Textdatei nur noch stehetn:

Code:
Array

Aber das verstehe ich auch nicht, weil ich speicher doch per fputs in meine neue Datei (vorher unlinked) das $array, aus dem die bestimmte ID gelöscht worden ist.
 
Zuletzt bearbeitet:
Du kannst nich einfach mit fputs($fp, $array); die Datei schreiben. Das wäre das selbe, als wenn du echo $array machen würdest,halt nur an den User sendest, da steht dann auch Array. Das musst du schon für jedes Element einzeln machen.
PHP:
 $array = array("Element 1", "Element 2", "Element 3");
 
 echo $array; //würde nür "Array" ausgeben
 
 foreach ($array as $ausgabe) {
 	echo $ausgabe; //Gibt jedes einzelne Element aus
 }
Musst du nur noch für deinen Zweck umbauen.

mfg

EDIT: Setze noch ein ."\n" an deine Ausgabe, damit eine neue Zeile gemacht wird!
 
Zuletzt bearbeitet:
Zurück