Problem beim Löschen aus der Datenbank mit Formular

the-grosser

Grünschnabel
Hallo Leute,

ich habe ein kleines Problem, und zwar habe ich von einem guten Kumpel ein Modul für Nuke bekommen mit dem man sich eine Torschützenliste für seinen Verein anzeigen und bearbeiten lassen kann

Es funktioniert auch alles soweit, also das hinzufügen und aktualisieren von Daten, aber wenn ich einen Spieler löschen will bekomme ich die Meldung
"Sorry, such file doesn't exist..."

Ich weiß nicht mehr weiter, und auch mein Kumpel ist mit seinem Latein am Ende

Hier mal der Quellcode:
PHP:
<?php 
if (!isset($mainfile)) { include("mainfile.php");} 
include("header.php"); 
$index = 0; // 1=blöcke rechts an  0=blöcke rechts aus 

		// funktion zu berechnung der quote tore/spiel
		function quote_berechnen($tore, $spiele)
		{
			if ($spiele == '0')
				{ return $spiele; }
				else 
					{ $unrounded_quote = $tore / $spiele;
					  $rounded_quote = round ($unrounded_quote, 1);
					  return $rounded_quote;					
					}
		}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$todo = $HTTP_GET_VARS['action'];
if ($todo == "")
{		// formular zum eintragen der daten bauen
		$query_table = "SELECT * FROM nuke_torliste_1m ORDER BY tore DESC, spiele, name, vorname";
		$result_form = mysql_query($query_table);
		$zeilenanzahl = mysql_num_rows($result_form);
        echo "<table width=\"60%\"><tr><td colspan=\"4\"><h3>Verwaltung der Torschützen</h3></td></tr>";
		echo "<tr><td colspan=\"4\">&nbsp;</td></tr><tr><td colspan=\"4\"><li>neue Werte einfach einsetzen</li></td></tr><tr><td colspan=\"4\">&nbsp;</td></tr>";
		echo "<form name=\"torliste\" action=\"modules.php?name=1_m_torform&action=entry\" method=\"POST\">";
		echo "<tr><td width=\"25%\" align=\"left\" background=\"../themes/sb_dvdfuture/images/oben.jpg\"><strong>Name</strong></td><td width=\"15%\" align=\"center\" background=\"../themes/sb_dvdfuture/images/oben.jpg\"><strong>Vorname</strong></td>";
		echo "<td width=\"15%\" align=\"center\" background=\"../themes/sb_dvdfuture/images/oben.jpg\"><strong>Spiele</strong></td><td width=\"15%\" align=\"center\" background=\"../themes/sb_dvdfuture/images/oben.jpg\"><strong>Tore</strong></td></tr>";
	    echo "<tr align=\"center\" bgcolor=\"#330000\"><td height=\"15px\">&nbsp;</td><td height=\"15px\">&nbsp;</td><td height=\"15px\">&nbsp;</td><td height=\"15px\">&nbsp;</td></tr>";
		for ($i = 1; $i <= $zeilenanzahl; $i++)
		{ $datensatz = mysql_fetch_array($result_form);
		  if ($i%2)
		  echo "<tr bgcolor=\"#993300\">";
			else
			  echo "<tr bgcolor=\"#33000\">";
		  echo "<td>".$datensatz[1]."</td>";
		  echo "<td>".$datensatz[2]."</td>";
		  echo "<td align=\"center\"><input type=\"text\" name=\"spiele_".$datensatz[5]."\" value=\"".$datensatz[3]."\" size=\"2\"></td>";
		  echo "<td align=\"center\"><input type=\"text\" name=\"tore_".$datensatz[5]."\" value=\"".$datensatz[4]."\" size=\"3\"></td>";
		  echo "</tr>";
		}
		echo "<tr><td>&nbsp;</td></tr><tr><td colspan=\"4\"><input type=\"submit\" value=\"Werte ändern\"></td></tr>";
		echo "</table></form><br><br>";
/////////// SPIELER LÖSCHEN /////////////////////////////////////////////////////////////////////////////////////////////////////
	$query_delete = "SELECT name FROM nuke_torliste_1m ORDER BY name";
	$result_delete = mysql_query($query_delete);
	 echo "<table bgcolor=\"#660000\" width=\"40%\" border=\"0\"><form name=\"torliste\" action=\"modules.php?name=1_m_torform&action=delete\" method=\"POST\">";
	 echo "<tr><td><strong>Loeschung eines Spielers:</strong></td></tr><tr><td>&nbsp;</td></tr><tr><td><li>durch einfaches anwaehlen des Namens</li></td></tr><tr><td>&nbsp;</td></tr>";
		echo "<tr><td><select name=\"name\" size=\"1\">";
		for ($i = 1; $i <= $zeilenanzahl; $i++)
		{ $spieler = mysql_fetch_row($result_delete);
		  echo "<option>".$spieler[0]."</option>\n";
		  
		}
		echo "</select></td>\n";
		echo "<td colspan=\"3\"><input type=\"submit\" value=\"Spieler löschen\"></td></tr>";
		echo "</tr></form></table><br><br>";
/////////// NEUEN SPIELER EINTRAGEN //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        echo "<table bgcolor=\"#660000\" width=\"40%\" border=\"0\"><form name=\"torliste\" action=\"modules.php?name=1_m_torform&action=insert\" method=\"POST\">";
		echo "<tr><td><strong>Neuen Spieler eintragen:</strong></td></tr><tr><td>&nbsp;</td></tr><tr><td><li>Spielernamen eingeben,<br> dabei werden Anfangswerte<br> selbst gesetzt<br> (0 - Spiele, 0 - Tore, 0 - 11m) </li></td></tr><tr><td>&nbsp;</td></tr>";
		echo "<tr>\n";
		echo "<td><input type=\"text\" name=\"neuername\" value=\"neuer Spielername ?\" size=\"30\"></td>";
		echo "<td><input type=\"text\" name=\"neuervorname\" value=\"neuer Vorname ?\" size=\"30\"></td>";
		echo "<td><input type=\"submit\" value=\"Spieler eintragen\"></td></tr>";
		echo "</form></table><br><br>";
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else if ($todo == "entry")
     { // formular zum eintragen der daten bauen
		$query_entry = "SELECT * FROM nuke_torliste_1m ORDER BY tore DESC, spiele, name, vorname";
		$result_entry = mysql_query($query_entry);
		$zeilenanzahl = mysql_num_rows($result_entry);
		for($i=1;$i<=$zeilenanzahl;$i++)
		{ $spielername = mysql_fetch_row($result_entry);
          $spiele      = $HTTP_POST_VARS["spiele_".$spielername[5]];
          $tore        = $HTTP_POST_VARS["tore_".$spielername[5]];
          $anfrage_entry = "UPDATE nuke_torliste_1m SET spiele='$spiele', tore='$tore' WHERE kurzname='$spielername[5]'"; 
		  mysql_query($anfrage_entry) or die("Tabelle konnte nicht aktualisiert werden!");
		}		 
	 echo "<center><h3>Datensaetze wurden aktualisiert</h3></center><br><br>";
	 echo "Bitte warten, es wird automatisch in 3 Sekunden weitergeleitet ...";
	 echo "<meta http-equiv=\"refresh\" content=\"3; URL=modules.php?name=1_m_torform\">"; 
     }
	//spieler aus dem datensatz löschen /////////////////////////////
	 else if ($todo == "delete") 
	 echo "test";
	 {  $spielername = $HTTP_POST_VARS['spielername'];
		$anfrage_delete = "DELETE FROM nuke_torliste_1m WHERE name='$spielername'";
        mysql_query($anfrage_delete) or die("Spieler konnte nicht gelöscht werden!");
	    echo "<center><h3>Loeschung erfolgreich !</h3><br>Spieler \"<strong>$spielername</strong>\"wurde aus dem Datensatz entfernt.</center><br><br>";
	    echo "Bitte warten, es wird automatisch in 3 Sekunden weitergeleitet ...";
	    echo "<meta http-equiv=\"refresh\" content=\"3; URL=modules.php?name=1_m_torform\">";
	  } 
	 // neuen datensatz (spieler) hinzufügen //////////////////////////
	 else if ($todo == "insert")
	 {  /*$name = $HTTP_POST_VARS['neuername'];
	    $query_insert = "INSERT INTO nuke_torliste (name, spiele, tore, 7meter) VALUES ('".$name."', '0', '0', '0')";
		mysql_query($query_insert) or die("Konnte Spieler ".$name." nicht eintragen.");*/
        ///// testoption zum umschreiben des namens /////
		$name = $HTTP_POST_VARS['neuername'];
		$vorname = $HTTP_POST_VARS['neuervorname'];
		$s_name = $name;
		$search = array ('.', ' ');
		$short_name = str_replace($search, '', $name);		
	    $query_insert = "INSERT INTO nuke_torliste_1m (name, vorname, spiele, tore, kurzname) VALUES ('".$name."', '".$vorname."', '0', '0', '".$short_name."')";
		mysql_query($query_insert) or die("Konnte Spieler ".$name.", ".vorname." nicht eintragen."); 
		echo "<center><h3>Eintrag erfolgreich !</h3><br>Spieler \"<strong>$vorname $name</strong>\"wurde dem Datensatz hinzugefügt.</center><br><br>";
	    echo "Bitte warten, es wird automatisch in 3 Sekunden weitergeleitet ...";
	    echo "<meta http-equiv=\"refresh\" content=\"3; URL=modules.php?name=1_m_torform\">";
	 }

include("footer.php"); 
?>

Ich hoffe mir kann einer von euch helfen.

Vielen Dank schon mal an alle die sich für mich den Kopf zerbrechen...

Gruß Mario
 
Hallo j cop,

bin leider nicht so firm auf dem Gebiet musst mir mal helfen, was sind die PHP-BBCode Tags, wo finde ich die?

Wenn ich sie finde dann poste ich die sofort

Achso, noch zur Info, ich hab PHPNuke 6.5 installiert.

Gruß Mario
 
Hallo,
von deinem Code ausgehend wäre das wahrscheinlich dann der springende Punkt:
PHP:
    //spieler aus dem datensatz löschen /////////////////////////////
     else if ($todo == "delete") 
     echo "test";
     {  $spielername = $HTTP_POST_VARS['spielername'];
        $anfrage_delete = "DELETE FROM nuke_torliste_1m WHERE name='$spielername'";
        mysql_query($anfrage_delete) or die("Spieler konnte nicht gelöscht werden!");
        echo "<center><h3>Loeschung erfolgreich !</h3><br>Spieler \"<strong>$spielername</strong>\"wurde aus dem Datensatz entfernt.</center><br><br>";
        echo "Bitte warten, es wird automatisch in 3 Sekunden weitergeleitet ...";
        echo "<meta http-equiv=\"refresh\" content=\"3; URL=modules.php?name=1_m_torform\">";
      }
Zuerst sehe ich mal keine Hindernisse, dass der MySQL-Query nicht ausgeführt wird. Woher die Meldung rührt, könnte an der Weiterleitung liegen: Was passiert, wenn modules.php mit dem Parameter name=1_m_torform aufgerufen wird? Klappt das sonst denn?
 
Warum diese Fehlermeldung erscheint, kann ich auch gerade nicht sagen. Was mir nur beim dem Part aufgefallen ist, ist das eigentlich in jedem Fall ein Spieler gelöscht werden müsste.

PHP:
elseif($todo == "delete")
echo "test"; 
     {  
// Code
      }

Der Elseif Part nimmt doch nur die nächste folgende Zeile als Handlung, sprich echo "test";. Das was in den Klammern steht müsste jedesmal durchgeführt werden, da es keinen bezug mehr zu der elseif Bedingung hat.
Interessant wäre auch zu Wissen, ob der Spieler auch aus der Datenbank gelöscht wird, oder ob er bestehen bleibt. Weiter würde ich ein echo mysql_error(); nach dem mysql_query() einbauen (nur zum testen).

PHP:
mysql_query($anfrage_delete) or die(mysql_error());

Da ich nicht genau weiss, was passiert (Löschung ja/nein?), daher muss das nicht umbedingt dem ganzen hier weiterhelfen. Aber es sind meine ersten Steps in Punkto Script-Debugging ;)

