Refresh problem nach Delete durch PHP

Ich schon wieder :-)

Folgendes Problem diesmal:

Ich habe ein HTML dropdown menu, selektiere etwas dann klick ich auf den Loeschen Button den ich erstellt habe. Im Hintergrund laeuft PHP prima, es loescht mir den Datensatz in MySQL aber da die "Weiterleitung" nach dem Loeschen wieder auf dieselbe Seite verweist, ist in dem dropdown Menu der bereits geloeschte Datensatz noch drin. Erst nachdem ich F5 druecke ist es weg.

Gibt es einen Weg mit PHP die Seite zum automatischen Refresh zu bewegen, so dass der geloeschte Datensatz nicht weiterhin im dropdown ist?

Danke!
 
HI, versuch es mal mit:

HTML:
<input type="button" value="loeschen" onclick="location.href=deine_seite">


Da sollte eigentlich die selbe Seite neu geladen werden.
 
Zuletzt bearbeitet:
Nein, ist ausserhalb. Ich habe eine Variable die mir den dropdown zeigt und das DELETE kommt hinterher.
Wenn ich das DELETE mit in die Variable nehme, wuerde das denn immer noch funktionieren? Also die urspruenglich e Funktionalitaet, mein ich, nicht den refresh.

Danke fuer die Hilfe uebrigens - weiss ich sehr zu schaetzen :-)
 
Ich habe immer das selbe das Problem, ich helfe mir immer mit dem senden eines <header> Befehls weiter, aber schön ist das nicht. Ich würde es auch gerne anders lösen.
 
Hallo!

Ich lade meine Seite einfach per META-Tag im HEAD neu.
Damit die Seite aber nicht in einer Endlosschleife steckt, wird per if-Anweisung geprüft ob der entsprechende Button überhaupt gedrückt wurde.

In deinem Fall könnte es also z.b. so aussehen:
PHP:
<?php
if(isset($_GET['loeschen']))
{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."\">";
}
?>
Dazu noch bei deinem Button ein Namen vergeben:
HTML:
<input type="submit" name="loeschen" value="Eintrag löschen">
Gruss Dr Dau

[edit]
FlyTribun hat gesagt.:
Elegante lösung!! :-))
Nur ist mir beim kürzen ein Fehler unterlaufen, da ist/war eine schliessende Klammer zu wenig. (ist korregiert)
Bei mir wird der Refresh ja auch ausgeführt wenn ich die Datenbank update oder ein Eintrag hinzufüge.
[/edit]
 
Zuletzt bearbeitet:
Hi Dr Dau :-)

Tausend Dank fuer den Loesungsvorschlag. Ich bin sicher dass es funktionieren sollte aber bei mir will's dennoch nicht klappen.

Ich fuege mal meinen Code hinzu, vielleicht kann du evtl. sehen was ich falsch mache?
Ich hab uebrigens versucht deinen Code nach dem </form> einzugeben und sogar davor, aber das hat nichts geaendert :( Auch nicht nachdem ich's im <HEAD> eingefuegt habe.

Danke!

PHP:
<?php

if ($_COOKIE[success]=="1")
{
} else {
	//go back to login if not successful
	header("Location: login.php");
	exit;
		}


$connection=mysql_connect("localhost","someone","project") or die(mysql_error());
mysql_select_db("cdcat", $connection) or die(mysql_error());

$display = "<h2>Select a version to delete</h2>";

$getVer = "select versionname from versions order by versionname";
$getVerRes = mysql_query($getVer, $connection) or die(mysql_error());

if (mysql_num_rows($getVerRes) <1)
{
	$display .= "<p>Sorry, there are no versions in the database yet </p>";
} else {
		$display .= "
		<form method=\"POST\" action=\"$_SERVER[PHP_SELF]\"><br>
		<select name=\"ver_id\">
		<option value=\"\"> -- Select one --</option>";


				while ($record = mysql_fetch_array($getVerRes))
			        {
				        $id = $record['versionname'];
				        $verName = stripslashes ($record['versionname']);
				        $display .="<option value=\"$id\"> $verName </option>";
			        }
	         $display .= "
	        </select>
		<input type=\"submit\" name=\"submit\" value=\"Delete version\"></p>
		</form>";
	}

if (isset($_GET['submit']))
{
	echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."\">";
}


$deleteVer = "delete from versions where versionname = '$_POST[ver_id]'";
$verRes = mysql_query ($deleteVer, $connection) or die('<IMG ALIGN=left SRC="logo.gif"><br><br><br><br><br>'.'<font face ="Tahoma" size=2> You cannot delete this version because you still have CDs referencing it in your cds table. <br>Please <a href="deletecd.php"><b>remove</b></a> those records first</font>');

?>

<html><head><title>Delete a version</title>
<link rel=stylesheet type="text/css" href="project.css"></head>
<body>
<img align=left src="logo.gif">
<br><br><br><br><br><br><br>
<center>
<?php echo $display; ?></center>
</body>
</html>
 
Zuletzt bearbeitet:
Also, der Code gehört natürlich in den HEAD Bereich.
Da Du dein Formular ja nicht wie ich per GET sondern per POST übergibst, musst Du natürlich auch nach einem POST abfragen. ;)

Wenn ich es richtig sehe, wird header() nur ausgeführt wenn man nicht eingelogt ist?!
Dann dürfte es eigentlich keine Probleme machen.

Ich denke dein Code müsste so aussehen:
PHP:
<?php 
 
if ($_COOKIE['success']=="1") 
{ 
} else { 
	//go back to login if not successful 
	header("Location: login.php"); 
	exit; 
		} 
 
$connection=mysql_connect("localhost","someone","project") or die(mysql_error()); 
mysql_select_db("cdcat", $connection) or die(mysql_error()); 
 
$display = "<h2>Select a version to delete</h2>"; 
 
$getVer = "select versionname from versions order by versionname"; 
$getVerRes = mysql_query($getVer, $connection) or die(mysql_error()); 
 
if (mysql_num_rows($getVerRes) <1) 
{ 
	$display .= "<p>Sorry, there are no versions in the database yet </p>"; 
} else { 
		$display .= " 
		<form method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\"><br> 
		<select name=\"ver_id\"> 
		<option value=\"\"> -- Select one --</option>"; 
 
 
				while ($record = mysql_fetch_array($getVerRes)) 
					{ 
						$id = $record['versionname']; 
						$verName = stripslashes ($record['versionname']); 
						$display .="<option value=\"".$id."\"> ".$verName." </option>"; 
					} 
			 $display .= " 
			</select> 
		<input type=\"submit\" name=\"submit\" value=\"Delete version\"></p> 
		</form>"; 
	} 
 
$deleteVer = "delete from versions where versionname = '".$_POST['ver_id']."'"; 
$verRes = mysql_query ($deleteVer, $connection) or die('<IMG ALIGN=left SRC="logo.gif"><br><br><br><br><br>'.'<font face ="Tahoma" size=2> You cannot delete this version because you still have CDs referencing it in your cds table. <br>Please <a href="deletecd.php"><b>remove</b></a> those records first</font>'); 
 
?> 
 
<html>
<head>
<title>Delete a version</title> 
<link rel=stylesheet type="text/css" href="project.css">
<?php
if (isset($_POST['submit'])) 
{ 
	echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."\">"; 
} 
?>
</head> 
<body> 
<img align=left src="logo.gif"> 
<br><br><br><br><br><br><br> 
<center> 
<?php echo $display; ?></center> 
</body> 
</html>
 
Zurück