Mysql DB Daten in eintragungs Formular laden und erweitern und überschreiben

ja du hast recht aber lustigerweise erstellt eh immer noch einen neuen eintrag der einfach lehr ist, ganz erlich solche problehme nerfen mich echt ab.
 
und du mußt dir die variablen hohlen wenn du mit POST arbeitest dann mit
$variable = htmlspecialchars($_POST['variable'])
$variable2 = htmlspecialchars($_POST['variable2'])
usw.

und dann so in die db eintragen

$sql = "Update daten SET ".$variable."".$variable2""; usw. glaube ich zumindest

weil er weiß ja net was du übergeben hasst...

mfg Spikaner

P.S.notfalls alle POST mal durch GET ersetzen und nochmal probieren ^^
 
stimmt glaub ich also $sql = "Update daten SET C1=".$variable." C2=".$variable2"";

so sollte es dann en (i hope)

mfg Spikaner

$sql = "Update daten SET C1= '".$variable."' C2='".$variable2"'";

bei Text die einfachen Anführungszeichen nicht vergessen.

PS: ich find die Art wie du das mit dem Update machst eh irgendwie komisch ^^
 
Sorry Leute, aber ich bekomm gerade ganz fürchterlich Augenkrebs von dem, was hier gepostet wurde ...Rechtschreibfehler ohne Ende ...PHP-Syntax ist hier scheinbar auch fremd, von nicht bemerkten Script- und HTML-Fehlern mal ganz zu schweigen.

1.) Hier schon mal der erste Fehler:
$db_dbname = 'zielvereinbarung';
$db_user = 'root';
$db_pw = "";
$db_host = 'localhost';

$tabellenname = 'daten';
$id = $row['id'];
$name = $row['name'];

mysql_connect($db_host, $db_user, $db_pw);
mysql_select_db($db_dbname) ;
Man verbindet sich besser ERST mit der Datenbank, und ruft danach die Daten ab.

2.) HTML-Fehler:
Ich weiss nicht, nach welchem HTML-Standard das so getippselt wurde, aber man sollte doch versuchen, 100 Leerzeichen durch ein entsprechendes Tag bzw CSS ersetzen.
Desweiteren kennt ein <input> kein "target" - mit Javascript kann man da bestimmt was machen,wenn entsprechende Ereignisse stattfinden.

3.) Fehler:
Eine Update-Funktion im SQL sollte,wenn mehrere Felder geändert werden sollen doch besser mit Kommas separiert werden, denn kommen schon mal weniger Fehler ;)

LG
Andy
 
Hey keine ahnung wieso aber es geht nicht habe mir jetzt bis auf ein tip alles zu herzen genommen und es geht genau gar nicht poste jetzt mal den gesammten code:
<form action="feedback.php" method="post">
<textarea>
<?php
$db_dbname = 'zielvereinbarung';
$db_user = 'root';
$db_pw = '';
$db_host = 'localhost';

$tabellenname = 'daten';
$id = $row['id'];
$name = $row['name'];
$C1 = $row['C1'];
$C2 = $row['C2'];
$C3 = $row['C3'];
$C4 = $row['C4'];
$C5 = $row['C5'];
$C6 = $row['C6'];
$C7 = $row['C7'];
$C8 = $row['C8'];
$C9 = $row['C9'];
$C10 = $row['C10'];
$C11 = $row['C11'];
$datum = $row['datum'];

mysql_connect($db_host, $db_user, $db_pw);
mysql_select_db($db_dbname) ;

$sql = "Select * FROM daten GROUP BY name";
$q = mysql_query($sql);
$data = mysql_fetch_array($q);

echo $data['name'];

$sql = "Update daten SET C1= '".$C1."',
C2= '".$C2."',
C3= '".$C3."',
C4= '".$C4."',
C5= '".$C5."',
C6= '".$C6."',
C7= '".$C7."',
C8= '".$C8."',
C9= '".$C9."',
C10= '".$C10."',
C11= '".$C11."',
name= '".$name."',
datum= '".$datum."'";
?>

