Daten aus SQL Datenbank über PHP ändern

leadclown

Captain
Registriert
Apr. 2004
Beiträge
3.699
folgendes...

ich habe eine datenbank mit phpmyadmin erstellt. nun möchte ich folgendes tun...

ich möchte eine php datei mit einem formular erstellen. in diesem formular soll die id (primärschlüssel) einer tabelle aus der datenbank eingegeben werden.
wenn ich dann auf absenden klicke, soll sich ein neues formular öffnen. in diesem sollen dann die daten (bsp. name, adresse etc) der dazugehörigen id auftauchen.

wenn ich diese dann abändere und auch dort auf absenden klicke, sollen die daten letztendlich in der datenbank geändert werden.

leider stehe ich absolut auf dem schlauch und bekomme das hin- und herschicken der id einfach nicht auf die reihe. kann mir jemand helfen?
 
Hi,

naja etwas komisches vorgehen. Ich würde die eigenschaft "autoincrement" in der Tabelle aktivieren, somit wird eine einmalige ID automatisch vergeben, also dann auch gleich alle Daten aufeinmal reinschreiben und nicht nochmal mit nem Update hinterher.

Da ich nicht ganz schlau draus werde was genau du da vor hast und falls du das nur so machen kannst, dann könnte man mit "mysql_insert_id" die letzte vergebene ID mit der aktuellen Verbindungskennung auslesen.
 
hm, wieso komisch? vielleicht so verständlicher...

id in ein formular eingeben und absenden > ein neues formluar zur bearbeitung soll geöffnet werden. dort sollen auch gleich die abgerufenen daten zur id erscheinen. > daten ändern und wieder absenden > daten werden in der datenbank geändert.

ich habe schon ein script mit dem ich einen datensatz über die id eingabe löschen kann. nur möchte ich nach dem absenden nicht löschen sondern mir den datensatz in einem formular erst anzeigen lassen und direkt ändern.

ein zweites mit dem ich abgerufene daten ändern kann. nun möchte ich beide verbinden.
ich bin noch php/SQL anfänger, wäre nett wenn ihr das beachten könntet ;)

<?php

include("connect.php");

$id = $_POST['id'];
$button = $_POST['button'];

if ($button) {
mysql_query("DELETE FROM `projekt`.`artikel` WHERE `id`=$id") or die (mysql_error());

echo mysql_affected_rows();
echo "Der Artikel wurde gelöscht.<br /><br />";
}

//print_r($_POST);
?>

<form method="post" action="delete_artikel.php">
<table border="0">
<tr>
<td>ID des Artikels:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="button" value="Löschen"></td>
</tr>
</table>
</form>

<?php

include("connect.php");

$id = $_GET['id'];
$interpret = $_POST['interpret'];
$titel = $_POST['titel'];
$jahr = $_POST['jahr'];
$button = $_POST['button'];

if ($button) {mysql_query("UPDATE `datenbank`.`cds` SET `interpret`='$interpret', `titel`='$titel', `jahr`='$jahr' WHERE `cds`.`id`='$id'") or die (mysql_error());

echo mysql_affected_rows();
mysql_close();

?>

Die Daten wurden eingetragen.<br>


<?php

} else {

$query = "SELECT * FROM cds WHERE id='$id'";
$result = mysql_query($query);
$line = mysql_fetch_array($result)

?>

<form method="post" action="update.php?id=<?PHP echo $id; ?>">
<table border="0">

<tr><td>Interpret:</td><td><input type="text" name="interpret" value="<?PHP echo $line[interpret]; ?>"></td></tr>
<tr><td>Titel:</td><td><input type="text" name="titel" value="<?PHP echo $line[titel]; ?>"></td></tr>
<tr><td>Jahr:</td><td><input type="text" name="jahr" value="<?PHP echo $line[jahr]; ?>"></td></tr>
<tr><td></td><td><input type="submit" name="button" value=" OK "></td></tr>

</table>
</form>

<?php
}
?>
 
Aha ok jetzt weiss ich was du meinst.

Du machst Dir das formular so wie du es willst mit allen Feldern die Du brauchst.
In dem Formulartag bsp: <input type="text" name="name" value="$name">

$name holst du beim absenden der ID aus der DB und so wird sie Dir dann angezeigt. Das machst du mit allen Werten die Du brauchst so und wenn du das Formular dann abschickst machst du ein UPDATE tabelle SET name='".$_POST['name']."', usw.