Gruss
 
Ceppi hat gesagt.:
Hallo,
von deinem Code ausgehend wäre das wahrscheinlich dann der springende Punkt:
PHP:
    //spieler aus dem datensatz löschen /////////////////////////////
     else if ($todo == "delete") 
     echo "test";
     {  $spielername = $HTTP_POST_VARS['spielername'];
        $anfrage_delete = "DELETE FROM nuke_torliste_1m WHERE name='$spielername'";
        mysql_query($anfrage_delete) or die("Spieler konnte nicht gelöscht werden!");
        echo "<center><h3>Loeschung erfolgreich !</h3><br>Spieler \"<strong>$spielername</strong>\"wurde aus dem Datensatz entfernt.</center><br><br>";
        echo "Bitte warten, es wird automatisch in 3 Sekunden weitergeleitet ...";
        echo "<meta http-equiv=\"refresh\" content=\"3; URL=modules.php?name=1_m_torform\">";
      }
Zuerst sehe ich mal keine Hindernisse, dass der MySQL-Query nicht ausgeführt wird. Woher die Meldung rührt, könnte an der Weiterleitung liegen: Was passiert, wenn modules.php mit dem Parameter name=1_m_torform aufgerufen wird? Klappt das sonst denn?

Hallo Ceppi,

das kuriose ist ja das alles andere funktioniert, das heitß ich kann Spieler hinzufügen, ich die Daten aktualisieren, es wird das Formular aufgebaut aber leider kann ich keinen Spieler löschen --> Fehlermeldung beim Versuch zu löschen: Sorry, such File doesn´t exist...
Und damit wird auch kein Spieler aus der MySQL DB gelöscht.
Habe das schon kontrolliert