</textarea >
<br>
<textarea cols="105">
<?php
echo $data['C1'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C2'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C3'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C4'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C5'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C6'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C7'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C8'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C9'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C10'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['C11'];
?>
</textarea>
<br>
<textarea cols="105">
<?php
echo $data['datum'];
?>
</textarea>
<br>
<input type="submit">
</form>

PhP Button geht nicht sorry irgend jemand sollte da doch durch blicken können!
Danke im foraus
 
Da ich nicht genau weiss, an welchen Kenntnissen es dir mangelt, habe ich mich kurz hingesetzt und dir ein kleines Script geschrieben, dass deinen Anforderungen entsprechen sollte. Setze die nachfolgenden Codeschnipsel in der selben Reihenfolge zusammen, wie sie erscheinen. Ich werde dazu ein paar Dinge erläutern. Das Script enthält nur Basics und keine Griffe in die Trickkiste.

PHP:
<?php
	$edit = false;
	$message = "";
	$db_name = 'datenbankname';
	$db_user = 'root';
	$db_host = 'localhost';
	$db_pw = '';
	if(isset($_GET['edit']))	{ $edit = $_GET['edit']; }

Hier werden erstmals einige Variablen definiert die später gebraucht werden.
$message - Dient später zum Ausgeben von Statusmeldungen
$db_* - Kennst du ja selber. Sind für die Datenkbankverbindung und Tabellenauswahl
$edit - Wird gebraucht um herauszufinden, ob und welchen Datensatz du modifizieren willst

PHP:
	$con = mysql_connect($db_host, $db_user, $db_pw)
		or die(mysql_error());
	$db = mysql_select_db($db_name, $con)
		or die(mysql_error());
Diese Zeilen sollten dir bekannt sein. Zur Datenbank verbinden und eine Tabelle auswählen

PHP:
	if(isset($_POST['insert']))	{
		$sql_data_insert = "INSERT INTO daten (Feedback) VALUES ('".$_POST['feedback']."')";
		$qry_data_insert = mysql_query($sql_data_insert)
			or die(mysql_error());

		if($qry_data_insert)	{
			$message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz erfolgreich eingef&uuml;gt</span>";
		}else{
			$message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz konnte nicht eingef&uuml;gt werden</span>";
		}
	}elseif(isset($_POST['update']))	{
		$sql_data_update = "UPDATE daten SET Feedback='".$_POST['feedback']."' WHERE ID=".$_POST['id'];
		$qry_data_update = mysql_query($sql_data_update)
			or die(mysql_error());

		if($qry_data_update)	{
			$message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz erfolgreich modifiziert</span>";
			$edit = false;
		}else{
			$message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz konnte nicht modifiziert werden</span>";
		}
	}
In der Maske befinden sich nachher zwei Buttons. Einer zum Einfügen und der andere zum Modifzieren des Datensatzes. Wenn der Einfügen-Button gedrückt wurde, wird das ausgeführt was nach if(isset($_POST['insert'])) { bis } steht. Wird der Modifizieren-Button gedrückt, führt das Script den entsprechend unteren Teil des Codeblockes aus.

PHP:
	if($edit)	{
		$sql_data_edit = "SELECT ID, Feedback FROM daten WHERE ID=".$edit;
		$qry_data_edit = mysql_query($sql_data_edit)
			or die(mysql_error());
		$data_edit = mysql_fetch_array($qry_data_edit);
	}
Wenn der Modifizieren-Button gedrückt wurde, wird über die URL ein Parameter 'edit' übergeben. Die Variable $edit (aus dem ersten Codeblock) wird dann mit dem Inhalt von $_GET['edit'] (der ID des zu modifizierenden Datensatzes) gefüllt. Wenn also $edit einen Wert (und nicht false) zugewiesen wurde, heisst das, dass der User den Datensatz editieren will. Somit wird dieser Codeblock ausgefüllt, der die Daten des zu bearbeitenden Datensatzes ausliest und so aufbereitet, dass das Feedback in der Textarea dargestellt wird.

PHP:
	$sql_data_list = "SELECT ID, Feedback FROM daten";
	$qry_data_list = mysql_query($sql_data_list)
		or die(mysql_error());
?>
Da ich am Schluss eine Liste aller bereits eingefügten Datensätze möchte, lese ich hier noch alle Datensätze aus.

PHP:
<html>
<head>
<title>Beispiel</title>
</head>

<body>
<? echo $message; ?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" name="modData" method="POST">
<input type="hidden" name="id" value="<? echo $edit; ?>">
<textarea rows="6" cols="50" name="feedback"><? if(!empty($data_edit['Feedback'])) { echo $data_edit['Feedback']; } ?></textarea>
<br />
<? if($edit)	{	?>
<input type="submit" name="update" value="Modifizieren">
<? }else {	?>
<input type="submit" name="insert" value="Einf&uuml;gen">
<? }	?>
<br />
<hr />
<?
	while($all_data = mysql_fetch_array($qry_data_list))	{	
		echo "[<a href=\"".$_SERVER['PHP_SELF']."?edit=".$all_data['ID']."\">Edit</a>] | ";
		echo $all_data['ID']." | ".$all_data['Feedback']."<br />";
	} 
?>
</form>
</body>
</html>
Zu guter letzt kommt die Maske. Hier wird einfach ein Formular definiert, welches bei Submit die aktuelle Seite wieder aufruft und die Daten über POST übergibt. Gleich darunter wird ein Hidden-Field definiert, in welches nach dem Drücken vom Modifizieren-Button die ID des zu modifizierenden Datensatzes geschrieben wird. Die wird nachher gebraucht um den Datensatz upzudaten.
Darunter dann die Textarea und die Buttons. Wenn $_GET['edit'] gesetzt ist, wird der Modifizieren-Button angezeigt, sonst der Einfügen-Button.

Darunter wird dann noch eine kleine Liste mit den schon vorhandenen Datensätzen ausgegeben.

Ich hoffe dir mit diesem kleinen Code etwas geholfen zu haben. Sorgfältig durchlesen und dann selber nach eigenen Bedürfnissen nachprogrammieren.

Abschliessend noch die Mysql-Tabelle die ich hierbei gebraucht habe:
Code:
CREATE TABLE `daten` (
  `ID` int(11) NOT NULL auto_increment,
  `Feedback` text collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Grüsse
De Igäl
 
Zuletzt bearbeitet:
Zurück