MYSQL Eintrag mit PHP bearbeiten.

nchristoph

Erfahrenes Mitglied
Hallo zusammen,

Ich speichere meine Dateiuploads mit ein paar anderen Daten in einer Datenbank.

Ich will jetzt die Möglichkeit schaffen, nachträglich die Einträge zu bearbeiten.

Leider steh ich wieder mal auf dem Schlauch.

Ich lese die Daten aus der DB aus, wenn ich jetzt auf den Button bearbeiten klicke, komme ich nur auf eine leere Seite.

Wie kann ich das einfach und elegant lösen?

PHP:
<center><table style="width:400px;border:0;" >
  <tr>
    <form action="" method="post">
      <td height="23"><label for="search_term">
        <input name="search_term" type="text" id="search_term" size="60" />
      </label></td>
      <td ><input type="submit" name="button" id="button" value="Suchen" /></td>
    </form>
  </tr>
</table></center>


<?php 

	$server = "localhost";
	$benutzername = "root";
	$passwort = "";	
	
	$datenbank = "suchmaschine";

	// Server Verbindung herstellen
	mysql_connect($server,$benutzername,$passwort) or 
	die ("Keine Verbindung moeglich");
	
	// Datenbank Verbidung
	mysql_select_db($datenbank) or
	die ("Die Datenbank existiert nicht");

	$tabelle = "suchmaschine";

    if (isset($_POST['search_term']))
    {
		echo("<div class=\"header\"><table>");
    $sql = "SELECT
				ID,
                Holzart,
				Klasse,
				Trockenheit,
				Partie,
				Kubik,
				Starke,
				Hauptlange,
				Pfad
            FROM
                suchmaschine
            WHERE
                Holzart LIKE '%" . mysql_real_escape_string(utf8_decode($_POST['search_term'])) . "%' OR
				Partie LIKE '%" . mysql_real_escape_string(utf8_decode($_POST['search_term'])) . "%'"; 
          
		echo ('<tr ><th class="position">Holzart</th><th class="starke">St&auml;rke</th><th class="klasse">Klasse</th><th class="trocken">Trockenheit</th><th class="partie">Partienummer</th><th class="link">Link</th></tr> ');
		$result = mysql_query($sql) OR die(mysql_error());
		if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt
			while($row = mysql_fetch_object($result)) 
			{
				
				echo ('<tr>');
				echo ('<td class="position">'.(utf8_decode($row->Holzart)).'</td>');
				echo ('<td class="starke">'.(utf8_decode($row->Starke)).'</td>');
				echo ('<td class="klasse">'.(utf8_decode($row->Klasse)).'</td>');
				echo ('<td class="trocken">'.(utf8_decode($row->Trockenheit)).'</td>');
				echo ('<td class="partie">'.(utf8_decode($row->Partie)).'</td>');
				echo ('<td class="link"><a href="'.(utf8_decode($row->Pfad)).'">'.(utf8_decode($row->Partie)).'</a></td>');
				echo ('<td class="edit"><form action="" method="get"><input name="bearbeiten" type="submit" id="bearbeiten" value="Bearbeiten" /></form></td>');
				echo ('</tr>');
			}
		}else{
				echo ('<tr><td class="fehler" colspan="6">Suche ergab keine Treffer</td></tr>');
		}
		echo ("</table></div>");
	}
	if(isset($_POST['bearbeiten']))
	{
		echo('<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">');
	    echo('<label for="holzart">Holzart</label>');
    	echo('<select name="holzart" id="holzart">');
		echo('<option value="'.$row->Holzart.'">'.$row->Holzart.'</option>');
      	echo('<option value="Ahorn amerik">Ahorn amerik</option>');
      	echo('<option value="Ahorn">Ahorn</option>');
      echo('<option value="Birke">Birke</option>');
      echo('<option value="Birke bes">Birke bes.</option>');
      echo('<option value="Buche ged">Buche ged.</option>');
      echo('<option value="Buche natur">Buche natur</option>');
      echo('<option value="Eiche amerik">Eiche amerik.</option>');
      echo('<option value="Eiche rot">Eiche rot</option>');
      echo('<option value="Eiche">Eiche</option>');
      echo('<option value="Erle ged">Erle ged.</option>');
      echo('<option value="Erle">Erle</option>');
      echo('<option value="Esche amerik">Esche amerik.</option>');
      echo('<option value="Esche Braun">Esche Braun</option>');
      echo('<option value="Esche Jugo">Esche Jugo</option>');
      echo('<option value="Esche">Esche</option>');
      echo('<option value="Kirsche ged">Kirsche ged.</option>');
      echo('<option value="Kirsche">Kirsche</option>');
      echo('<option value="Larche sib">Lärche sib.</option>');
      echo('<option value="Larche">Lärche</option>');
      echo('<option value="Nuss amerik">Nuss amerik.</option>');
      echo('<option value="Nuss europ">Nuss europ.</option>');
      echo('<option value="Tanne">Tanne.</option>');
    echo('</select>');
  echo('<br/><br/>');
    echo('<label for="starke">Stärke</label>');
    echo('<select name="starke" id="starke">');
	echo('<option value="'.$row->Starke.'">'.$starke.'</option>');
      echo('<option value="8 mm">8 mm</option>');
      echo('<option value="20 mm">20 mm</option>');
      echo('<option value="26 mm">26 mm</option>');
      echo('<option value="26x100 mm">26 x 100 mm</option>');
      echo('<option value="32 mm">32 mm</option>');
      echo('<option value="33 mm">33 mm</option>');
      echo('<option value="40 mm">40 mm</option>');
      echo('<option value="50 mm">50 mm</option>');
      echo('<option value="60 mm">60 mm</option>');
      echo('<option value="65 mm">65 mm</option>');
      echo('<option value="70 mm">70 mm</option>');
      echo('<option value="80 mm">80 mm</option>');
    echo('</select>');
  echo('<br/><br/>');
    echo('<label for="klasse">Klasse</label>');
    echo('<select name="klasse" id="klasse">');
		echo('<option value="'.$row->Klasse.'">'.$row->Klasse.'</option>');
      echo('<option value="1 KL">1 KL</option>');
      echo('<option value="2 KL">2 KL</option>');
    echo('</select>');
 echo('<br/><br/>');
    echo('<label for="trockenheit">Trockenheit</label>');
    echo('<select name="trockenheit" id="trockenheit">');
	echo('<option value="'.$row->Trockenheit.'">'.$row->Trockenheit.'</option>');
      echo('<option value="KD">KD</option>');
      echo('<option value="AD">AD</option>');
    echo('</select>');
echo('<br/><br/>');
    echo('<label for="partienummer">Partienummer</label>');
    echo('<input class="formular" type="text" name="partienummer" id="partienummer" value="'.$row->Partie.'" />');
echo('<br/><br/>');
    echo('<label for="kubik">M3</label>');
    echo('<input class="formular" type="text" name="kubik" id="kubik" value="'.$row->Kubik.'" />');
echo('<br/><br/>');
    echo('<label for="hauptlange">Hauptlänge</label>');
    echo('<input class="formular" type="text" name="hauptlange" id="hauptlange" value="'.$row->Hauptlange.'" />');
echo('<br/><br/>');
    echo('<input  type="submit" name="speichern" id="speichern" value="Speichern" /> ');
    echo('<input type="reset" name="reset" id="reset" value="Zurücksetzen" />');
  echo('</form');
	}
	if(isset($_POST['speichern'])){
	}