Ist jetzt bischen viel zu erklären wenn Du nicht so recht Ahnung davon hast.

Aber vielleicht hilft Dir das ja auch klick
noch eins mit phpcode (english)
 
Zuletzt bearbeitet:
ich bin gerade am basteln, nur werden die daten noch nicht an das zweite formular übergeben.
vielleicht kannst du ja was rauslesen.

überarbeitet, siehe nächster beitrag...
 
Zuletzt bearbeitet:
ich bin nah dran aber wo muss jetzt die anweisung zum ändern der daten hin?
momentan kann ich die id eingeben und bekomme ein formular angezeigt in dem die daten stehen.

<form method="post" action="update_artikel.php">
<table border="0">
<tr>
<td>ID des Artikels:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="button" value="Anzeigen"></td>
</tr>
</table>
</form>


<?php

include("connect.php");

$id = $_POST['id'];
$button = $_POST['button'];

if ($button)
{

$query = "SELECT * FROM artikel WHERE id='$id'";
$result = mysql_query($query);
$line = mysql_fetch_array($result)

?>

<form method="post" action="update_artikel.php?id=<?PHP echo $id; ?>">
<table border0">
<tr><td>Name:</td><td><input type="text" name="name" value="<?PHP echo $line[name]; ?>"></td></tr>
<tr><td>Beschreibung:</td><td><input type="text" name="beschreibung" value="<?PHP echo $line[beschreibung]; ?>"></td></tr>
<tr><td>Preis:</td><td><input type="text" name="preis" value="<?PHP echo $line[preis]; ?>"></td></tr>

<tr><td></td><td><input type="submit" name="button_change" value="Ändern"></td></tr>
</table>
</form>

<?php
}
?>
 
Ein paar Anregungen:

Es ist nicht gut direkt unbearbeitete POST Daten in eine Datenbank zu speichern. Falls es sich um ID wirklich um einen reinen Integer handelt, würde ich darauf vor Speicherung oder Löschung prüfen.

Warum liest Du alle Daten aus der Tabelle aus wenn Du doch nur 3 Werte benötigst? Und warum liest Du es mit einem fetch_array aus?

IMO würde sich ein mysql_fetch_object(); besser an dieser Stelle machen und ein SELECT spalte1, spalte2, spalte3 FROM....

Das spart nicht nicht Datenbankperfomance (je nach Tabellenkonstrukt und Anzahl der Datensätze).

Das wäre im Prinzip voerst alles was ich so ohne ggf. den vollständigen Code (falls dieser ggf. von den bisherigen geposteten Abweichen sollte) sagen kann.

:-) :-)
 
ja, das sind dann noch anpassungen die ich vornehmen werde. bin wie gesagt anfänger und wollte das erstmal als beispiel zum laufen bringen.

habe es jetzt zumindest hinbekommen.

<form method="post" action="update_artikel.php">
<table border="0">
<tr>
<td>ID des Artikels:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="button" value="Anzeigen"></td>
</tr>
</table>
</form>


<?php

include("connect.php");

$id = $_POST['id'];
$button = $_POST['button'];

if ($button)
{

$query = "SELECT name, beschreibung, preis FROM artikel WHERE id='$id'";
$result = mysql_query($query);
$line = mysql_fetch_array($result)

?>

<form method="post" action="update_artikel.php?id=<?PHP echo $id; ?>">
<table border0">
<tr><td>Name:</td><td><input type="text" name="name" value="<?PHP echo $line[name]; ?>"></td></tr>
<tr><td>Beschreibung:</td><td><input type="text" name="beschreibung" value="<?PHP echo $line[beschreibung]; ?>"></td></tr>
<tr><td>Preis:</td><td><input type="text" name="preis" value="<?PHP echo $line[preis]; ?>"></td></tr>

<tr><td></td><td><input type="submit" name="button_change" value="Ändern"></td></tr>
</table>
</form>

<?php
}

/////////// Beginn Änderung der Daten //////////////////

$name = $_POST['name'];
$beschreibung = $_POST['beschreibung'];
$preis = $_POST['preis'];

$button_change = $_POST['button_change'];
$id=$_GET['id'];


if ($button_change)

{mysql_query("UPDATE `projekt`.`artikel` SET `name`='$name', `beschreibung`='$beschreibung', `preis`='$preis' WHERE `artikel`.`id`='$id'");

echo mysql_affected_rows();
mysql_close();

}



?>
 
Zurück
Oben