Würde euch gern Material zur Verfügung stellen um mein Problem zu lösen, aber da ich wie gesagt im Moment noch nicht ganz so firm in der ganzen PHP sache bin brauche ich leider genauere angaben welche dateien bzw. Quellcodes ihr nocht benötigt


Gruß Mario
 
Hallo Mario,

manchmal ist man auf beiden Augen blind;-)
Schau dir mal den letzten Post von Mayrhofer an und lösche die Zeile...
PHP:
  echo "test";
Denn so kann der Inhalt der IF-Bedingung bisher nicht ausgeführt werden.
Die PHP-Syntax lautet folgendermaßen:
Folgt der IF-Bedingung nur ein Befehl, kann er ohne geschweifte Klammern notiert werden. Mehrere Befehle gehören eingeklammert ("{..}"). Bei dir findet PHP einen enzigen Befehl für die IF-Bedingung und führt den Rest in Klammern dann nicht mehr aus.
 
Zuletzt bearbeitet:
Hallo Ceppi,

hab das gleich mal alles so gemacht wie beschrieben, aber ich habe immer noch das gleiche Problem, sobald die Funktion mit dem Löschen ausgeführt werden soll bekomme ich die Meldung

Sorry, such file doesn't exist...

Oben in der Adressleiste steht folgendes:

http://www.svlokschleife.de/modules.php?name=1_m_torform&action=delete

Kein Plan was da sein soll, vor allem meinte mein Kumpel das es bei ihm funktioniert
Er arbeit mit PHPNuke 5.5, das wollte ich aber nicht nutzen da ich einige Module nutze die unter Nuke 5.5 nicht funktionieren.

Gruß Mario
 
Hallo Leute,

hat keiner mehr eine Idee warum ich die o.g. Fehlermeldung bekomme?:confused:

Ich weiß wirklich nicht mehr weiter....

Wäre echt Klasse wenn einer von euch noch ein paar Tipps für hat.

Gruß Mario
 
Zurück