Daten ändern

kbit

Erfahrenes Mitglied
Hi, ich lasse mir die Daten aus einer DB in einer Tabelle ausgeben.

PHP:
$sql = "SELECT * FROM User"; 
$result = mysql_query($sql) or die(mysql_error()); 
echo '<form action="'.$_SERVER['SCRIPT_NAME'].'" method="GET">';
if ($result){
	$number =mysql_num_rows($result);
	if(empty($number)){
		echo " Alle Datensätze gelöscht!";
	}else{

		echo "<table border=1><tr>";
		$row=mysql_fetch_array($result,MYSQL_ASSOC);
		
		while ($field = key($row))	
		{
		
			echo '<th>'.ucwords($field).'</th>';
			next($row);

		}

			echo "</tr><tr><td>";
			echo'<input type="checkbox" name="up" value="'.$row['U_ID'].'">';
			echo implode ("</td><td>",$row);
			echo "</td></tr>";


		while ($row =mysql_fetch_array($result,MYSQL_ASSOC))
		{
			echo "<tr><td>";
			echo'<input type="checkbox" name="up" value="'.$row['U_ID'].'">';
			echo implode ("</td><td>",$row);
			echo "</td></tr>";
		}
		echo "</table>";
		echo"<br/>";
	}
}     
	echo'<input type="submit" name="aendern" value="aendern" />';

Nun möchte ich wenn ich auf die checkbox klicke die Daten ändern. Das mache ich so:

PHP:
if(isset($_GET['submit']))  {

            $sql = "UPDATE
                        user
                    SET
                        U_ID = '".($_GET['up'])."'"; 
						
                    
            mysql_query($sql) OR die(mysql_error());
} 
if(isset($_GET['aendern']))  {
			$sql = "SELECT
                U_ID
                
            FROM
                user
		Where U_ID=".$_GET['up']."";
			
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);
    echo "    <p>\n";
    echo "        Eigene Daten bearbeiten\n";
    echo "    </p>\n";
    echo "    <ol>\n";
    echo "        <li>\n";
    echo "            <label for=\"name\">Name</label>\n";
    echo "            <input type=\"text\" name=\"up\" id=\"name\" value=\"".$row['U_ID']."\"/>\n";
	 echo"<input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
    echo "        </li>\n";
    echo "    </ol>\n";	
}
echo"</form>";

Das klappt auch gut solange nur ein Eintrag in der DB ist, wenn dort 2 oder mehr Datensätze vorhanden sind, bekomme ich eine Fehlermeldung.
Fehlermeldung: Duplicate entry '182' for key 1
Es ist auch egal ob ich den 1 oder einen anderen Datensatz anklicke kommt immer die Fehlermeldung. Habe ich nur noch einen Datensatz in der DB dann funktioniert die Änderung. Ich weiß leider nicht wieso er den Fehler ausgibt.
 
Mit der Datenbankabfrage „UPDATE user SET U_ID = x“ setzt du alle „U_ID“-Werte auf „x“.
 
Ah so, dann ist die fehlermeldung ja klar. Was müsste ich denn sonst machen um die Daten ändern zu können?
 
Hallo,

das gleiche wie beim SELECT

Also

PHP:
 $sql = "UPDATE user SET name =$neuer_name WHERE U_ID=".$_GET['up']."";

Wobei ich grad nicht verstehe was du genau ändern willst, aber eine ID eines benutzers sollte man automatisch (auto increment) erstellen lassen und diese so belassen wie sie ist, damit man sich daran orientieren kann...
 
Hi, ja da hast du recht. Das war auch nur aus test gründen.Also eigentlich möchte ich den namen ändern an der stelle wo die id angeklickt wurde (aus der checkbox).

Mir ist etwas noch nicht so ganz klar bei dem sql statement, mit dem name=$neuer_name.
Ich rufe ja zuerst die Tabelle mit den Werten auf, wenn ich dann auf die Checkbox klicke gibt er mir den namen aus mit der ID die ich angeklickt habe. Den änder ich und dann schicke ich das ja ab. Und nun müsste ja in der $neuer_name der neue name drin stehn, nur wie lese ich den denn aus oder übergeb ihn der Variablen ?
 
Also,
du übergibst ja die Variablen mit dem Formular per GET.
PHP:
<form action="'.$_SERVER['SCRIPT_NAME'].'" method="GET">

und hier übergibst du ja die Variable $name mit dem Wert (U_ID) aus der datenbank.

PHP:
<input type=\"text\" name=\"up\" id=\"name\" value=\"".$row['U_ID']."\"/>

Wieso auch immer die U_ID aber da solltest du halt als Wert den Benutzername ausgeben Quasi so... ( $row['U_NAME']) je nach struktur deiner DB.

Und so nimmst du die Variable entgegen für den SQL Query

PHP:
$neuer_name = $_GET['name'];
Somit ist die Variable $neuer_name gesetzt und enthält als Wert den, falls geändert, neuen Benutzer Namen (Bsp. Peter)


Dann klappt auch
PHP:
 $sql = "UPDATE user SET name =$neuer_name WHERE U_ID=".$_GET['up']."";

oder einfach so wie bei User ID

PHP:
 $sql = "UPDATE user SET name =$_GET['name'] WHERE U_ID=".$_GET['up']."";
Dann fehlt das annehmen der Variable weg...($neuer_name = $_GET['name'];)




Guck dir doch mal mein Tutorial dazu an.... Ist zwar etwas älter und nicht ganz so ordentlich beschrieben aber es sollte für den anfang nützlich sein.
Werd das ding bald mal Aktuallisieren...

http://www.tutorials.de/forum/sql-t...en-einfuegen-ausgeben-editieren-loeschen.html
 
Hi danke für deine hilfe war gut, aber einen kleinen dreher hattes du drin aber hab ihn gefunden und bei mir behoben.

Danke noch mal
 
Gerne wieder...
Dann setz den Thread hier doch bitte auf Erledigt und bewerte doch meine Antwort ;)

THX
und Alles gute...
 
Zurück