?>

Ich versuche jetzt seit ca. 2 Tagen herum und komm auf keinen grünen Zweig.
Wer kann mir helfen?
 
Also der obige Code ist ziemlich merkwürdig mit den verschiedenen form-Tags, noch dazu innerhalb der WHILE-Schleife.

Außerdem stehen die Angaben aus der Datenbank selber gar nicht innerhalb des form-Tags und eine Angabe bei "action" gibt es auch nicht!
 
Ok den Fehler, das ich nicht auf die nächste Seite gekommen bin, hab ich selber gelöst.

Welche action soll ich eintragen? Ich dachte, wenn der PHP und der HTML Code in derselben Datei sind, kann man action="" leerlassen?

Die Angaben stehen schon innerhalb des Formtags:

PHP:
echo('<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">');
	    echo('<label for="holzart">Holzart</label>');
    	echo('<select name="holzart" id="holzart">');
		echo('<option value="'.$result['Holzart'].'">'.$result['Holzart'].'</option>');
      	echo('<option value="Ahorn amerik">Ahorn amerik</option>');
      	echo('<option value="Ahorn">Ahorn</option>');

Wenn ich jetzt auf bearbeiten klicke, komme ich zwar auf die Seite zum bearbeiten, die Felder sind Leer. Ich habe keine Idee, wie ich das die Zeile übergeben kann bzw. soll, die bearbeitet werden soll.
 
