-
danke schön Lime
-
Hallo zusammen

dieses thema hat mir sehr weitergeholfen! Nur leider klappts noch nicht ganz mit meinem geänderten code. ich wäre für jeden tipp dankbar!
PHP-Code:<?php
$id = $_GET['id'];
?>
<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
?>
<?php
$query= mysql_query("SELECT * FROM 'tabelle' WHERE id={$id}")or die(mysql_error());
while($row = mysql_fetch_object($query)){
{
echo 'Spalte1: <input type="text" value="'.$row->Spalte1.'" name=Spalte1" /><br />';
if(isset($_POST["speichern"])){
$Spalte1= $_POST["Spalte1"];
$eintrag = "UPDATE 'tabelle' SET Spalte1='{$Spalte1}' WHERE id={$id}";
echo $eintrag; die();
mysql_query($eintrag);
}
?>
-
Einfacher Fehler. Du hast den Tabellennamen in ' gesetzt, wobei man hier entweder keine Zeichen oder ` verwenden muss!
Dann seh ich da noch ein Chaos bei der while-Schleife, unter anderem zweifache geschwungene Klammer am Anfang, jedoch keine am Ende.PHP-Code:$query= mysql_query("SELECT * FROM `tabelle` WHERE id={$id}")or die(mysql_error());
Unten beim SQL-Query wieder derselbe Fehler wie oben, ` statt ' verwenden!
' verwendet man nur bei Values!
-
Hallo Lime

vielen Dank für deine Hilfe! Ich habe den Code entsprechend angepasst und ` statt ' verwendet. Darüber hinaus habe ich auch die doppelte geschwungene klammer am anfang der while-schleife entfernt und am ende eine hinzugefügt.
Ist der Code soweit ok?
Nun fehlt mir nur noch das tatsächliche abspeichern des feldes in der db. was muss ich hier noch ergänzen?
Danke für deine Hilfe!
PHP-Code:<?php
$id = $_GET['id'];
?>
<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
?>
<?php
$query= mysql_query("SELECT * FROM `tabelle` WHERE id={$id}")or die(mysql_error());
while($row = mysql_fetch_object($query)){
echo 'Spalte1: <input type="text" value="'.$row->Spalte1.'" name=Spalte1" /><br />';
if(isset($_POST["speichern"])){
$Spalte1= $_POST["Spalte1"];
$eintrag = "UPDATE `tabelle` SET Spalte1='{$Spalte1}' WHERE id={$id}";
echo $eintrag; die();
mysql_query($eintrag);
}
?>
<?php } ?>
-
Also so wie ich das sehe hast du da eh einen Hund drinnen. Das kann so glaub ich gar nicht funktionieren, bzw. du musst den einen Teil nicht in die while-Schleife schreiben!
Probiers mal so:
Ich hoff ich hab nichts übersehen oder so...PHP-Code:<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
if(isset($_POST["speichern"]))
{
$Spalte1= $_POST["Spalte1"];
$id = $_POST['id'];
$eintrag = "UPDATE `tabelle` SET Spalte1='{$Spalte1}' WHERE id={$id}";
mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}
$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error());
while($row = mysql_fetch_object($query))
{
echo '<form method="post" action="diesedatei.php">';
echo 'Spalte1: <input type="text" value="'.$row->Spalte1.'" name=Spalte1" /><br />';
echo '<input type="hidden" name="id" value="'.$id.'" />';
echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
echo '</form>';
}
mysql_close($connection);
?>
-
Hallo Lime

danke für deine Hilfe!!
Ich habe den Code wie folgt verwendet und dabei diese fehlermeldung erhalten
Parse error: syntax error, unexpected $end in /www/htdocs/... eval()’d code on line 33Ist es richtig, dass man hier verschiedene schreibweisen für die id-variable verwendet?PHP-Code:<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
if(isset($_POST["speichern"]))
{
$frage1= $_POST["frage1"];
$id = $_POST['id'];
$eintrag = "UPDATE `tabelle` SET frage1='{$frage1}' WHERE id={$id}";
mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}
$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error());
while($row = mysql_fetch_object($query))
{
echo '<form method="post" action="http://www.domain.de/datenbank-bearbeiten?id='.$id?>">';
echo 'frage1: <input type="text" value="'.$row->frage1.'" name=frage1" /><br />';
echo '<input type="hidden" name="id" value="'.$id.'" />';
echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
echo '</form>';
}
mysql_close($connection);
?>
- {$id}
- '.$id.'
Danke für deine Hilfe!
-
Hm, ich seh schon wo der Fehler ist. (man sieht es hier im Forum eh sehr gut, weil es farblich hervorgehoben wird...)
Also die Sache ist die:
Wenn du ' als Anführungszeichen verwendest, werden Variablen innerhalb nicht geparst.
Wenn du " als Anführungszeichen verwendest, werden sie geparst.
(€: mir fällt auf, wie gut man das im Forum sieht, was klappt und was nicht. Wenn es klappt ist die Variable blau markiert!)PHP-Code://geht nicht
echo 'Eine Variable $id steht hier.';
echo 'Eine Variable {$id} steht hier.';
//geht, wobei ich nicht weiß wie gut das funktioniert
echo "Eine Variable $id steht hier.";
//geht perfekt
echo "Eine Variable {$id} steht hier.";
echo "Eine Variable ".$id." steht hier.";
echo 'Eine Variable '.$id.' steht hier.';
Je nach String macht es Sinn, die eine oder andere Art zu wählen.
So zu deinem Problem und der Lösung: Du hast dich beim Link vom Form verschrieben.
Ich habe hier die Möglichkeit gewählt, das ganze mit ' auszugeben, da ich mir dann das Escapen der " vom String spare.PHP-Code:<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
if(isset($_POST["speichern"]))
{
$frage1= $_POST["frage1"];
$id = $_POST['id'];
$eintrag = "UPDATE `tabelle` SET frage1='{$frage1}' WHERE id={$id}";
mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}
$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error());
while($row = mysql_fetch_object($query))
{
echo '<form method="post" action="http://www.domain.de/datenbank-bearbeiten?id='.$id.'">';
echo 'frage1: <input type="text" value="'.$row->frage1.'" name=frage1" /><br />';
echo '<input type="hidden" name="id" value="'.$id.'" />';
echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
echo '</form>';
}
mysql_close($connection);
?>
Alternative wäre:
PHP-Code:echo "<form method=\"post\" action=\"http://www.domain.de/datenbank-bearbeiten?id={$id}\">";
Geändert von Lime (13.04.12 um 17:33 Uhr)
-
Hallo Lime

