You are not logged in.

  • Login

1

Friday, April 14th 2006, 4:36pm

DB aktualisieren mit if(isset)

tag allerseits

ich habe ein formular um daten zu verändern...möchte ich sie jedoch aktualisieren bzw. drücke ich den aktualisieren-button werden die daten nicht geändert und eine leere seite erscheint.
der button hat die value=aktualisieren. nachdem das update durchgeführt wurde sollte der soeben geänderte datensatz wieder im selben formular angezeigt werden.

PHP Quellcode

1
2
3
4
5
6
7
8
if (isset ($aktualisieren)) {
 
$sql = "UPDATE server SET server_name = '$server_name',  server_prozessor = '$server_prozessor', server_ram = '$server_ram', server_hdd = '$server_hdd', server_lieferung = '$server_lieferung', server_garantie = '$server_garantie', server_zweck = '$server_zweck', server_bemerkung = '$server_bemerkung', server_ip = '$server_ip', server_sn = '$server_sn' 
WHERE server_id = '$id'";
$result = mysql_query($sql);
 
echo "<form name=server_form method=post action=$PHP_SELF?id=$id>";
}


habe jeweils vor und nach dem befehl noch eine select anweisung

2

Friday, April 14th 2006, 5:48pm

du solltest dringend an deinem "style" arbeiten
lange wirst du so kein php mehr scripten können

in php4.3 wurde irgendwann register_globals auf off gesetzt
auf post variablen kannst du seitdem nur noch mit $_POST['name'] zugreifen

hier mal ein sauberer code

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (isset ($_POST['aktualisieren'])) {
 
	$sql = "UPDATE server SET 
			server_name = '$_POST[server_name]',  
			server_prozessor = '$_POST[server_prozessor]', 
			server_ram = '$_POST[server_ram]', 
			server_hdd = '$_POST[server_hdd]', 
			server_lieferung = '$_POST[server_lieferung]', 
			server_garantie = '$_POST[server_garantie]', 
			server_zweck = '$_POST[server_zweck]', 
			server_bemerkung = '$_POST[server_bemerkung]', 
			server_ip = '$_POST[server_ip]', 
			server_sn = '$_POST[server_sn]'
		WHERE server_id = '$_POST[id]' ";
 
	$result = mysql_query($sql);
 
	echo '<form name="server_form" method="post" action="'. $_SERVER['PHP_SELF']. '?id=' .$id. '">';
}


Syntaxfehler sind zumindest keine drinne
der fehler muss woanders liegen

3

Friday, April 14th 2006, 6:28pm

danke für den rat...es ist eben so, dass ich diese server-db in ein system intigrieren muss, welches auch auf php 4 basiert. der server ist xampp 1.4.15. kann mann da einfach mit php5 reinprogrammieren oder geht das gar nicht?

4

Friday, April 14th 2006, 7:07pm

kann sein, dass xampp register_globals auf on gesetzt hat
generell musst du aber damit rechnen, dass es auf off ist

deine frage bzgl. php5 versteh ich aber nicht?
- php5 ist abwärtskompatibel zu php4
- php5 wird noch eher auf register_globals off bestehen als die version 4
- php5 ist seit Version 1.4.7 in xampp dabei

5

Wednesday, April 26th 2006, 3:13pm

Re: DB aktualisieren mit if(isset)

Quoted from ""Darkhead""

der button hat die value=aktualisieren.


Hat er denn auch den name aktualisieren? Denn nur das wird mit $_POST["aktualisieren"] abgefragt.

6

Wednesday, April 26th 2006, 3:16pm

tschuldigung, mein ich ja...name und value ist bei mir meistens gleich...aber das problem hat sich nun erledigt....
hatte 'nen verdammten schreibfehler...
:evil:

7

Wednesday, April 26th 2006, 3:27pm

Quoted from ""d0nUt""

du solltest dringend an deinem "style" arbeiten
lange wirst du so kein php mehr scripten können

in php4.3 wurde irgendwann register_globals auf off gesetzt
auf post variablen kannst du seitdem nur noch mit $_POST['name'] zugreifen

hier mal ein sauberer code

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (isset ($_POST['aktualisieren'])) {
 
	$sql = "UPDATE server SET 
			server_name = '$_POST[server_name]',  
			server_prozessor = '$_POST[server_prozessor]', 
			server_ram = '$_POST[server_ram]', 
			server_hdd = '$_POST[server_hdd]', 
			server_lieferung = '$_POST[server_lieferung]', 
			server_garantie = '$_POST[server_garantie]', 
			server_zweck = '$_POST[server_zweck]', 
			server_bemerkung = '$_POST[server_bemerkung]', 
			server_ip = '$_POST[server_ip]', 
			server_sn = '$_POST[server_sn]'
		WHERE server_id = '$_POST[id]' ";
 
	$result = mysql_query($sql);
 
	echo '<form name="server_form" method="post" action="'. $_SERVER['PHP_SELF']. '?id=' .$id. '">';
}


Syntaxfehler sind zumindest keine drinne
der fehler muss woanders liegen


Nix für Ungut d0nUt, aber so sauber ist Dein Code auch nicht!

Wenn wir schon eine Lektion in sauberen PHP Code geben, dann sollte da auf jeden Fall jede POST-Variable im SQL-Statement mit 'mysql_escape_string' escaped werden, sonst sind SQL-Injections möglich!

Ist zwar innerhalb des UPDATE-Statements nicht ganz so wild, aber wenn ich die Variable $_POST[id] manipuliere kann ich weitere SQL Befehle ausführen!

melwood

Similar threads

Social bookmarks