Ok und was willst/musst du an die andere Seite schicken?

Wenn es nur der Wert der Auswahlliste ist, dann solltest du ihn mit $_POST["holzart"] erhalten.
 
Ich mache die Suche und gebe z.b. die Holzart oder Partienummer oder Stärke ein.

Dann kommt die Ausgabe mit den Daten aus der Datenbank, wo der Bearbeitenknopf ganz rechts ist.

Wenn ich in der Zeile auf den Bearbeitenknopf drücke, dann komme ich jetzt auf die nächste Seite, wo der Datensatz ausgegeben werden soll mit den aktuellen Daten, und ich will den jetzt bearbeiten.

Da ich nur den Datensatz bearbeiten will, wo ich den Knopf gedrückt habe, kann ich keine whileschleife verwenden, ausser ich habe da schon meinen Denkfehler.

Wie krieg ich jetzt die edit Seite dazu, die Daten anzuzeigen, die der Datensatz enthält, der auf der Ergebnisseite ausgewählt wurde?

Eventuell Hiddenfield mitschicken und dort das Suchergebnis speichern?
 
Dann mache doch einfach einen normalen Link bei den du die Artikelnummer, Datensatz-ID oder sonst eine eindeutige Kennung angibst. Oder du machst neben jeden Datensatz eine Checkbox (die die entsprechende Kennung enthält), diese markierst du und klickst auf den Button.

Machst du einen normalen Link, kommen die Kennung als $_GET["dein_feld"] auf der anderen Seite an. Nimmst du eine Checkbox und einen Button kannst du die Seite auch mit POST abschicken.
 
Ich werd das mal versuchen, bei Fragen, werd ich mich nochmal melden.

//EDIT

OK ich verzweifel grad an meinem eigenen Unvermögen

PHP:
if(isset($_GET['action']))
	{$sql = "SELECT
				ID,
                Holzart,
				Klasse,
				Trockenheit,
				Partie,
				Kubik,
				Starke,
				Hauptlange,
				Pfad
            FROM
                suchmaschine
            WHERE
                ID = ";

Wie mache ich das WHERE Statement, damit er die ID vom Datensatz prüft?
 
Zuletzt bearbeitet:
Na ganz einfach:

PHP:
// wenn ID von Typ VARCHAR ist, machst du es so
$sql = "... WHERE ID = '" .$_GET["dein_feld"] ."'";
// und wenn es von Typ INTEGER ist, machst du es so
$sql = "... WHERE ID = " .$_GET["dein_feld"];

Jetzt ersetzt du noch "dein_feld" mit dem Namen deiner Variablen und gut ist.

Wobei zu beachten ist das vor allem Werte die mit GET übergeben werden NIE einfach in eine SQL-Abfrage eingebaut werden dürfen! Schau dir deshalb zumindest mal die Funktion mysql_real_escape_string an.
 
Zuletzt bearbeitet:
Jetzt bist du auf dem richtigen Weg.

Aber wie oben geschrieben prüfe die Daten bevor du damit eine Abfrage startest!
 

Neue Beiträge

Zurück