nochmals ein großes dankeschön! die farbliche hervorhebung ist wirklich wunderbar. danke für die beispiele!
Ich habe den Code nun wie unten umgeschrieben. Nun wird zwar das formular angezeigt und der richtige wert in das input-feld geladen, allerdings wird der bestehende oder veränderte wert aus dem feld & datenbank gelöscht, wenn man auf den "Änderungen speichern"-Button klickt. Scheint als würde der Wert nicht korrekt übermittelt. Hast du eine Idee woran das liegen könnte?
PHP-Code:<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
if(isset($_POST["speichern"]))
{
$frage1= $_POST["artikel_name"];
$id = $_POST['id'];
$eintrag = "UPDATE `tabelle` SET artikel_name='{$artikel_name}' WHERE id={$id}";
mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}
$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error());
while($row = mysql_fetch_object($query))
{
echo "<form method=\"post\" action=\"http://www.domain.de/testdb?id={$id}\">";
echo 'artikel_name: <input type="text" value="'.$row->artikel_name.'" name=artikel_name" /><br />';
echo '<input type="hidden" name="id" value="'.$id.'" />';
echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
echo '</form>';
}
mysql_close($connection);
?>Geändert von Odomanie (13.04.12 um 19:26 Uhr)
-
Auch hier gibts einen einfachen Grund. Das input-Feld "artikel_name" hat einen Syntaxfehler:
PHP-Code://so siehts aus
echo 'artikel_name: <input type="text" value="'.$row->artikel_name.'" name=artikel_name" /><br />';
//so solls sein
echo 'artikel_name: <input type="text" value="'.$row->artikel_name.'" name="artikel_name" /><br />';
//artikel_name hatte ein " zu wenig
-
Leider immer noch das gleiche problem. die einträge des felds werden beim absenden einfach gelöscht.
Laut PHPMyAdmin ist der wert des feldes nicht "NULL", sondern es steht einfach gar nicht drin. als würde man ein leeres feld übergeben?!
Hier noch der komplette code:
PHP-Code:<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
if(isset($_POST["speichern"]))
{
$frage1= $_POST["artikel_name"];
$id = $_POST['id'];
$eintrag = "UPDATE `tabelle` SET artikel_name='{$artikel_name}' WHERE id={$id}";
mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}
$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error());
while($row = mysql_fetch_object($query))
{
echo "<form method=\"post\" action=\"http://www.domain.de/testdb?id={$id}\">";
echo 'artikel_name: <input type="text" value="'.$row->artikel_name.'" name="artikel_name" /><br />';
echo '<input type="hidden" name="id" value="'.$id.'" />';
echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
echo '</form>';
}
mysql_close($connection);
?>
-
Ich habs nicht nochmal ganz durchgemacht, sondern nur den Fehler gesucht.PHP-Code:
<?php
$mysqlhost="xxx"; // MySQL-Host angeben
$mysqluser="xxx"; // MySQL-User angeben
$mysqlpwd="xxx"; // Passwort angeben
$mysqldb="xxx"; // Gewuenschte Datenbank angeben
$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
if(isset($_POST["speichern"]))
{
$artikel_name = $_POST['artikel_name'];
$id = $_POST['id'];
$eintrag = "UPDATE `tabelle` SET artikel_name='{$artikel_name}' WHERE id={$id}";
mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}
$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error());
while($row = mysql_fetch_object($query))
{
echo "<form method=\"post\" action=\"http://www.domain.de/testdb?id={$id}\">";
echo 'artikel_name: <input type="text" value="'.$row->artikel_name.'" name="artikel_name" /><br />';
echo '<input type="hidden" name="id" value="'.$id.'" />';
echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
echo '</form>';
}
mysql_close($connection);
?>
Du hast oben die Variable geändert gehabt (von Spalte1 in frage1), jedoch hast du artikel_name als Variable in die DB geschrieben. Da die noch nicht existiert hatte, war sie immer null (leer). So sollte es (endlich) gehen.
-
Du bist der Beste!
Es funktioniert!! Danke!
Wenn ich dafür das hier schreibe:PHP-Code:$id = $_GET['id']; //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
‘~\D~’, heißt eigentlich ‘~\D~’, wird hier falsch dargestellt.PHP-Code:$id = preg_replace(‘~\D~’, ”, $_GET['id']);
bekomme ich diese fehlermeldung:
Gibt es darüber hinaus aus deiner sicht noch potenzielle sicherheitslücken?Parse error: syntax error, unexpected ‘~’Geändert von Odomanie (13.04.12 um 22:36 Uhr)
-
Was willst du damit bitteschön erreichen****?
Du musst eigentlich nur schauen, dass die ID nicht negativ ist und eben eine Zahl ist (ohne Komma).
-
Guten Morgen

