MySQL Datensatz per Forumlar verändern

supersalzi

Erfahrenes Mitglied
Hi,

ich verzweifele daran einen MySQL Datensatz per Formular zu verändern.
Es kommt keine Fehlermeldung, einfach nichts, aber die daten ändern sich auch nicht.
Mach ich irgendwas grundsätzlich Falsch?
(Fehler müsste in den ersten paar Zeilen liegen, denke ich.)

(Diese Datei, wird per include eingebunden; falls das wichtig ist.)
PHP:
<?php

require('scripts/db-access.inc.php');		// log in db

// update 

if(!empty($_POST)){

	if($_POST["passwd_1"] == $_POST["passwd_2"]){

	$sql = "UPDATE `klasse` SET 
		`vorname` = '$_POST[vorname]',
		`name` = '$_POST[name]',
		`str` = '$_POST[str]',
		`plz` = '$_POST[plz]',
		`stadt` = '$_POST[stadt]',
		`land` = '$_POST[land]',
		`tel` = '$_POST[tes]',
		`fax` = '$_POST[fax]',
		`mobil` = '$_POST[mobil]',
		`email` = '$_POST[email]',
		`website` = '$_POST[website]',
		`text` = '$_POST[text]',
		`passwd` = '$_POST[passwd]',

		WHERE `id` = '$_SESSION[id]' LIMIT 1";

		mysql_query($sql);
		
		$msg = 'ok';
		
	
	}else{
		$msg = 'fail';
	}

unset($_POST);

}

// ausgabe
$sql = "SELECT * FROM klasse WHERE id='$_SESSION[id]'";

$result = mysql_query ($sql);

$persData = mysql_fetch_array ($result);


echo "<br />der sql string SELECT zum form ausfullen: $sql<br />";
?>

<div id="column-menu-right">
<div class="menu-right">
<h3>datenbank</h3>
<p class="box"><span class="kb">Logged: <?php echo "$_SESSION[vorname] $_SESSION[name]";?></span></p>
<ul class="links">
<li><a href="waldis.php?action=inside" class="a2"><img src="stuff/linkarrow.gif" class="txtimg" alt="pfeil"/>&Uuml;bersicht</a></li>
<li><a href="content/waldis/daten/logout.php" class="a1"><img src="stuff/linkarrow.gif" class="txtimg" alt="pfeil"/>Logout</a></li>
</ul>
</div></div>
<h2>Profil &auml;ndern</h2>
<p><b>###Geht noch nicht!###</b></p>
<?php 
if($msg == 'ok'){
	echo "<div class='status'>
		<p>Dein <b>Daten</b> wurden erfolgreich <b>ge&auml;ndert</b></p>
		</div>\n";
	$smg = 'none';
}	

if($msg == 'fail'){
	echo "<div class='status'>
		<p><b>Fehler!</b> Dein <b>Passwort</b> wurde <b>nicht identisch</b> eingegeben!</p>
		</div>\n";
	$smg = 'none';
}


?>
<div class="lt">
<form action="waldis.php?action=profil" method="post" >
<fieldset style="border-style:none;">

<p>Vorname:</p>
<input  type="text" name="vorname" value="<?php echo "$persData[vorname]"?>" size="24" maxlength="35" "/>
<p>Nachname:</p>
<input  type="text" name="name" value="<?php echo "$persData[name]"?>" size="24" maxlength="35" "/>
<p>Stra&szlig;e:</p>
<input  type="text" name="str" value="<?php echo "$persData[str]"?>" size="30" maxlength="40" "/>
<p>PLZ:</p>
<input  type="text" name="plz" value="<?php echo "$persData[plz]"?>" size="6" maxlength="5" />
<p>Ort:</p>
<input  type="text" name="stadt" value="<?php echo "$persData[stadt]"?>" size="24" maxlength="35" />
<p>Land:</p>
<input  type="text" name="land" value="<?php echo "$persData[land]"?>" size="24" maxlength="35" />
<p>Telefon:</p>
<input  type="text" name="tel" value="<?php echo "$persData[tel]"?>" size="12" maxlength="35" />
<p>Fax:</p>
<input  type="text" name="fax" value="<?php echo "$persData[fax]"?>" size="12" maxlength="35" />
<p>Mobile:</p>
<input  type="text" name="mobil" value="<?php echo "$persData[mobil]"?>" size="12" maxlength="35" />
<p>Email:</p>
<input  type="text" name="email" value="<?php echo "$persData[email]"?>" size="24" maxlength="35" />
<p>Website:</p>
<input  type="text" name="website" value="<?php echo "$persData[website]"?>" size="24" maxlength="35" "/>
<p>Text:</p>
<textarea style="width:350px" name="nachricht" rows="5" cols="40">
<?php echo "$persData[text]"?>
</textarea><br/>

