Wert wird mit hidden-feld nicht übertragen

berlinkw

Mitglied
Moin Moin
Hab folgendes Problem.
Ein Formular ruft sich selber auf. Beim ersten Aufruf werden bestimmte Werte per GET an das Formular übergeben.
Beim zweiten Aufruf übertrage ich die Werte per <input type"hidden".....> und POST.
Insgesamt sind es drei Werte. Zwei davon werden auch übertragen. Nur bei dem Wert $id kommt nichts an.
Hier mal der Code.
PHP:
	<?php
  	include("mysql.inc");
  	$loeschen = $_POST['loeschen'];
    $titel = $_GET['titel'];  // $titel vorhanden //
    $tabelle = $_GET['tabelle'];// $tabelle vorhanden //
    $id = $_GET['id'];  // $id hier vorhanden //
    if(!isset($loeschen))
    {
    	echo '<div align="center"';
    	echo '<h2>Datensatz löschen</h2>';
    	echo '<br>Soll folgender Datensatz wirklich gelöscht werden?<br>';
    	echo '<form action="loeschen.php" method="post">';
    	echo '<table>';
    	echo '<tr>';
    	$anzeige = "SELECT id,rubrik,name,preis FROM $tabelle WHERE id = $id";  // $id hier vorhanden //
    	$erg = mysql_query($anzeige);
    	while(list($id,$rubrik,$name,$preis) = mysql_fetch_row($erg))
    	{
    		echo '<th width=100px">Name</th>';
    		echo '<th width=100px">Löscherart</th>';
    		echo '<th width=100px">Preis</th>';
    		echo '</tr><tr>';
    		echo '<td>'.$name.'</td>';
    		echo '<td>'.$rubrik.'</td>';
    		echo '<td>'.$preis.'</td>';
    		echo '</tr><tr>';
    		echo '<td colspan="3" align="center"><input type="Submit" name="loeschen" value="LÖSCHEN"></td>';
    	}
    	echo '</tr></table>';
      echo '<input type="hidden" name="id" value="'.$id.'">';  // $id hier nicht mehr vorhanden //
      echo '<input type="hidden" name="tabelle" value="'.$tabelle.'">'; // $tabelle vorhanden //
      echo '<input type="hidden" name="titel" value="'.$titel.'">';  // $titel vorhanden //
    	echo '</form>';
    }
    if(isset($loeschen))
    {

    	$id = $_POST['id'];  // $id nicht vorhanden //
    	$tabelle = $_POST['tabelle'];  // $tabelle vorhanden //
    	$titel = $_POST['titel'];  // $titel vorhanden //
    	$loeschen = "DELETE FROM $tabelle WHERE id = $id";
        echo $loeschen; // hab ich zu überprüfung drinn. $id wird nicht angezeigt // 
        $erg = mysql_query($loeschen);

    	echo '<div align="center">';
      echo '<h2>Datensatz wurde gelöscht</h2>';
      echo 'Zurück zur Listenansicht von<br>';
  		echo '<a href="floescher1.php?tabelle='.$tabelle.'&titel='.$titel.'">'.$titel.'</a>';
    }
  ?>

Ich hab mal die drei Werte um die es geht Kommentiert wo es geht und an welcher stelle es nicht geht.

Denke mal das ich sicher nur eine Kleinigkeit übersehe. Aber ich sehe eben nicht woran es liegt.

Gruß berlinkw
 
So auf den ersten Blick würd ich sagen, dass du die Variable "id" in der while-Schleife veränderst.

Du könntest das hidden field zum Testen umbenennen... (und natürlich die dazugehörigen Variablen)
 
Wozu ist das Script gut, beziehungsweise was genau soll es machen und wie hast du dir es Vorgestellt, soll es nachher aussehen?
 
Moin

Gib der Variable $id mal einen anderen Namen.
Wenn dies nicht funktioniert dann verfolge mal wo der Fehler ist.
Ich mache das immer mit echo's in dem ich beim hidden feld anfange und dann Richtung Definition gehe und dann weisst du bis wohin die Variable verfügbar ist. Somit kannst du einigermassen orten wo der Fehler ist.
 
Versuch es mal mit $_REQUEST anstatt mit GET - Inhalte aus Feldern müssen mti REQUEST geholt werden..
 
so jetzt geht es "jubel"
@rotsch
hab mal die hidden-felder vor der sql-abfrage gesetzt. nun geht es.
werde das mal in der richtung $_REQUEST umschreiben. du hast ja recht :)
die ersten werte werden mit einem link an das formular geschickt. deswegen am anfang auch $_GET. erst im formular selber läuft das per $_POST.

@scan5416
die echo anweisungen hatte ich der übersichtlichkeit rausgenommen. ich teste das auch immer so.

@andy1337
mit der script werden daten in eienr tabelle gelöscht.

So nun das lauffähige Script die änderung bezüglivh $_REQUEST mach ich noch.

PHP:
<?php
    include("mysql.inc");
    $loeschen = $_POST['loeschen'];
    $titel = $_GET['titel'];
    $tabelle = $_GET['tabelle'];
    $id = $_GET['id'];
    if(!isset($loeschen))
    {
    	echo '<div align="center"';
    	echo '<h2>Datensatz löschen</h2>';
    	echo '<br>Soll folgender Datensatz wirklich gelöscht werden?<br>';
    	echo '<form action="loeschen.php" method="post">';
        echo '<input type="hidden" name="id" value="'.$id.'">';
        echo '<input type="hidden" name="tabelle" value="'.$tabelle.'">';
        echo '<input type="hidden" name="titel" value="'.$titel.'">';
    	echo '<table>';
    	echo '<tr>';
    	$anzeige = "SELECT id,rubrik,name,preis FROM $tabelle WHERE id = $id";
    	$erg = mysql_query($anzeige);
    	while(list($id,$rubrik,$name,$preis) = mysql_fetch_row($erg))
    	{
    		echo '<th width=100px">Name</th>';
    		echo '<th width=100px">Löscherart</th>';
    		echo '<th width=100px">Preis</th>';
    		echo '</tr><tr>';
    		echo '<td>'.$name.'</td>';
    		echo '<td>'.$rubrik.'</td>';
    		echo '<td>'.$preis.'</td>';
    		echo '</tr><tr>';
    		echo '<td colspan="3" align="center"><input type="Submit" name="loeschen" value="LÖSCHEN"></td>';
    	}
    	echo '</tr></table>';
    	echo '</form>';
    }
    if(isset($loeschen))
    {
    	$id = $_POST['id'];
    	$tabelle = $_POST['tabelle'];
    	$titel = $_POST['titel'];
    	$loeschen = "DELETE FROM $tabelle WHERE id = $id";
        $erg = mysql_query($loeschen);

    	echo '<div align="center">';
        echo '<h2>Datensatz wurde gelöscht</h2>';
        echo 'Zurück zur Listenansicht von<br>';
  	echo '<a href="floescher1.php?tabelle='.$tabelle.'&titel='.$titel.'">'.$titel.'</a>';
    }
  ?>

gruß berlinkw
 
Zurück