ich habe jetzt einfach an den anfang des codes die folgenden zeilen gesetzt, damit kann man nur dann auf die seite zugreifen, wenn die id eine zahl ist. ich denke das sollte reichen, um eine sql injection zu verhindern.
ist das so ok? würdest du noch etwas verbessern?
nun muss ich nur noch die eingaben der input-felder filtern/entschärfen.PHP-Code:<?php if (!is_numeric($_GET['id']))
{
header("Location: http://www.domain.de/");
exit;
} ?>
-
Eventuell noch überprüfen ob die Zahl über 0 ist, weil negative IDs gibts bekanntlich nicht.

PHP-Code:<?php if(!is_numeric($_GET['id']))
{
header("Location: http://www.domain.de/");
exit;
} else {
if($_GET['id'] <= 0)
{
header("Location: http://www.domain.de/");
exit;
}
} ?>
Ähnliche Themen
-
[ASP.net] Datenbank bearbeiten etc.
Von Alaitoc im Forum .NET Web und KommunikationAntworten: 6Letzter Beitrag: 04.01.08, 10:14 -
Daten aus Datenbank holen - bearbeiten Problem
Von Lektor21 im Forum PHPAntworten: 8Letzter Beitrag: 17.09.07, 22:39 -
Mit FCKEDITOR Html aus Datenbank holen und bearbeiten
Von psifactory im Forum PHPAntworten: 11Letzter Beitrag: 28.08.06, 15:04 -
SQL Datenbank bearbeiten
Von Preisl im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 21.04.05, 13:14 -
Daten aus einer Datenbank bearbeiten
Von ems im Forum ASPAntworten: 2Letzter Beitrag: 06.05.04, 00:00



4Danke

Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren