UPDATE eines MYSQL-Datenbanksatz
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
date
daten
eingabeformular
ergebnis
fehler
fehlermeldung
formular
ges
kaltmiete
kaution
mietobjekt
mwst
nummer
objekt
parameter
provision
semikolon
set
spalten
update
-
Und wiedermal ein Problemchen....
Hier das Formular (Auszug):
<?PHP
include "dbconnect.php";
$id_get = $HTTP_GET_VARS["id"];
$abfrage = "SELECT * FROM mietobjekte WHERE id LIKE '$id_get'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
{
ECHO"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>
<title>Eingabeformular</title>
</head>
<body>
<table border='0' width='100%' id='table1' cellspacing='0'>
<tr>
<td height='30' bgcolor='#F2F2F2'>
<p align='center'><b><font face='Arial'>Eingabemaske f?r Mietobjekte mit der Datenbanknummer: ".$row['id']."</font></b></td>
</tr>
</table>
<table border='1' width='100%' id='table5'>
<tr>
<td bgcolor='#C0C0C0'>
<p align='center'><font face='Arial'><b>Allgemeine Objektdaten</b></font></td>
</tr>
</table>
<br>
<form action='update_miet.php' method='post' name='miet_eingabe'>
<input type='hidden' name='id' value='".$id_get."'>
<table border='1' width='100%' id='table2'>
<tr>
<td width='25%' bgcolor='#F2F2F2'><font face='Arial'><b>Objekt-Nummer:</b></font></td>
<td width='25%'><font face='Arial'>
<input value='".$row['obj_nr']. "' size='20' name='obj_nr' style='font-weight: 700'></font></td>
<td width='25%' bgcolor='#F2F2F2'><font face='Arial'><b>Kaltmiete pro m?:</b></font></td>
<td width='25%'><font face='Arial'>
<input size='10' value='".$row['kaltmiete_m2']."' name='kaltmiete_m2' style='font-weight: 700'><b> </b>
</font><b><font face='Arial'>?</font></b></td>
</tr>
<tr>
<td width='25%' bgcolor='#F2F2F2'><font face='Arial'><b>Ort:</b></font></td>
<td width='25%'><font face='Arial'>
<input size='20' value='".$row['ort']."' name='ort' style='font-weight: 700'></font></td>
<td width='25%' bgcolor='#F2F2F2'><font face='Arial'><b>Kaltmiete gesamt:</b></font></td>
<td width='25%'><font face='Arial'>
<input size='10' value='".$row['kaltmiete_ges']."' name='kaltmiete_ges' style='font-weight: 700'><b> ?</b></font></td>
</tr>
Hier das Update Script
<?PHP
include("dbconnect.php"); //Kontaktaufnahme mit Datenbank
$obj_nr = $HTTP_POST_VARS["obj_nr"]; //variablen werden vom Formular ?bernommen
$ort = $HTTP_POST_VARS["ort"];
$strasse = $HTTP_POST_VARS["strasse"];
$id = $HTTP_POST_VARS["id"];
$kaltmiete_m2 = $HTTP_POST_VERS["kaltmiete_m2"];
$kaltmiete_ges = $HTTP_POST_VARS["kaltmiete_ges"];
$nebenkosten_m2 = $HTTP_POST_VARS["nebenkosten_m2"];
$nebenkosten_ges = $HTTP_POST_VARS["nebenkosten_ges"];
$flaeche = $HTTP_POST_VARS["flaeche"];
$wohnungsart = $HTTP_POST_VARS["wohnungsart"];
$lage_whg = $HTTP_POST_VARS["lage_whg"];
$lage_haus = $HTTP_POST_VARS["lage_haus"];
$ausstattung_1 = $HTTP_POST_VARS["ausstattung_1"];
$ausstattung_2 = $HTTP_POST_VARS["ausstattung_2"];
$ausstattung_3 = $HTTP_POST_VARS["ausstattung_3"];
$ausstattung_4 = $HTTP_POST_VARS["ausstattung_4"];
$ausstattung_5 = $HTTP_POST_VARS["ausstattung_5"];
$ausstattung_6 = $HTTP_POST_VARS["ausstattung_6"];
$ausstattung_7 = $HTTP_POST_VARS["ausstattung_7"];
$ausstattung_8 = $HTTP_POST_VARS["ausstattung_8"];
$ausstattung_9 = $HTTP_POST_VARS["ausstattung_9"];
$ausstattung_10 = $HTTP_POST_VARS["ausstattung_10"];
$mietbeginn = $HTTP_POST_VARS["mietbeginn"];
$kaution = $HTTP_POST_VARS["kaution"];
$provision = $HTTP_POST_VARS["provision"];
$aendern = "UPDATE
mietobjekte
SET
obj_nr = '$obj_nr',
ort = '$ort',
strasse = '$strasse',
flaeche = '$flaeche',
wohungsart = '$wohnungsart',
kaltmiete_m2 = '$kaltmiete_m2',
kaltmiete_ges = '$kaltmiete_ges',
nebenkosten_m2 = '$nebenkosten_m2',
nebenkosten-ges = '$nebenkosten_ges',
lage_whg = '$lage_whg',
lage_haus = '$lage_haus',
ausstattung_1 = '$ausstattung_1',
ausstattung_2 = '$ausstattung_2',
ausstattung_3 = '$ausstattung_3',
ausstattung_4 = '$ausstattung_4',
ausstattung_5 = '$ausstattung_5',
ausstattung_6 = '$ausstattung_6',
ausstattung_7 = '$ausstattung_7',
ausstattung_8 = '$ausstattung_8',
ausstattung_9 = '$ausstattung_9',
ausstattung_10 = '$ausstattung_10',
kaution = '$kaution',
provision = '$provision',
mietbeginn = '$mietbeginn',
datum = NOW()
WHERE
id = '$id'";
$update = mysql_query($aendern);
ECHO "Daten wurden ordentlich an die Datenbank ?bermittelt, Fenster kann geschlossen werden";
?>
Er spuckt zwar keine Fehlermeldung aus, aber geupdatet wird auch net
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
nach NOW() kommt ein ";"
ausserdem w?rde ich hinter "$update = mysql_query($aendern);" ein "or die" setzen... damit bei fehlgeschlagener Eintragung auch ne "Fehlermeldung" kommt. Bsp:
$update = mysql_query($aendern) or die ("Daten konnten nicht eingetragen werden weil der Scripter besoffen war");
-
Gemacht wie befohlen, aber nu spuckt er ja wie gewollt oder eben nicht ne Fehlermeldung aus....warum nur heul*
-
id int(11)
obj_nr text
ort text
strasse text
flaeche text
wohnungsart text
kaltmiete_m2 text
kaltmiete_ges text
nebenkosten_m2 text
nebenkosten_ges text
lage_whg text
lage_haus text
ausstattung_1 text
...
ausstattung_10 test
kaution text
provision text
mietbeginn text
bild text
datum date
aktiv int(1)
-
?ndere mal die WHERE-Klausel ab:
Alt:
WHERE
id = '$id'";
Neu:
WHERE
id = $id";
Laut deiner Angaben zum Tabellenaufbau ist die Spalte id vom Typ int, daher wird der ?bergebene Wert nicht in Hochkommata oder Anf?hrungsstriche eingeschlossen.
Die vorhin vorgeschlagene ?nderung mit dem Semikolon nach NOW() hast du hoffentlich auch r?ckg?ngig gemacht. Dann solltest du statt NOW() die Funktion CURDATE() benutzen. NOW() ist f?r Spalten von dem Typen DATETIME, du benutzt sie aber auf eine Spalte mit dem Typen DATE.
Alt:
datum = NOW()
Neu:
datum = CURDATE()
-
$aendern = "UPDATE
mietobjekte
SET
obj_nr = '$obj_nr',
ort = '$ort',
strasse = '$strasse',
flaeche = '$flaeche',
wohungsart = '$wohnungsart',
kaltmiete_m2 = '$kaltmiete_m2',
kaltmiete_ges = '$kaltmiete_ges',
nebenkosten_m2 = '$nebenkosten_m2',
nebenkosten-ges = '$nebenkosten_ges',
lage_whg = '$lage_whg',
lage_haus = '$lage_haus',
ausstattung_1 = '$ausstattung_1',
ausstattung_2 = '$ausstattung_2',
ausstattung_3 = '$ausstattung_3',
ausstattung_4 = '$ausstattung_4',
ausstattung_5 = '$ausstattung_5',
ausstattung_6 = '$ausstattung_6',
ausstattung_7 = '$ausstattung_7',
ausstattung_8 = '$ausstattung_8',
ausstattung_9 = '$ausstattung_9',
ausstattung_10 = '$ausstattung_10',
kaution = '$kaution',
provision = '$provision',
mietbeginn = '$mietbeginn',
datum = CURDATE()
WHERE
id = $id";
$update = mysql_query($aendern) or die ("Daten konnten nicht geändert werden");
ECHO "Daten wurden ordentlich an die Datenbank ?bermittelt, Fenster kann geschlossen werden";
?>
so habsch nun geht aber immernoch net menno
kanns heirran liegen?
Formular:
include "dbconnect.php";
$id_get = $HTTP_GET_VARS["id"];
$abfrage = "SELECT * FROM mietobjekte WHERE id LIKE '$id_get'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
{
ECHO"
....
<input type='hidden' name='id' value='".$id_get."'>
....
";
?>
-
Auf jeden Fall. Wo kommt das denn her?
-
na das das formular mit dem die daten eingegeben bzw. ge?ndert werden sollen hier der quelltext:
sollte er zu lang sein oder nich wichtig bitte l?sch es direkt oder so liebster aller mods
<?PHP
include "dbconnect.php";
$id_get = $HTTP_GET_VARS["id"];
$abfrage = "SELECT * FROM mietobjekte WHERE id LIKE '$id_get'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
{
ECHO"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>
<title>Eingabeformular</title>
</head>
<body>
<table border='0' width='100%' id='table1' cellspacing='0'>
<tr>
<td height='30' bgcolor='#F2F2F2'>
<p align='center'><b><font face='Arial'>Eingabemaske f?r Mietobjekte mit der Datenbanknummer: ".$row['id']."</font></b></td>
</tr>
</table>
<table border='1' width='100%' id='table5'>
<tr>
<td bgcolor='#C0C0C0'>
<p align='center'><font face='Arial'><b>Allgemeine Objektdaten</b></font></td>
</tr>
</table>
<br>
<form action='update_miet.php' method='post' name='miet_eingabe'>
<input type='hidden' name='id' value='".$id_get."'>
<table border='1' width='100%' id='table2'>
<tr>
<td width='25%' bgcolor='#F2F2F2'><font face='Arial'><b>Objekt-Nummer:</b></font></td>
<td width='25%'><font face='Arial'>
<input value='".$row['obj_nr']. "' size='20' name='obj_nr' style='font-weight: 700'></font></td>
<td width='25%' bgcolor='#F2F2F2'><font face='Arial'><b>Kaltmiete pro m?:</b></font></td>
<td width='25%'><font face='Arial'>
<input size='10' value='".$row['kaltmiete_m2']."' name='kaltmiete_m2' style='font-weight: 700'><b> </b>
</font><b><font face='Arial'>?</font></b></td>
</tr>
[...] gek?rzt
<tr>
<td width='33%' bgcolor='#F2F2F2'> </td>
<td> </td>
</tr>
<tr>
<td width='33%' bgcolor='#F2F2F2'><b><font face='Arial'>Kaution:</font></b></td>
<td><font face='Arial'>
<input size='20' name='kaution' style='font-weight: 700'></font></td>
</tr>
<tr>
<td width='33%' bgcolor='#F2F2F2'><b><font face='Arial'>Provision:</font></b></td>
<td>
<select name='provision' size='1'>
<option selected><font face='Arial' color='#FF0000'><b>provisionsfrei</b></font></option>
<option><font face='Arial'>1 Monatskaltmiete zzgl. MwSt</option>
<option>2 Monatskaltmieten zzgl. MwSt</option>
<option>3 Monatskaltmieten zzgl. MwSt</option>
</font>
</select></font></td>
</tr>
</table>
<p> </p>
<p><br>
<input name='senden' type='image'
onmouseover='this.src='images/but_senden_blue.gif''
onmouseout='this.src='images/but_senden.gif''
onmousedown='this.src='images/but_senden_blue_down.gif''
onmousedown='return check()'
onmouseup='this.src='images/but_senden_blue.gif''
src='images/but_senden.gif' value=Login onSubmit='return check()'>
</form>
</p>
<!-- <form name='mf' target='_blank' action='hochladen.php' method='post' enctype='multipart/form-data'>
<input type='submit' NAME='senden' VALUE='Bild hochladen'>
Bild: <input type='file' name='bilddatei' value='durchsuchen'> -->
</form>
</body>
</html>
";
}
?> -
Na ja, die betreffende Stelle hattest du ja bereits schon gepostet gerade. L?uft es denn jetzt?
-
ne kommt immernoch fehlermeldung von wegen daten konnten nicht ge?ndert werden....
-
Gib doch mal als Fehlermeldung folgendes aus:
Alt:
$update = mysql_query($aendern) or die ("Daten konnten nicht ge?ndert werden");
Neu:
$update = mysql_query($aendern) or die ("Daten konnten nicht ge?ndert werden<br>Abfrage: " . $aendern);
Entweder findest du selbst den Fehler oder poste sonst halt die Ausgabe.
Die Ausgabe mit die() solltest du aus Sicherheitsgr?nden aber wieder zur?ck?ndern, wenn das Problem hier gel?st ist. -
folgendes wird ausgegeben:
UPDATE mietobjekte SET obj_nr = '1254', ort = 'Bautzen', strasse = 'Wendische Str.', flaeche = '83,00', wohungsart = '2', kaltmiete_m2 = '', kaltmiete_ges = '', nebenkosten_m2 = '', nebenkosten-ges = '', lage_whg = ' 1.OG', lage_haus = '', ausstattung_1 = '', ausstattung_2 = '', ausstattung_3 = '', ausstattung_4 = '', ausstattung_5 = '', ausstattung_6 = '', ausstattung_7 = '', ausstattung_8 = '', ausstattung_9 = '', ausstattung_10 = '', kaution = '', provision = 'provisionsfrei', mietbeginn = '', datum = CURDATE() WHERE id = 104 -
Der Fehler ist:
Alt:
$aendern = "UPDATE
mietobjekte
SET
[...]
nebenkosten-ges = '$nebenkosten_ges',
[...]
WHERE
id = $id";
Neu:
$aendern = "UPDATE
mietobjekte
SET
[...]
nebenkosten_ges = '$nebenkosten_ges',
[...]
WHERE
id = $id";
Voll ?bersehn...
Aber lass mal die anderen ?nderungen auch drin. -
menno geht immernoch net...
aber danke das du diesen....schhhhh kleinen Fehler gefunden hast, hab das 3 mal durchgelesen gehabt nach fehlern und nix gefunden
fehler liegt wohl in line 7 Undefined variable: HTTP_POST_VERS hab mal error_reporting(E_ALL); gemacht
[...]
4 $obj_nr = $HTTP_POST_VARS["obj_nr"]; //variablen werden vom Formular ?bernommen
5 $ort = $HTTP_POST_VARS["ort"];
6 $strasse = $HTTP_POST_VARS["strasse"];
7 $id = $HTTP_POST_VARS["id"];
8 $kaltmiete_m2 = $HTTP_POST_VERS["kaltmiete_m2"];
9 $kaltmiete_ges = $HTTP_POST_VARS["kaltmiete_ges"];
10 $nebenkosten_m2 = $HTTP_POST_VARS["nebenkosten_m2"];
11 $nebenkosten_ges = $HTTP_POST_VARS["nebenkosten_ges"];
[...]
dies steht ja im formular des der fehler? ich weis frage doppelt... :-)
<input type='hidden' name='id' value='".$id_get."'> -
Na dann schau doch mal in die Zeile 7 *g*
Hier die Fehler, die ich gefunden habe:
update_miet.php:
alt:
$kaltmiete_m2 = $HTTP_POST_VERS["kaltmiete_m2"];
neu:
$kaltmiete_m2 = $HTTP_POST_VARS['kaltmiete_m2']; //VARS statt VERS
alt:
wohungsart = '$wohnungsart', // Zeile 38
neu:
wohnungsart = '$wohnungsart',
Das solltest du auch ?ndern (ist aber in dieser Version von MySQL kein Fehler):
miet_aendern.php:
alt:
$abfrage = "SELECT * FROM mietobjekte WHERE id like '$id_get'";
neu:
$abfrage = "SELECT * FROM mietobjekte WHERE id = $id_get";
Danach sollte es funktionieren. -
ich danke dir vielmals.....
ich hab die scripte bestimmt 8-10 mal selbst durchgelesen und nix gefunden was soooo einfach war...
das nennt man wohl betriebsblind....
und das mit dem like bei der abfrage wurde mir noch gesagt sei besser als = ...aber ich werd dir selbstverst?ndlich mehr geh?rt schenken -
Das LIKE ist eigentlich f?r Vergleiche von Strings. Da du aber eine ID (Nummer) vergleichst, macht das keinen Sinn.
Ausserdem fehlen in deinem Skript noch die ganzen Parameter?berpr?fungen (f?r Hacker stehen T?r und Tor offen) und das Abfangen von Fehlern (z.B. nach Ausf?hrung von mysql_query()). Aber das kriegst du schon alles noch hin -
Parameter?berpr?fungen? ?hm
EDIT 0-checka
Problem per PN erkl?rt, da zu sehr vom Thema abweichend -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage