ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
599
599
EMPFEHLEN
-
18.04.05 10:47 #1
- Registriert seit
- Apr 2005
- Beiträge
- 8
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:
So die Tabelle in der DB sieht dann so aus:PHP-Code:<?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>
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
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?PHP-Code:<!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>
Ich komme da einfach nicht weiter. Ich hoffe von euch kann mir da jemand weiter helfen odeR?
Gruß cheergirly
-
Ist nicht getestet.PHP-Code:
<?php
if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wird dann
include "config.php";
$result = mysql_query("SELECT * FROM test WHERE City='" . $id ."'") OR die(mysql_error()); // Datensatz auslesen.
$result = mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;)
}
?>
<!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" value="<?php echo $result['titel']; ?>"></td>
</tr>
<tr>
<td height="77"><strong>Test:</strong></td>
<td><textarea name="text" cols="50" id="text"><?php echo $result['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>
Der Link sieht dann so aus:
http://dein-pfad.com/edit.php?id=idD...endenBeitrages
Wenn du jetzt aber auf eintragen klickst wird nochmals ein Datensatz erstellt. Da musst du dann schon noch was abändern. Kannst ja zum Beispiel über ein Hidden Feld die Varialbe ID mitgeben und kannst dann beim Speichern abfangen ob ID gesetzt ist oder nicht. Wenn es gesetzt ist (kannst du testen mit der funktion isset()) musst du den Beitrag mit der ID updaten und sonst einen neuen speichern. Verstanden?
MFG
redXGeändert von redX (18.04.05 um 13:10 Uhr)
Es gibt ein leben vor dem Tod
-
18.04.05 13:27 #3
- Registriert seit
- Apr 2005
- Beiträge
- 8
Hallo,
um ehrlich zu sein habe ich gerade gar nichts mehr verstanden.
Hab das mal bis jetzt so gemacht:
den Link zum Editieren habe ich nun so gemacht:PHP-Code:<?php
include "../data/config.php";
?>
<!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>Unbenanntes Dokument</title>
<style type="text/css">
<!--
.Stil25 {font-family: Arial, Helvetica, sans-serif; color: #000000; font-weight: bold; }
-->
</style>
</head>
<body>
<p>Ausgabe:</p>
<?php // auslesen der Daten//
$sql = "SELECT
id,
titel,
text
FROM
test
";
$return = mysql_query($sql) OR die(mysql_error());
?>
<?php
while($_data = mysql_fetch_assoc($return))
{
?>
<table width="50%" border="0">
<tr>
<td width="23%" height="29"><strong>Überschrift:</strong></td>
<td width="77%"><span class="Stil25"><?php echo $_data['titel']; ?></span></td>
</tr>
<tr>
<td height="31"><strong>Nachricht:</strong></td>
<td><span class="Stil25"><?php echo $_data['text']; ?></span></td>
</tr>
<tr>
<td height="31">Edit:</td>
<td><a href="edit.php?id=id">[ zum edit ] </a></td>
</tr>
<tr>
<td height="31"> </td>
<td> </td>
</tr>
<?php
}
?>
</table>
<p></p>
<p><a href="test.php">[ Eintragen ]</a></p>
</body>
</html>
<a href="edit.php?id=id">[ zum edit ] </a>
aber da wird dann gar keine ID mit übergeben
Hmm ich habe mir das alles leichter vorgestellt und was du bei deinem Edit noch geschrieben hast das habe ich auch nicht verstanden. Ich hoffe du kannst mir nochmals helfen
-
Na klar wird da keine ID übergeben

<td><a href="edit.php?id=id">[ zum edit ] </a></td>
Du hast hier ja fest eingetragen: id=id. Wie soll es denn da ne ID überbeben. Die ID steht ja auch in der $_data variabel drin. Also mach mal so was:
Hast du das mal verstanden?PHP-Code:<td><a href="edit.php?id=<?php echo $_data['id']; ?>">[ zum edit ] </a></td>
Jetzt wird edit.php übergeben und dort hast du dann die ID zur verfügung.
Dies liest nun eben einen Datensatz aus der DB. Und welcher? Der mit der ID, die über die URL übergeben wurde. Das Resultat ist dann in der Variabel $result gespeichert. Auf diese kannst du zugreifen wie bei dem Code den du gezeigt hast -> $_data['titel']PHP-Code:<?php
if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wird dann
include "config.php";
$result = mysql_query("SELECT * FROM test WHERE City='" . $id ."'") OR die(mysql_error()); // Datensatz auslesen.
$result = mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;)
}
?>
Nun haben wir eben dieses Codestück. Das ist dazu da, um neue Datensätze anzulegen sowie diese zu bearbeiten. Jetzt, wenn auf eintragen geklickt wird, wird jedesmal ein neuer Datensatz angelegt. Auch wenn du einen Datensatz editiern möchtest. So weit mal verstanden?PHP-Code:<?php
if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wird dann
include "config.php";
$result = mysql_query("SELECT * FROM test WHERE City='" . $id ."'") OR die(mysql_error()); // Datensatz auslesen.
$result = mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;)
}
?>
<!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" value="<?php echo $result['titel']; ?>"></td>
</tr>
<tr>
<td height="77"><strong>Test:</strong></td>
<td><textarea name="text" cols="50" id="text"><?php echo $result['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>
Jetzt möchtest du ja, wenn er editiern geklickt hat einen Datensatz abändern, und nicht einen neuen anlegen. Also musst du irgendwann mal testen, ob er einen neuen anlegen oder einen Editiern möchte und dann musst du ja ein anderes Statement auslösen.
Habe das Codestück noch angepasst. Natürlich kannst du es auch anderst lösen
Nun verstanden? Das ganze ist ungetestet...PHP-Code:<?php
$action = "save_new.php"; // Standard mässig wird das save_new.php aufgerufen wenn man speicher möchte. Also wird ein neuer Eintrag in die DB geschrieben
if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wurde, was bedeutet, der User möchte einen Eintrage editieren
include "config.php";
$result = mysql_query("SELECT * FROM test WHERE City='" . $id ."'") OR die(mysql_error()); // Datensatz auslesen.
$result = mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;)
$action = "save_edit.php"; // Da der User einen Eintrage editieren möchte, wird nicht save_new.php aufgerufen sondern save_edit.php
}
?>
<!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="<?php echo $action; /* Hier wird nun eingetragen, welche aktion ausgefürht wird. Also save new oder save edit... */ ?>">
<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" value="<?php echo $result['titel']; ?>"></td>
</tr>
<tr>
<td height="77"><strong>Test:</strong></td>
<td><textarea name="text" cols="50" id="text"><?php echo $result['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>
MFG & gn8
redXEs gibt ein leben vor dem Tod
-
19.04.05 08:39 #5
- Registriert seit
- Apr 2005
- Beiträge
- 8
Hallo und guten Morgen,
danke für deinen Ausführliche Erklärung. Hab soweit auch alles verstanden und ich habe es auch schon mal versucht. Nur jetzt kommt noch eine Frage hoch. Was steht denn in:
save_new.php
und in
save_edit.php
Das sind ja wieder zwei Dateien was ich anlegen muss oder? Hmm ich währe dir sehr Dankbar, wenn du mir da nochmals helfen wurdest.
Gruß
PS: Aus dem City habe ich nun mal id gemacht das ist doch OK oder?
-
klar muss city id heissen. sorry

Also das mit save_new und save_edit ist nur eine möglichkeit wie du das problem lösen kannst. Du kannst es auch in einem File machen. Es geht einfach darum, das du entweder, nämlich wenn man einen neuen Beitrag erstellen möchte, eine INSERT INTO SQL Statement abgeben muss, und wenn man einen Beitrag editiren möchte, muss man ne UPDATE Statment schreiben. Leider ist PHP nun nicht so gescheit und kann selber entscheiden ob ein UPDATE oder ein INSERT INTO abgeben muss. Also musst du das machen. Jetzt, ebe mit save_new und save_edit hast du entweder das save_new File mit der INSERT INTO Anweisung oder das save_edit mit der UPDATE Anweisung.
Du kannst aber auch ein save.php machen. Und dann, wenn eine ID über das Formular übergeben wurde (was bedeutet, das man einen Beitrag editiern möchte, eben den mit der ID im Link) wird der UPDATE Befehl ausgefürht. Wenn keine ID vorhanden ist wird ein INSERT INTO gemacht. Kannst es machen wie du möchtest...
Alles klar?
MFG
redXEs gibt ein leben vor dem Tod
-
19.04.05 09:58 #7
- Registriert seit
- Apr 2005
- Beiträge
- 8
Hallo,
danke dass du dich nochmals gemdelrt hast. OK bei
save_new.php
kommt dann also nochmals folgendes rein:
Habe ich das richtig verstnaden?PHP-Code: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;
}
?>
Und bei save_edit.php kommt dann folgendes rein:
Habe ich das nun auch so richtig verstanden?PHP-Code:if(!empty($_POST))
{
$sql = "$sql = "UPDATE
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;
}
?>
-
Stimmt genau
Jetzt hat der Code eifach noch ein paar Syntax Fehler ... aber ich denke das ist dir beim Copy & Past unterlaufen
Schön wäre es natürlich wenn du noch anzeigst: Beitrage gespeichert oder Beitrag editiert. Aber das ist dann nur noch Kosmetik ...
MFG
redXEs gibt ein leben vor dem Tod
-
19.04.05 10:09 #9
- Registriert seit
- Apr 2005
- Beiträge
- 8
Hallo,
hmm wo sind denn da noch Fehler drin? * grübel *
Hmm ich hatte eigentlich gedacht dass ich das noch so mache, dass ich auch nee Ausgabe mache dass dieser Beitrag editiert worden ist. Denn eine Ausgabe wenn der Beitrag geschrieben worden ist das habe ich schon. Aber ich weiß nicht wie ich das machen muss dass ich noch eintragen lassen kann wenn der Beitrag editiert worden ist. Dann hatte ich noch gedacht dass ich auch noch anzeigen lasse wie oft der Beitrag editiert worden ist. Geht das denn auch wenn ja das muss ich ja dann in der edit Datei machen gelle oder? Hmm ich weiß es nicht. Meine PHP Kenntnisse sind wie gesagt noch nicht so gut.Schön wäre es natürlich wenn du noch anzeigst: Beitrage gespeichert oder Beitrag editiert. Aber das ist dann nur noch Kosmetik ...
Gruß cheergirly
-
19.04.05 10:40 #10
- Registriert seit
- Apr 2005
- Beiträge
- 8
Hallo,
so hab es gerade mal ausprobiert und nun bekomme ich folgende Meldung:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO test ( titel, text, ) VALUES
und zwar in der save_edit.php
Die Datei sieht nun so aus:
PHP-Code:<?php
include "config.php";
if(!empty($_POST))
{
$sql = "Update INTO test
(
titel,
text,
)
VALUES
(
'" . addslashes($_POST["titel"]) . "',
'" . addslashes($_POST["text"]) . "',
)
";
mysql_query($sql) OR die(mysql_error());
header("Location: ");
exit;
}
?>
-
http://www.w3schools.com/sql/sql_update.asp
Hier wird dir geholfen. Das INTO braucht es nicht und das Komma nach text auch nicht.
Das mit dem Edit.
Du kannst ja noch ein Feld machen in der DB das die anzahl der Editierungen beinhaltet. Also zu beginn ist es 0. Und bei jedem Edit wird die anzahl dort um 1 erhöt
MFG
redXEs gibt ein leben vor dem Tod
-
19.04.05 11:10 #12
- Registriert seit
- Apr 2005
- Beiträge
- 8
Hallo,
hmm wenn ich das auch so mache wie du mir das gerade gesagt hast dann bekomme ich aber immernoch diese Meldung:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( titel, text ) VALUES ( 'H',
-
UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'
check das Manual das ich gepostet habe
MFG
redXEs gibt ein leben vor dem Tod
-
19.04.05 11:34 #14
- Registriert seit
- Apr 2005
- Beiträge
- 8
Bitte was soll ich machen? Das was du mir gerade geschrieben hast das passt ja ganz und gar nicht zu dem was ich habe oder?
-
Das ist auch nur ein Beispiel von ihm. Um die Syntax des UPDATE-Befehls zu verdeutlichen.
Hier der Link zur UPDATE-SyntaxGeändert von Dennis Wronka (19.04.05 um 11:38 Uhr)
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
Ähnliche Themen
-
In welcher Datei kann ich die Gruppenrechte editieren ?
Von rollerueckwaerts im Forum Linux & UnixAntworten: 4Letzter Beitrag: 20.10.10, 13:17 -
JAR und JAD Editieren ?!
Von karabey im Forum JavaAntworten: 19Letzter Beitrag: 07.07.04, 17:21 -
dbm editieren
Von Krypthonas im Forum PHPAntworten: 6Letzter Beitrag: 29.04.03, 19:01 -
alt tag editieren
Von derben im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 30.01.03, 17:47 -
Statuszeile editieren/Adresszeile editieren
Von mudderbaimer im Forum HTML & XHTMLAntworten: 8Letzter Beitrag: 26.08.02, 15:16





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren