Wie kann ich was Editieren?
cheergirly
- php
0 Tom
Hallo euch allen,
ich habe mal eine Frage. Aber vor weg ich bin ganz neu in PHP und kenne mich noch kaum aus. Ich wurde gerne folgendes haben:
Ich habe eine Seite die heißt:
test.php wie die Datei aussieht das seht Ihr hier:
<?php
include "config.php";
if(!empty($_POST))
{
$sql = "INSERT INTO test
(
titel,
text,
datum
)
VALUES
(
'" . addslashes($_POST["titel"]) . "',
'" . addslashes($_POST["text"]) . "',
NOW()
)
";
mysql_query($sql) OR die(mysql_error());
header("Location: test_1.php");
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Nur zum Test</title>
</head>
<body>
<form name="form1" method="post" action="">
<table width="50%" border="0">
<tr>
<td width="28%" height="29"><strong>Überschrift:</strong></td>
<td width="72%"><input name="titel" type="text" id="titel" size="30"></td>
</tr>
<tr>
<td height="77"><strong>Test:</strong></td>
<td><textarea name="text" cols="50" id="text"></textarea></td>
</tr>
<tr>
<td height="42"> </td>
<td><input name="eintragen" type="submit" id="eintragen" value=">> Senden"></td>
</tr>
</table>
</form>
</body>
</html>
So die Tabelle in der DB sieht dann so aus:
CREATE TABLE test
(
id
INT( 6 ) NOT NULL ,
titel
VARCHAR( 200 ) NOT NULL ,
text
TEXT NOT NULL ,
datum
DATETIME NOT NULL
);
So dann habe ich noch eine Datei die heißt edit.php
Wie die datei
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Nur zum Test</title>
</head>
<body>
<form name="form1" method="post" action="">
<table width="50%" border="0">
<tr>
<td width="28%" height="29"><strong>Überschrift:</strong></td>
<td width="72%"><input name="titel" type="text" id="titel" size="30"></td>
</tr>
<tr>
<td height="77"><strong>Test:</strong></td>
<td><textarea name="text" cols="50" id="text"></textarea></td>
</tr>
<tr>
<td height="42"> </td>
<td><input name="eintragen" type="submit" id="eintragen" value=">> Senden"></td>
</tr>
</table>
</form>
</body>
</html>
So meine Frage ist nun wie muss ich das machen, dass wenn ich dann auf einen Beitrag klicke, dass ich den dann editieren kann und zwar mit dem Formular edit.php und wie muss der Link dann aussehen bei dem Beitrag?
Ich komme da einfach nicht weiter. Ich hoffe von euch kann mir da jemand weiter helfen odeR?
Gruß cheergirly
Hello,
zu Deinem Script:
addslashes() ist die falsche Funktion für MySQL.
Außerdem steht zu vermuten, dass PHP schon Maskierungs-Backslashes hinzugefügt hat.
Das schaust Du nach in der PHPINFO(): magic_quotes_gpc.
Wenn das eingeschaltet ist, maskiert PHP selbsttätig, leider aber falsch für die Textschnittstelle von MySQL. Also dann die Masklierugnen wieder entfernen mit strip_slashes() (such auch mal im Archiv nach "strip()" ) und dann wieder passend maskieren mit mysql_[real_]escape_string().
So meine Frage ist nun wie muss ich das machen, dass wenn ich dann auf einen Beitrag klicke, dass ich den dann editieren kann und zwar mit dem Formular edit.php und wie muss der Link dann aussehen bei dem Beitrag?
Mal Dir Bildchen, wie die Screens vor und nach welcher Aktion aussehen sollen.
Wie Du die MySQL-Abfrage für die Datenmanipulation machst, weißt Du doch sicher: update.
Noch ein Tipp:
Wenn Du die Datenstruktur anlegst, bau einen Update-Zähler mit ein. Bei jedem Schreiben zählst Du den eins hoch. Wenn Du die Daten nun mit SELECT in Dein HTML-Formular gezaubert hast, speicherst Du diesen Zähler in der Session des Users und kannst ihn auch mit ausliefern als Hidden-Field.
Wenn der User nun versucht, die geänderten Daten zurückzuschreiben, fragst Du nicht nur nach der ID des Datensatzes, sondern auch, ob der Zähler noch passt. Wenn der nämlich schon abweicht, war jemand anders schneller mit dem Ändern und DU musst dem User leider das Ändern wegen Gruppenkonfliktes ablehnen ;-))
Harzliche Grüße aus http://www.annerschbarrich.de
Tom