<p>Passowrt:</p>
<input  type="password" name="passwd_1" value="<?php echo "$persData[passwd]"?>" size="24" maxlength="35" "/>
<p>Wiederhohlung Passwort:</p>
<input  type="password" name="passwd_2" value="<?php echo "$persData[passwd]"?>" size="24" maxlength="35" "/>
<br />
<br />
<br />
<input class="submit" type="submit" name="submitButtonKontakt" value="&Auml;ndern" />
</fieldset></form>
</div>

Danke!
 
OK, danke erstmal, der Tip werde ich mir merken!

Die Fehlermeldung sagt:

WHERE `id` = '2' LIMIT 1' at line 16

Nun bin ich aber zu blöd den Fehler zu finden;
Ich habe den SQL Befehl von phpMyAdmin kopiert, und nur

PHP:
WHERE `id` = '2'
durch
PHP:
WHERE `id` = '$_SESSION[id]' LIMIT 1 ";
ersetzt.

Was ist denn daran Falsch?
 
Danke für deine Arbeit, aber ich bekomme nur folgendes:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Programme\xampp\htdocs\content\waldis\daten\formup.php on line 27

(line 27 ist diese Zeile mit WHERE ...)

hat noch jemand eine idee?
 
War auch ein Versuch, Danke!
Aber:
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 'WHERE `id` = '2' LIMIT 1' at line 16

Noch jemand eine Idee, ich meine das kann doch nicht so schwer sein, evt. sollte ich eien normale variable wie $var versuchen anstatt des Arrays?

Nochwas, wozu ist eigentlich das LIMIT da, es gibt jede id eh nur einmal?
 
Zuletzt bearbeitet:
Abend,

naja, Deine ganze Syntax sieht für mich irgendwie makaber aus.
Wieso lässt Du feste Ausdrücke wie Stadt parsen?

Ausserdem glaube ich mich zu erinnern, dass die festen Ausdrücke (also alles in "Gänsefüßen") keine geparsten ( 'das hier wird geparst') enthalten können. Versuche doch mal, Dein Skript in dieser Form zu schreiben "Ein Befehl an den SQL-Server mit der Nummer" . '$nummer'.

Ich bin also eher der Auffassung, dass das Problem am Skript liegt, als an der Datenbank.
Wobei sich ein LIMIT als Fehlermeldung der Datenbank auch danach anhört, als könne die zu beschreibende Spalte falsch formatiert sein ( Vielleicht Binär? )

Mag sein dass ich falsch liege, aber ich werdet mir dann ja auch sicher wiedersprechen ;-)
 
@BadPhantom
ok, ich muss zugeben ich habe keine Ahnung ob es richtig ist was du gesagt hast.

Habs mals so versucht, kam sogar eine ander Fehlermeldung:

Code:
$sql = "UPDATE `klasse` SET 
		vorname = $_POST[vorname],
		name = $_POST[name],
		str = $_POST[str],
		plz = $_POST[plz],
		stadt = $_POST[stadt],
		land = $_POST[land],
		tel`= $_POST[tes],
		fax = $_POST[fax],
		mobil = $_POST[mobil],
		email = $_POST[email],
		website = $_POST[website],
		text = $_POST[text],
		passwd = $_POST[passwd],

		WHERE id = $_SESSION[id]  ";

Fehlermeldung:

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 '5, plz = 01156, stadt = Dresden, land = Deutschland, tel`= , fax ' at line 4
 
Hallo!

Und was sagt MySQL hierzu?
PHP:
	$sql = "UPDATE klasse SET 
		vorname='".$_POST['vorname']."', 
		name='".$_POST['name']."', 
		str='".$_POST['str']."', 
		plz='".$_POST['plz']."', 
		stadt='".$_POST['stadt']."', 
		land='".$_POST['land']."', 
		tel='".$_POST['tel']."', 
		fax='".$_POST['fax']."', 
		mobil='".$_POST['mobil']."', 
		email='".$_POST['email']."', 
		website='".$_POST['website']."', 
		text='".$_POST['text']."', 
		passwd='".$_POST['passwd']."', 
		WHERE id='".$_SESSION['id']."';";
Ich war auch mal so frei $_POST['tes'] in $_POST['tel'] zu ändern...... da hast Du dich doch bestimmt verschrieben?!

Gruss Dr Dau
 
Zurück