Hilfe bei update-script :-\

Kalma

Erfahrenes Mitglied
Hey,
Hier mein Problem:
Ich habe ein Update-Script geschrieben, nur leider tut es nicht das, was es soll: Updaten :suchen:

Hier die Scripts:

Das "Form-Script":
PHP:
<?php
$Host		= "localhost";
$User		= "web488";
$Password	= "aiosdaösodkjasd";
$DBName		= "usr_web488_3";
$TableName	= "edit";

$Link = mysql_connect($Host, $User, $Password);
mysql_select_db($DBName);

$Query = "SELECT
			*
	      FROM
		  	$TableName";
$Result = mysql_query($Query);
$row = mysql_fetch_array($Result);
?>




<form action="edit.php" method="post">


<input type="text" name="name" value="<?php echo " ".$row['name']." "; ?>" />

<p>

  <select name="geschlecht">
    <option name="männlich">männlich</option>
    <option name="weiblich">weiblich</option>
  </select>

<p>

  <input name="alter"    type="text"    value="<?php echo " ".$row['alter']." "; ?>" /> - Alter
<p>

  <input name="hobbys"   type="text"    value="<?php echo " ".$row['hobbys']." "; ?>" /> - Hobbys
<p>

  <input name="motto"    type="text"    value="<?php echo " ".$row['motto']." "; ?>" /> - Motto
<p>

  <input name="datum"    type="text"    value="<?php echo " ".$row['datum']." "; ?>" /> - Geb.Datum
<p>

<input type="submit" value="submit" />

</form>



Und das Update-Script an sich
PHP:
<?php
$Host		= "localhost";
$User		= "web488";
$Password	= "alsdhfjö-akljesfzhawöef";
$DBName		= "usr_web488_3";
$TableName	= "edit";

$Link = mysql_connect($Host, $User, $Password);
mysql_select_db($DBName);

$name 		= $_POST['name'];
$geschlecht 	= $_POST['geschlecht'];
$alter 		= $_POST['alter'];
$hobbys 	= $_POST['hobbys'];
$motto 		= $_POST['motto'];
$datum 		= $_POST['datum'];

$Query = ("UPDATE
			$TableName
		  set
		  	name='$name',
			geschlecht='$geschlecht',
			alter='$alter',
			hobbys='$hobbys',
			motto='$motto',
			datum='$datum'");
			
$Result = mysql_query($Query);
header ("Location: form.php");

?>


Ich hoffe mal, Ihr könnt mir helfen :)

David
 
Hi,

alsooo....

wenn du etwas updaten willst, gibt es dafür ja bereits eine ID, welche du diesem Teil den du updaten willst zugewiesen wurde. Mit dieser ID rufst du die Werte ja aus der DB ab. Das fehlt - zumindest bei meinem überfliegen des Codes - in deinem Code.

Wenn du nun per Form-Tag die Daten übergibst, musst du um Fehler zu vermeiden per If die übergebenen Werte prüfen ob diese vorhanden sind. Wenn nicht folgt else.

Danach folgt der Query:
PHP:
<?php

// WHERE um das Update einer ID in der DB zuzuweisen
// LIMIT, damit nur ein Update durchgeführt wird
mysql_query("UPDATE 
				$TableName
			 SET
	   		 	name = '$name',
			    geschlecht = '$geschlecht',
             	alter = '$alter',
			    hobbys = '$hobbys',
            	motto = '$motto',
			    datum ='$datum' 
			 WHERE 
				id = ''
			 ORDER BY 
			 	id 
			 LIMIT 1") or die (mysql_error()); 
// header als umleitung und weg von dem script oder formular inkl. exit, welches das script beendet.
header("Location: http://www.domain.de/index.php");
exit();
?>
 
Aber wenn keine WHERE `id` = x, dann werden alle Datensätze geupdated, was anscheinend nicht der Fall ist, sonst hätte er seine Frage anders formuliert. Es liegt an dem alter Feld. Alter ist ein von mysql reserviertes Wort. Setz alter in ` `, also `alter`, dann gehts.

PHP:
$Query = ("UPDATE
            `$TableName`
          SET
            `name`='$name',
            `geschlecht`='$geschlecht',
            `alter`='$alter',
            `hobbys`='$hobbys',
            `motto`='$motto',
            `datum`='$datum'");
 
Zuletzt bearbeitet:
Ok, alter hatte ich nicht genannt - deshalb (mysql_error());

Was macht es für einen Sinn, wenn er alle Inhalte in einer Tabelle upt? Das macht überhaupt keinen Sinn - eine Tabelle für eine Zeile?
 
Nein, aber er hat gesagt, dass nichts geupdated wird, also Schlussfolgere ich, dass etwas an der Query nicht stimmt und er nicht wissen will, warum nicht genau ein Datensatz editiert wird. Ok?
 
Das innerhalb des Query was nicht stimmt ist fakt. Das sollte er aber selbst durch die Fehlermeldung sehen.

Wie auch immer er was gemeint hat ist letztlich Spekulation und Auslegungssache. Lassen wir sinnloses......
 
saila hat gesagt.:
Das macht überhaupt keinen Sinn - eine Tabelle für eine Zeile?
Nicht unbedingt. Ich hab in dem Portal hier auf der Arbeit eine Tabelle mit dem Namen settings. Fuer jede Einstellung gibt es dort ein Feld.
Und da alle Einstellungen global sind brauche ich nur eine Zeile in der Tabelle.
Ich habe dadurch aber immer noch die Moeglichkeit spaeter durch hinzufuegen einer UserID zu erlauben, dass User einige Einstellungen fuer sich anpassen koennen.

@David: Ich nehme mal an, dass das Passwort oben in Deinem Quelltext nicht Dein richtiges Passwort ist sondern das Ergebnis einer Tastaturvergewaltigung, richtig?
 
hey Jungs,
danke schon mal für die vielen Antworten :)

Zu einigen von euch: Nein, es kam noch keine Fehlermeldung....
@ Dennis: Jau, das ist das Ereignis des sinnlosen rumhacken auf der Tastatur ;)

P.s.: Ich habe es jetzt so probiert:
$Query = "UPDATE
$TableName
SET
`name`='$name'";
und so weiter...
jetzt es :)

Danke mAu... :)
Hab ich wohl übersehen die ``

David
 
Zuletzt bearbeitet:
Zurück