Formular zum löschen von Datensätzen funktioniert nicht

Hektik

Erfahrenes Mitglied
Hallo!

Ich habe jetzt eine dreiviertel Stunde damit verbracht, den Fehler in meinem Script zu suchen, aber ich finde ihn nicht. :(

Es ist ein Script zum löschen von Gästebucheinträgen, den Rest habe ich im Code per Kommentar erklärt...

Wärt ihr so nett und würdet mal einen Blick darauf werfen?



PHP:
<?php

if(isset($_GET['loeschen'])) {
	// Wenn der Submit-Button geklickt wurde ...

	// ...die Anzahl der markierten Datensaetze ermitteln
	$y=count($loeschen);
	
	// ...ausgeben, welche Datensätze gelöscht wurden
	echo "<br><br><br><b>Anzahl gelöschter Eintrag: </b>$y <br><br>";

	// Für jeden markierten Datensatz
	// den delete-Befehl aufrufen.
	for($x=0;$x<$y;$x++) {
		mysql_query("delete FROM mylinks WHERE id = ' ".$loeschen[$x]." ' ");
		echo "<b>Gelöschter Eintrag:</b> - Nummer $loeschen[$x]<br>";
	}
}

// Die vorhandenen Datensätze abrufen
$result=mysql_query("select * from mylinks ORDER BY id ASC");

// Nur wenn Daten gefunden wurden,
// wird das Formular angezeigt.
if(mysql_num_rows($result)>=1) {
?>
<form method="post" action="index.php?navigation=links_loeschen&loeschen=1&expand=aendern">
  <table width="800px" border="1" bordercolor="#000000" style="border-collapse:collapse" cellspacing="0" cellpadding="0">
  	<tr>
  		<td valign="top">
  			<div style="margin:10px" align="left" class="d10swb">
  				löschen
  			</div>
  		</td>
  	</tr>
  <?

  // Variable für aktiv/inaktiv auf 0 setzen
  $i = 0;

  // Daten anzeigen
  while($row=mysql_fetch_array($result,MYSQL_ASSOC)) {
  ?>
      <td valign="top">
      	<div style="margin:5px" align="center" class="d10sw">
			<input type="checkbox" name="loeschen[]" value="<? echo $row['id']; ?>">
		</div>
      </td>
    </tr>
  <? } ?>
</table>
  <br>
  <input type="submit" name="submit" value="Löschen">
</form>
<?
} 
}
 
Zuletzt bearbeitet:
Hi

mach mal nach jeder DB abfrage ein or mysql_error() und sag ob was geschrieben wird


PHP:
mysql_query("delete FROM links WHERE id='$loeschen[$x]'")  or mysql_error() ;
 
mike4004 hat gesagt.:
Hi

mach mal nach jeder DB abfrage ein or mysql_error() und sag ob was geschrieben wird


PHP:
mysql_query("delete FROM links WHERE id='$loeschen[$x]'")  or mysql_error() ;

Da passiert gar nix. Also, es kommt keine Fehlermeldung.
 
Lass dir doch einfach die Abfragedefinition ausgeben und überprüfe sie selbst. Des Weiteren solltest du mit den vordefinierten Variablen arbeiten und die Fehlermeldungssensibilität PHPs höher setzen, um mögliche unterdrückte Fehlermeldungen auszugeben.
 
Was sind Abfragedefinitionen?

Deinen Hinweis darauf, vordefinierte Variablen zu benutzen, verstehe ich nicht.

Wie setze ich die Fehlermeldungssensibilität PHPs höher?

Irgendwie schreibst du für mich in Fachchinesisch ;) *scherz*

EDIT:

Ich habe jetzt festgestellt, dass das Script auf meinem Webspace funktioniert, jedoch nicht auf meinem Webserver auf meinem Rechner. Woran kann das liegen?
 
Zuletzt bearbeitet:
Was sind Abfragedefinitionen?
In einer Abfragedefinition wird die Abfrage beschrieben, in deinem Fall ist es das "delete FROM links WHERE id='$loeschen[$x]'".

Deinen Hinweis darauf, vordefinierte Variablen zu benutzen, verstehe ich nicht.
Beim Arbeiten mit den vordefinierten Variablen statt den so genannten Register Globals, kann die Herkunft der Werte genauer bestimmt werden.

Wie setze ich die Fehlermeldungssensibilität PHPs höher?
Folgendes am Anfang des Skriptes geschrieben, setzt die Fehlermeldungssensibilität auf die höchste Ebene:
PHP:
<?php

	ini_set('display_errors', true);
	error_reporting(E_ALL);

	…

?>
Eine Suchanfrage mit den entsprechenden Stichwörtern hätte dir übrigens auch zur Lösung verholfen.
 
So, Gumbo, ich bin jetzt dazu gekommen, dass was du mir vorgeschlagen hast, auszuprobieren.

Erst einmal DANKE! an deine Hilfsbereitschaft. Der Hinweis auf die Register Globals hat mich auf die richtige Spur gebracht.
Wenn man vorher aber davon noch nie was gehört hat, kann man mit dem Hinweis aber nicht viel anfangen, weil man gar nicht weiß, WAS man nun falsch gemacht hat ;) Macht aber nix, geholfen hast du im Endeffekt ja trotzdem! Danke :)


Zur Info: der funktionierende Code:
PHP:
if($_GET['loeschen'] == 1) {
	// Wenn der Submit-Button geklickt wurde ...

	// die Anzahl der markierten Datensaetze ermitteln
	$y=count($_POST['loeschen']);
	echo "<b>Anzahl gelöschter Einträge: </b>$y <br><br>";

	// Für jeden markierten Datensatz
	// den delete-Befehl aufrufen.
	for($x=0;$x<$y;$x++) {
		mysql_query("delete from news
    				where id='".$_POST['loeschen'][$x]."'");
		echo "<b>Gelöschter Eintrag:</b> - Nummer ".$_POST['loeschen'][$x]."<br>";
	}
}
 
Gewöhnlich liefere ich neben den eigentlichen Informationen auch Verweise zu weiterführenden Seiten, die die Thematik näher beschreiben/erläutern. In dem Sinne habe ich dich mit den Stichwörtern nicht ganz allein gelassen.
 
Gumbo hat gesagt.:
Gewöhnlich liefere ich neben den eigentlichen Informationen auch Verweise zu weiterführenden Seiten, die die Thematik näher beschreiben/erläutern. In dem Sinne habe ich dich mit den Stichwörtern nicht ganz allein gelassen.

Ne ^^ so meinte ich das ja gar nicht. Hab mir das dort ja durchgelesen und auch verstanden, was damit gemeint war. Hab nur aus "Blindheit" nicht gesehen, was das mit meinem Code zu tun haben sollte. Wusste also nicht, auf welche stelle meines Codes sich das bezog. Zumal ich ja sonst immer mit Post und Get arbeite ;)
 
Zurück