Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql, Datensatz ersetzen
Ich kapiere nicht wie man das machen könnte:
Ich hab ein Gästebuch programmiert, was nicht weiter grossartig ist. Nun, ich wollte dazu einen Adminbereich mit editierfunktion machen.
Wenn ich also zuerst die Daten aus der Datenbank hole und diese in ein Formluar lade, und ich diese dann genau an der gleichen stelle wieder speichern will, also quasi, den Datensatz überschreiben, ... ja eben, wie muss ich das machen??
danke für den Tip
- luc
Prinzip:
Die Tabelle sollte so aufgebaut werden, daß jedem Eintrag eine eindeutige interne Identifikationsnummer (ID) zugewiesen ist. Diese Zuweisung (=Bestimmung der ID) übernimmt MySQL.
CREATE TABLE GBook (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user CHAR(20) NOT NULL,
content VARCHAR(255) NOT NULL,
....
PRIMARY KEY (sig_id),
);
Über diese ID läßt sich der Eintrag eindeutig identifizieren.
INSERT INTO GBook values (NULL;"HAllo Deine Seite find ich cool", ...);
Wird der id-Inhalt über den Insert Befehl nicht angegeben oder der Wert NULL angegebn, so wird automatisch von MySQL diese id belegt und jeweils um den Wert 1 inkerementiert (auto_increment):
1. Record 0
2. Record 1
3. Record 3
Bei Auswahl: SELECT * from GBook WHERE ID = 999
Bei Update: UPDATE GBook set content = "doch nit cool" WHERE ID = 999
edit: Zeilenumbruch, Tabs
jo, ich hab eine Datenbank mit eindeutiger id,
also mit insert oder update geht das...
nun, du hast noch darauf hingewiesen, dass man so auslesen kann:
SELECT * from GBook WHERE ID = 999
ok, ich verstehe das, aber wie kann ich jetzt der einzelne Datensatz auslesen. Also zum Bsp. die Email Zeile der id 999?
irgendwie so:
$str_1 = mysql_result($result,0); // ID
$str_2 = mysql_result($result,1); // name
$str_3 = mysql_result($result,2); // email
$str_4 = mysql_result($result,3); // homepage
$str_5 = mysql_result($result,4); // homepagetitel
$str_6 = mysql_result($result,5); // comment
$str_7 = mysql_result($result,6); // datum
geht aber bei mir nicht :(
danke
- luc
Also manche Leute verstehe ich nicht ... ich dachte Du hast ein Gästebuch geschrieben ... werden keine Datenangezeigt ... was macht das Gästebuch so die ganze Zeit??
array mysql_fetch_array ( resource result [, int result_type]) (http://www.php.net/manual/en/function.mysql-fetch-array.php) oder
array mysql_fetch_assoc ( resource result)
(http://www.php.net/manual/en/function.mysql-fetch-assoc.php) oder
array mysql_fetch_row ( resource result) (http://www.php.net/manual/en/function.mysql-fetch-row.php) oder
object mysql_fetch_object ( resource result) (http://www.php.net/manual/en/function.mysql-fetch-object.php) oder
mixed mysql_result ( resource result, int row [, mixed field])
(http://www.php.net/manual/en/function.mysql-result.php)
ok, sorry, es tut mir ja leid, war eine dumme frage. Obwohl, ich staune immer wieder, wenn man eigentlich immer wieder die alten Routinen übernimmt, die man kennt, ja dann kann es vorkommen, dass es anders 1000-mal einfacher gehen würde. Ich habs jetzt über die While schlaufe gemacht. Danke für die Hilfe.
Ich dachte eben, es würde irgendwie gehen, dass man die id und dann gleich das row anzeigen könnte. Es geht ja auch so, aber eben, vielleicht wäre es einfacher gegangen.
Trotzdem nochmals eine Frage zum update befehl:
Ich hab das jetzt so gemacht:
$conn = mysql_connect($db_server,$db_user,$db_passwort);
mysql_select_db($db_name,$conn);
$query = "UPDATE lucbook Set name = '$name' WHERE id = '$id'";
$query = "UPDATE lucbook Set email = '$email' WHERE id = '$id'";
$query = "UPDATE lucbook Set comment = '$comment' WHERE id = '$id'";
//$query = "UPDATE gb Set homepage = '$homepage' WHERE id = '$id'";
//$query = "UPDATE gb Set homepagetitel = '$homepagetitel' WHERE id = '$id'";
//$query = "INSERT INTO GBook values ('$id','".addslashes($name)."', '".addslashes($email)."', '".addslashes($homepage)."', '".addslashes($homepagetitel)."', '".addslashes($comment)."' ,'".addslashes($datum)."')";
$result = mysql_query($query,$conn);
Das Update funktioniert lustigerweise nur bei comment!
was mach ich falsch, oder würde es irgendwie einfacher gehen?
:confused:
-luc
Hallo,
stat addslashes() würde ich mysql_real_escape_string() verwenden.
Die Updates kannst Du zusammenfassen:
mysql_query($query = "UPDATE lucbook SET
name = '".mysql_real_escape_string($name)."',
email = '".mysql_real_escape_string($email)."',
comment = '".mysql_real_escape_string($comment)
. "' WHERE id = '$id'");
if ( mysql_errno() )
echo "ERROR[".mysql_errno()."] "
.mysql_error()."<br />$query<br />\n";
Sowas in der Art sollte Dir auch 'ne Fehlermeldung liefern ...
edit: Zeilenumbrüche
du hast geschrieben, dass ich besser .mysql_real_escape_string() brauchen soll.
bei mir kommt diese Fehlermeldung:
Fatal error: Call to undefined function: mysql_real_escape_string() in c:\inetpub\wwwroot\guestbook\guestbook.php on line 283
hab ich ne alte php Version?
danke für die Tips
- luc
es geht, endlich ...
herzlichen danke dafür!
es grüsst
- luc
Nein .. war mein Fehler ... mysql_real_escape_string() ist nur im CVS ... mysql_escape_string() heißt das Ding ...
|
-
- |