MySQL Datensätze mit php-Formular ändern
Hallo,
ich habe folgendes Problem:
Ich habe hier nen Formular von einem Kollegen erhalten, was noch ein paar Fehler enthält, die ich lösen soll.
Also ich möchte gerne das ich aus dem Dropdownmenü ausgewählte Datensätze anzeigen(dieses funktioniert schon), Datensätze bearbeiten lassen kann und in der MySQL-Tabelle entsprechend aktualisieren...
Nur das aktualisieren (abspeichern) des geänderten Datensatzes funktioniert noch nicht!
Könnt ihr mir helfen?
Danke
Franzmann
ich habe folgendes Problem:
Ich habe hier nen Formular von einem Kollegen erhalten, was noch ein paar Fehler enthält, die ich lösen soll.
Also ich möchte gerne das ich aus dem Dropdownmenü ausgewählte Datensätze anzeigen(dieses funktioniert schon), Datensätze bearbeiten lassen kann und in der MySQL-Tabelle entsprechend aktualisieren...
Nur das aktualisieren (abspeichern) des geänderten Datensatzes funktioniert noch nicht!
Könnt ihr mir helfen?
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
$db = mysql_connect("localhost","root","") or die(mysql_error());
$sqlab = "SELECT Servername FROM infotain_neu";
mysql_select_db("test", $db) or die("Konnte die Datenbank nicht
waehlen.");
$server = mysql_query($sqlab) or die("Anfrage nicht erfolgreich");
?>
Serverauswahl:
<form action = "form3.php" method = "post">
<select name="dd">
<?php
while ($srv = mysql_fetch_array($server)){
echo '<option value="'.$srv['Servername'].'">'.$srv['Servername'].'</option>';
}
?>
</select><p>
<input type = "submit">
<input type = "reset">
</form>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
if (isset($_POST['dd']))
{
$db = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test", $db) or die(mysql_error());
$sql = "SELECT * FROM infotain_neu WHERE Servername = '".$_POST['dd']."'";
$res = mysql_query($sql,$db);
$altsrv = mysql_result($res, 0, "Servername");
$altbm = mysql_result($res, 0, "Bemerkung");
$altna = mysql_result($res, 0, "Netzart");
$altipnat = mysql_result($res, 0, "IPNAT");
$altiptvpn = mysql_result($res, 0, "IPTESTVPN");
$altipavpn = mysql_result($res, 0, "IPADMINVPN");
$altrsbip = mysql_result($res, 0, "RSBIP");
$altrsbn = mysql_result($res, 0, "RSBName");
$altap = mysql_result($res, 0, "Ansprechpartner");
$altsid = mysql_result($res, 0, "SID");
$altaart = mysql_result($res, 0, "Aufgabenart");
$althtyp = mysql_result($res, 0, "HerstellerTyp");
$altotyp = mysql_result($res, 0, "OSTyp");
$altort = mysql_result($res, 0, "Standort");
$altports = mysql_result($res, 0, "Ports");
$altoports = mysql_result($res, 0, "openPorts");
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button<p>";
echo "<form action = 'form3.php' ";
echo " method = 'post'>";
echo "<input name='neusrv' value='$altsrv'>";
echo " Servername<p>";
echo "<input name='neubm' value='$altbm'> ";
echo " Bemerkung<p>";
echo "<input name='neuna' value='$altna'>";
echo " Netzart<p>";
echo "<input name='neuipnat' value='$altipnat'>";
echo " IP-NAT<p>";
echo "<input name='neuiptvpn' value='$altiptvpn'>";
echo " IP-TEST-VPN<p>";
echo "<input type='neuipavpn' value='$altipavpn'>";
echo " IP-ADMIN-VPN<p>";
echo "<input type='neursbip' value='$altrsbip'>";
echo " RSB-IP<p>";
echo "<input type='neursbn' value='$altrsbn'>";
echo " RSB-Name<p>";
echo "<input type='neuap' value='$altap'>";
echo " Ansprechpartner<p>";
echo "<input type='neusid' value='$altsid'>";
echo " SID<p>";
echo "<input type='neuaart' value='$altaart'>";
echo " Aufgabenart<p>";
echo "<input type='neuhtyp' value='$althtyp'>";
echo " Hersteller-Typ<p>";
echo "<input type='neuotyp' value='$altotyp'>";
echo " OS-Typ<p>";
echo "<input type='neuort' value='$altort'>";
echo " Standort<p>";
echo "<input type='neuports' value='$altports'>";
echo " Ports<p>";
echo "<input type='neuoports' value='$altoports'>";
echo " OS-Typ<p>";
echo "<input type='submit' ";
echo " value='Änderungen in DB speichern'><p>";
echo "<input type='reset'>";
echo "</form>";
mysql_close($db);
}
else
echo "Es wurde kein Datensatz ausgewählt<p>";
?>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
if (isset($_POST['submit']))
{
$db = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test", $db) or die(mysql_error());
$sqlab = "UPDATE infotain_neu SET
Servername = '$neusrv',
Bemerkung = '$neubm',
Netzart = '$neuna',
IPNAT = '$neuipnat',
IPTESTVPN = '$neuiptvpn',
IPADMINVPN = '$neuipavpn',
RSBIP = '$neursbip',
RSB = '$neuipnat',
RSBName = '$neursbn',
Ansprechpartner = '$neuap',
SID = '$neusid',
Aufgabenart = '$neuaart',
HerstellerTyp = '$neuhtyp',
OSTyp = '$neuotyp',
Standort = '$neuort',
Ports = '$neuports',
openPorts = '$neuoports'
where Servername = '".$_POST['dd']."'";
mysql_query($sqlab, $db) or die (mysql_error());
$num = mysql_affected_rows();
if ($num>0)
echo "Der Datensatz wurde geändert<p>";
else
echo "Der Datensatz wurde nicht geändert<p>";
mysql_close($db);
}
else{
echo mysql_error();
}
?>
</body>
</html>
Danke
Franzmann
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 39847
Url: https://administrator.de/forum/mysql-datensaetze-mit-php-formular-aendern-39847.html
Ausgedruckt am: 24.12.2024 um 13:12 Uhr
25 Kommentare
Neuester Kommentar
Hi,
also dein Progammierstil ist "unschön". Abgesehen, dass du uns nicht gesagt hast, dass der Code aus 2 Seiten besteht. Ich habe ihn mal ein bisschen überarbeitet!!
Gruß
Dani
also dein Progammierstil ist "unschön". Abgesehen, dass du uns nicht gesagt hast, dass der Code aus 2 Seiten besteht. Ich habe ihn mal ein bisschen überarbeitet!!
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
/*Datenbankverbindung aufbauen*/
$db = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test", $db) or die("Konnte die Datenbank nicht waehlen.");
echo "Serverauswahl:";
echo "<form method='post'>";
echo "<select name='dd'>";
/*Abfrage*/
$sqlab = "SELECT Servername FROM infotain_neu";
$server = mysql_query($sqlab) or die("Anfrage nicht erfolgreich");
while ($srv = mysql_fetch_array($server))
{
echo "<option value='".$srv['Servername']."'>".$srv['Servername']."</option>";
}
?>
echo "</select><p>";
echo "<input type = 'submit' name='senden' value='submit'>";
echo "<input type = 'reset' name='loeschen' value='loeschen'>";
echo "</form>";
if (isset($_POST['dd']))
{
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row=mysql_getch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo " Servername<p>";
echo "<input name='neubm' value='".$row->Servername."'>";
echo " Bemerkung<p>";
echo "<input name='neuna' value='".$row->Bmerkung."'>";
echo " Netzart<p>";
echo "<input name='neuipnat' value='".$row->Netzart."'>";
echo " IP-NAT<p>";
echo "<input name='neuiptvpn' value='".$row->IPNAT."'>";
echo " IP-TEST-VPN<p>";
echo "<input type='neuipavpn' value='".$row->IPTESTVPN."'>";
echo " IP-ADMIN-VPN<p>";
echo "<input type='neursbip' value='".$row->IPADMINVPN."'>";
echo " RSB-IP<p>";
echo "<input type='neursbn' value='".$row->RSBIP."'>";
echo " RSB-Name<p>";
echo "<input type='neuap' value='".$row->RSBNAME."'>";
echo " Ansprechpartner<p>";
echo "<input type='neusid' value='".$row->SAnsprechparnter."'>";
echo " SID<p>";
echo "<input type='neuaart' value='".$row->SID."'>";
echo " Aufgabenart<p>";
echo "<input type='neuhtyp' value='".$row->Aufgabenart."'>";
echo " Hersteller-Typ<p>";
echo "<input type='neuotyp' value='".$row->Herstellertyp."'>";
echo " OS-Typ<p>";
echo "<input type='neuort' value='".$row->OSType."'>";
echo " Standort<p>";
echo "<input type='neuports' value='".$row->Standort."'>";
echo " Ports<p>";
echo "<input type='neuoports' value='".$row->Ports."'>";
echo "<input type='submit' value='Änderungen in DB speichern' name='submit2'><p>";
echo "<input type='reset' value='loeschen' name='loeschen'>";
echo "</form>";
}
else
{
echo "Es wurde kein Datensatz ausgewählt<p>";
}
if (isset($_POST['submit2']))
{
$sqlab = "UPDATE infotain_neu SET
Servername='".$_POST['neusrv']."',
Bemerkung = '".$_POST['neubm']."',
Netzart = '".$_POST['neuna']."',
IPNAT = '".$_POST['neuipnat']."',
IPTESTVPN = '".$_POST['neuiptvpn']."',
IPADMINVPN = '".$_POST['neuipavpn']."',
RSBIP = '$".$_POST['neursbip']."',
RSB = '".$_POST['neuipnat']."',
RSBName = '".$_POST['neursbn']."',
Ansprechpartner = '".$_POST['neuap']."',
SID = '".$_POST['neusid']."',
Aufgabenart = '".$_POST['neuaart']."',
HerstellerTyp = '".$_POST['neuhtyp']."',
OSTyp = '".$_POST['neuotyp']."',
Standort = '".$_POST['neuort']."',
Ports = '".$_POST['neuports']."',
openPorts = '".$_POST['neuoports']."'
where Servername = '".$_POST['dd']."';";
mysql_query($sqlab) or die (mysql_error());
$num = mysql_affected_rows();
if ($num > 0) echo "Der Datensatz wurde geändert<p>";
else echo "Der Datensatz wurde nicht geändert<p>";
}
else
{
echo mysql_error();
}
mysql_close($db);
?>
</body>
</html>
Gruß
Dani
Sagte ich bereits... wenn ich abspeichere
bzw. den Wert ändere kommt die
Fehlermeldung: "Es wurde kein Datensatz
ausgewählt" ! Ansonsten geht es
einwandfrei...
Nein, sagtest du nicht bereits - zumindest noch nicht zu dem Zeitpunkt, wo ich die Seite geladen habe.bzw. den Wert ändere kommt die
Fehlermeldung: "Es wurde kein Datensatz
ausgewählt" ! Ansonsten geht es
einwandfrei...
Die Fehlermeldung sagt aus, dass "(isset($_POST['dd']))" false ergibt. Und wenn dann $_POST['dd'] in der WHERE-Klausel verwendet wird ist es auch nicht erstaunlich, das kein Datensatz geändert wird.
Du solltest die Select-Box mit Hilfe des Attributs 'size="1"' in eine Dropdown-Box umwandeln.
Daneben kann dein Ursprungscode auch nicht funktionieren, du hast mehrmals Fehler wie " echo "<input type='neuap' value='$altap'>";", da muss stat type wohl name stehen.
Filipp
Hallo Leute,
ich bin nen Kollege von Franzmann und wollte euch schonmal für eure Mühe danken!
Franzmann kommt morgen erst wieder, ich soll das heute für ihn übernehmen!
Aber warum werden die passenden Datensätze dann in den Textfeldern angezeigt?
Wieso? Es ist doch schon ein Dropdownmenü!?
Ah okay hab ich ausgemerzt! Danke!
Nur leider funktioniert mein Code immer noch nicht ganz:
@ Dani: Danke für deine Hilfe hier habe ich jetzt den überarbeiteten Quellcode:
Doch folgende Fehler sind imme rnoch da:
"Es wurde kein Datensatz ausgewählt"
Notice: Undefined index: dd in E:\TYPO3\htdocs\form3.php on line 127
Der Datensatz wurde nicht geändert
Ich blick da grade nciht durch, woran das liegt!
Chribu
ich bin nen Kollege von Franzmann und wollte euch schonmal für eure Mühe danken!
Franzmann kommt morgen erst wieder, ich soll das heute für ihn übernehmen!
Die Fehlermeldung sagt aus, dass
"(isset($_POST['dd']))" false
ergibt. Und wenn dann $_POST['dd'] in der
WHERE-Klausel verwendet wird ist es auch
nicht erstaunlich, das kein Datensatz
geändert wird.
"(isset($_POST['dd']))" false
ergibt. Und wenn dann $_POST['dd'] in der
WHERE-Klausel verwendet wird ist es auch
nicht erstaunlich, das kein Datensatz
geändert wird.
Aber warum werden die passenden Datensätze dann in den Textfeldern angezeigt?
Du solltest die Select-Box mit Hilfe des
Attributs 'size="1"' in eine
Dropdown-Box umwandeln.
Attributs 'size="1"' in eine
Dropdown-Box umwandeln.
Wieso? Es ist doch schon ein Dropdownmenü!?
Daneben kann dein Ursprungscode auch nicht
funktionieren, du hast mehrmals Fehler wie
" echo "<input type='neuap'
value='$altap'>";", da muss stat
type wohl name stehen.
funktionieren, du hast mehrmals Fehler wie
" echo "<input type='neuap'
value='$altap'>";", da muss stat
type wohl name stehen.
Ah okay hab ich ausgemerzt! Danke!
Nur leider funktioniert mein Code immer noch nicht ganz:
@ Dani: Danke für deine Hilfe hier habe ich jetzt den überarbeiteten Quellcode:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
/*Datenbankverbindung aufbauen*/
$db = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test", $db) or die("Konnte die Datenbank nicht waehlen.");
echo "Serverauswahl:";
echo "<form method='post'>";
echo "<select name='dd'>";
/*Abfrage*/
$sqlab = "SELECT Servername FROM infotain_neu";
$server = mysql_query($sqlab) or die("Anfrage nicht erfolgreich");
while ($srv = mysql_fetch_array($server))
{
echo "<option value='".$srv['Servername']."'>".$srv['Servername']."</option>";
}
echo "</select><p>";
echo "<input type = 'submit' name='senden' value='submit'>";
echo "<input type = 'reset' name='loeschen' value='loeschen'>";
echo "</form>";
if (isset($_POST['dd']))
{
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo " Servername<p>";
echo "<input name='neusrv' value='".$row->Servername."'>";
echo " Bemerkung<p>";
echo "<input name='neubm' value='".$row->Bemerkung."'>";
echo " Netzart<p>";
echo "<input name='neuna' value='".$row->Netzart."'>";
echo " IP-NAT<p>";
echo "<input name='neuipnat' value='".$row->IPNAT."'>";
echo " IP-TEST-VPN<p>";
echo "<input name='neuiptvpn' value='".$row->IPTESTVPN."'>";
echo " IP-ADMIN-VPN<p>";
echo "<input name='neuipavpn' value='".$row->IPADMINVPN."'>";
echo " RSB-IP<p>";
echo "<input name='neursbip' value='".$row->RSBIP."'>";
echo " RSB-Name<p>";
echo "<input name='neursbn' value='".$row->RSBName."'>";
echo " Ansprechpartner<p>";
echo "<input name='neuap' value='".$row->Ansprechpartner."'>";
echo " SID<p>";
echo "<input name='neusid' value='".$row->SID."'>";
echo " Aufgabenart<p>";
echo "<input name='neuaart' value='".$row->Aufgabenart."'>";
echo " Hersteller-Typ<p>";
echo "<input name='neuhtyp' value='".$row->HerstellerTyp."'>";
echo " OS-Typ<p>";
echo "<input name='neuotyp' value='".$row->OSTyp."'>";
echo " Standort<p>";
echo "<input name='neuort' value='".$row->Standort."'>";
echo " Ports<p>";
echo "<input name='neuports' value='".$row->Ports."'>";
echo " openPorts<p>";
echo "<input name='neuoports' value='".$row->openPorts."'>";
echo "<input type='submit' value='Änderungen in DB speichern' name='submit2'><p>";
echo "<input type='reset' value='loeschen' name='loeschen'>";
echo "</form>";
}
else
{
echo "Es wurde kein Datensatz ausgewählt<p>";
}
if (isset($_POST['submit2']))
{
$sqlab = "UPDATE infotain_neu SET
Servername='".$_POST['neusrv']."',
Bemerkung = '".$_POST['neubm']."',
Netzart = '".$_POST['neuna']."',
IPNAT = '".$_POST['neuipnat']."',
IPTESTVPN = '".$_POST['neuiptvpn']."',
IPADMINVPN = '".$_POST['neuipavpn']."',
RSBIP = '".$_POST['neursbip']."',
RSBName = '".$_POST['neursbn']."',
Ansprechpartner = '".$_POST['neuap']."',
SID = '".$_POST['neusid']."',
Aufgabenart = '".$_POST['neuaart']."',
HerstellerTyp = '".$_POST['neuhtyp']."',
OSTyp = '".$_POST['neuotyp']."',
Standort = '".$_POST['neuort']."',
Ports = '".$_POST['neuports']."',
openPorts = '".$_POST['neuoports']."'
WHERE Servername = '".$_POST['dd']."'"; //<--Zeile 127---------------------------
mysql_query($sqlab) or die (mysql_error());
$num = mysql_affected_rows();
if ($num > 0) echo "Der Datensatz wurde geändert<p>";
else echo "Der Datensatz wurde nicht geändert<p>";
}
else
{
echo mysql_error();
}
mysql_close($db);
?>
</body>
</html>
Doch folgende Fehler sind imme rnoch da:
"Es wurde kein Datensatz ausgewählt"
Notice: Undefined index: dd in E:\TYPO3\htdocs\form3.php on line 127
Der Datensatz wurde nicht geändert
Ich blick da grade nciht durch, woran das liegt!
Chribu
Hallo,
du hast zwei Formulare auf deiner Seite. Einmal das zum Auswählen, einmal das zum Ändern. Ersteres hat das Feld "dd", das zweite nicht. Daher kommen dann (wenn du das abschickst) die entsprechenden Fehlermeldungen und es wird kein Datensatz gespeichert. Abhilfe: ein input type="hidden" mit in das zweite Formular aufnehmen, das den Wert aus dem ersten speichert.
Zeile 127 ist bei mir übrigens 'Standort = '".$_POST['neuort']."',' , aber ich vermute, die ersten drei Zeilen gehören bei dir auch nicht wirklich zum Code.
Filipp
du hast zwei Formulare auf deiner Seite. Einmal das zum Auswählen, einmal das zum Ändern. Ersteres hat das Feld "dd", das zweite nicht. Daher kommen dann (wenn du das abschickst) die entsprechenden Fehlermeldungen und es wird kein Datensatz gespeichert. Abhilfe: ein input type="hidden" mit in das zweite Formular aufnehmen, das den Wert aus dem ersten speichert.
Zeile 127 ist bei mir übrigens 'Standort = '".$_POST['neuort']."',' , aber ich vermute, die ersten drei Zeilen gehören bei dir auch nicht wirklich zum Code.
Filipp
Hallo Filipp,
Welchen Wert meinst du genau? Servername?
Und dann wird der erste Fehler mit "Es wurde kein Datensatz ausgewählt " verschwindne und die anderen Fehler auch?
Entschuldige mich!
Ich habe vergessen die Zeile 127 kenntlich zu machen!
Dies werde ich jetzt sofort ändern(im letzten Post von mir)
;)
Thx
Chribu
du hast zwei Formulare auf deiner Seite.
Einmal das zum Auswählen, einmal das zum
Ändern. Ersteres hat das Feld
"dd", das zweite nicht. Daher
kommen dann (wenn du das abschickst) die
entsprechenden Fehlermeldungen und es wird
kein Datensatz gespeichert. Abhilfe: ein
input type="hidden" mit in das
zweite Formular aufnehmen, das den Wert aus
dem ersten speichert.
Einmal das zum Auswählen, einmal das zum
Ändern. Ersteres hat das Feld
"dd", das zweite nicht. Daher
kommen dann (wenn du das abschickst) die
entsprechenden Fehlermeldungen und es wird
kein Datensatz gespeichert. Abhilfe: ein
input type="hidden" mit in das
zweite Formular aufnehmen, das den Wert aus
dem ersten speichert.
Welchen Wert meinst du genau? Servername?
Und dann wird der erste Fehler mit "Es wurde kein Datensatz ausgewählt " verschwindne und die anderen Fehler auch?
Zeile 127 ist bei mir übrigens
'Standort =
'".$_POST['neuort']."',' , aber ich
vermute, die ersten drei Zeilen gehören
bei dir auch nicht wirklich zum Code.
'Standort =
'".$_POST['neuort']."',' , aber ich
vermute, die ersten drei Zeilen gehören
bei dir auch nicht wirklich zum Code.
Entschuldige mich!
Ich habe vergessen die Zeile 127 kenntlich zu machen!
Dies werde ich jetzt sofort ändern(im letzten Post von mir)
;)
Thx
Chribu
Hallo,
also:
1. Formular
Hier wird ein Input-Element mit dem Namen "dd" definiert, richtig, offensichtlich für den Servernamen. Nach dem Klicken auf den Submit-Button wird die Seite neu geladen. Es wird überprüft ob
, was der Fall ist, dann wird das zweite Formular angezeigt, in dem man die Daten auch ändern kann, also folgendes:
Dieses Formular enthält kein Input mit dem Namen "dd". Das ist der Fehler. Wenn man hier auf den Submit-Button (heisst hier "submit2") klickt, dann wir die Seite wieder neu geladen. Es wird wieder die Abfrage
ausgeführt (frag bitte nicht wo, diese Zeile kommt nur einmal vor), diese wird nach false ausgewertet (weil ja nur die Daten des Formulars, dessen Submit-Button gedrückt wurde übermittelt wurden, und dieses Formular kein Feld Namens "dd" enthält), also wird im else-Zweig die Meldung "Es wurde kein Datensatz ausgewählt" ausgegeben. Danach wird überprüft, ob
, was Wahr ergibt, also wird der Zweig ausgeführt. Dort soll dann in Zeile 127 die Variable $_POST['dd'] verwendet werden, die aber nicht existiert (wir erinnern uns: im zweiten Formular, das übermittelt wurde ist sie nicht vorhanden). Das führt dann natürlich zu einem Fehler ("Notice: Undefined index: dd in E:\TYPO3\htdocs\form3.php on line 127"), weswegen auch keine Änderungen gespeichert werden.
Lösung: füge in das Zweite Formular noch die Zeile echo "<input type='hidden' name='dd' value='"..$_POST['dd']."'>" ein, also etwa:
Dann solltest du noch die Blöcke
und
vertauschen (sprich: letzteren zuerst), dann wird nämlich beim Speichern die Änderung erst gespeichert, dann wieder ausgelesen und angezeigt, so dass man die Änderung gleich nochmal kontrollieren kann. Ansonsten würden hier nochmal die alten Daten angezeigt.
(Nochmal deutlich: nicht die Anweisungen innerhalb der if-Zweige austauschen, sondern den ganzen Block, inklusive der ifs, nur die Reihenfolge tauschen).
So, für sowas nehme ich normalerweise einen ordentlichen Stundensatz...
Filipp
also:
1. Formular
echo "Serverauswahl:";
echo "<form method='post'>";
echo "<select name='dd'>";
/*Abfrage*/
$sqlab = "SELECT Servername FROM infotain_neu";
$server = mysql_query($sqlab) or die("Anfrage nicht erfolgreich");
while ($srv = mysql_fetch_array($server))
{
echo "<option value='".$srv['Servername']."'>".$srv['Servername']."</option>";
}
echo "</select><p>";
echo "<input type = 'submit' name='senden' value='submit'>";
echo "<input type = 'reset' name='loeschen' value='loeschen'>";
echo "</form>";
Hier wird ein Input-Element mit dem Namen "dd" definiert, richtig, offensichtlich für den Servernamen. Nach dem Klicken auf den Submit-Button wird die Seite neu geladen. Es wird überprüft ob
if (isset($_POST['dd']))
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo " Servername<p>";
echo "<input name='neusrv' value='".$row->Servername."'>";
echo " Bemerkung<p>";
echo "<input name='neubm' value='".$row->Bemerkung."'>";
echo " Netzart<p>";
echo "<input name='neuna' value='".$row->Netzart."'>";
[...]
if (isset($_POST['dd']))
if (isset($_POST['submit2']))
Lösung: füge in das Zweite Formular noch die Zeile echo "<input type='hidden' name='dd' value='"..$_POST['dd']."'>" ein, also etwa:
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo "<input type='hidden' name='dd' value='".$_POST['dd']."'>"
echo " Servername<p>";
echo "<input name='neusrv' value='".$row->Servername."'>";
Dann solltest du noch die Blöcke
if (isset($_POST['dd']))
{
[...]
}
if (isset($_POST['submit2']))
{
[...]
}
(Nochmal deutlich: nicht die Anweisungen innerhalb der if-Zweige austauschen, sondern den ganzen Block, inklusive der ifs, nur die Reihenfolge tauschen).
So, für sowas nehme ich normalerweise einen ordentlichen Stundensatz...
Filipp
Hallo Fillip,
erst einmal möchte ich ein großes Lob an dich aussprechen!
Super das du das gemacht hast, jetzt blicke ich da etwas mehr durch danke!!!!
So jetzt folgendes:
Nachdem ich die beiden If-Blöcke getauscht habe und meine Details für einen Server ausgebebn lassen wollte bekam ich folgende Fehlermeldungen:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:\TYPO3\htdocs\form3.php on line 75
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in E:\TYPO3\htdocs\form3.php on line 75
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in E:\TYPO3\htdocs\form3.php on line 76
und zwischen den einzelnen Feldern:
Notice: Trying to get property of non-object in E:\TYPO3\htdocs\form3.php on line 86
So anhand der aufschluss reichen Fehlermeldung "A link to the server could not be established ", habe ich mal das mysql_close($db); auskommentiert und siehe da... ...er ändert eienn Datensatz in der Datenbank zeigt aber nach dem Submit des geänderten Datensatzes wieder folgende Fehler:
Notice: Trying to get property of non-object in E:\TYPO3\htdocs\form3.php on line 86 usw
Anscheinend verliert er nach einem submit irgendwelche zugehörigkeiten..`?
Also dank dir speichert er endlich geänderte Daten ab nur die Fehler sind noch da. (property of non...)
Fillip SUPER-Leistung DANKEEE!
Chribu
erst einmal möchte ich ein großes Lob an dich aussprechen!
Super das du das gemacht hast, jetzt blicke ich da etwas mehr durch danke!!!!
So jetzt folgendes:
Nachdem ich die beiden If-Blöcke getauscht habe und meine Details für einen Server ausgebebn lassen wollte bekam ich folgende Fehlermeldungen:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:\TYPO3\htdocs\form3.php on line 75
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in E:\TYPO3\htdocs\form3.php on line 75
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in E:\TYPO3\htdocs\form3.php on line 76
und zwischen den einzelnen Feldern:
Notice: Trying to get property of non-object in E:\TYPO3\htdocs\form3.php on line 86
So anhand der aufschluss reichen Fehlermeldung "A link to the server could not be established ", habe ich mal das mysql_close($db); auskommentiert und siehe da... ...er ändert eienn Datensatz in der Datenbank zeigt aber nach dem Submit des geänderten Datensatzes wieder folgende Fehler:
Notice: Trying to get property of non-object in E:\TYPO3\htdocs\form3.php on line 86 usw
Anscheinend verliert er nach einem submit irgendwelche zugehörigkeiten..`?
Also dank dir speichert er endlich geänderte Daten ab nur die Fehler sind noch da. (property of non...)
Fillip SUPER-Leistung DANKEEE!
Chribu
Hallo,
die Fehler in Zeile 75 und 76 kamen, weil die DB-Verbindung wieder geschlossen wurde, das hast du wohl richtig erkannt. Das mysql_close() solltest du als letzte Zeile ruhig im Code lassen (gehört ja auch nicht mehr zu den if-Blöcken, die zu tauschen ich dir empfohlen habe). Für den Fehler in Zeile 86 vermute ich einen einfachen Syntax-Fehler (Punkt zuviel o.ä.), nur habe ich keine Ahnung, was bei dir jetzt Zeile 86 ist.
Filipp
die Fehler in Zeile 75 und 76 kamen, weil die DB-Verbindung wieder geschlossen wurde, das hast du wohl richtig erkannt. Das mysql_close() solltest du als letzte Zeile ruhig im Code lassen (gehört ja auch nicht mehr zu den if-Blöcken, die zu tauschen ich dir empfohlen habe). Für den Fehler in Zeile 86 vermute ich einen einfachen Syntax-Fehler (Punkt zuviel o.ä.), nur habe ich keine Ahnung, was bei dir jetzt Zeile 86 ist.
Filipp
Hi Fillip,
der Fehler hier:
Notice: Trying to get property of non-object in E:\TYPO3\htdocs\form3.php on line 86
tritt nicht nur in Zeile 86 auf, sondern auch:
86,92,95..bis 131 auf:
hier meine letzten Zeilen:
der Fehler hier:
Notice: Trying to get property of non-object in E:\TYPO3\htdocs\form3.php on line 86
tritt nicht nur in Zeile 86 auf, sondern auch:
86,92,95..bis 131 auf:
hier meine letzten Zeilen:
if (isset($_POST['dd'])) //<<<<<<Zeile71---------------------------------
{
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo "<input type='hidden' name='dd' value='".$_POST['dd']."'>";
echo " Servername<p>";
echo "<input name='neusrv' value='".$row->Servername."'>";
echo " Bemerkung<p>";
echo "<input name='neubm' value='".$row->Bemerkung."'>";
echo " Netzart<p>";
echo "<input name='neuna' value='".$row->Netzart."'>";
echo " IP-NAT<p>";
echo "<input name='neuipnat' value='".$row->IPNAT."'>";
echo " IP-TEST-VPN<p>";
echo "<input name='neuiptvpn' value='".$row->IPTESTVPN."'>";
echo " IP-ADMIN-VPN<p>";
echo "<input name='neuipavpn' value='".$row->IPADMINVPN."'>";
echo " RSB-IP<p>";
echo "<input name='neursbip' value='".$row->RSBIP."'>";
echo " RSB-Name<p>";
echo "<input name='neursbn' value='".$row->RSBName."'>";
echo " Ansprechpartner<p>";
echo "<input name='neuap' value='".$row->Ansprechpartner."'>";
echo " SID<p>";
echo "<input name='neusid' value='".$row->SID."'>";
echo " Aufgabenart<p>";
echo "<input name='neuaart' value='".$row->Aufgabenart."'>";
echo " Hersteller-Typ<p>";
echo "<input name='neuhtyp' value='".$row->HerstellerTyp."'>";
echo " OS-Typ<p>";
echo "<input name='neuotyp' value='".$row->OSTyp."'>";
echo " Standort<p>";
echo "<input name='neuort' value='".$row->Standort."'>";
echo " Ports<p>";
echo "<input name='neuports' value='".$row->Ports."'>";
echo " openPorts<p>";
echo "<input name='neuoports' value='".$row->openPorts."'>";
echo "<input type='submit' value='Änderungen in DB speichern' name='submit2'><p>";
echo "<input type='reset' value='loeschen' name='loeschen'>";
echo "</form>";//<<<<<<<<<<Zeile 135-----------------------------------
}
else
{
echo "Es wurde kein Datensatz ausgewählt<p>";
}
Da stehe ich auch gerade etwas auf dem Schlauch.
Er kann wohl nicht per $row->... auf die Datenfelder zugreifen. Ich würde also davon ausgehen, dass $row nicht definiert/leer ist. Das wiederum würde bedeuten, dass die Abfrage keine Zeilen zurückliefert. Was natürlich etwas seltsam wäre.... überprüf doch mal, was zu diesem Zeitpunkt in $_POST['dd'] ist (z.B. in dem du im HTML-Quelltest einfach mal schaust, was in dem hidden-Field steht). Und dann lass dir mal ausgeben, wieviel Zeilen die Abfrage zurückgibt. Und wenn du es dann nicht findest poste halt nochmal den ganzen akutellen Code.
Filipp
Er kann wohl nicht per $row->... auf die Datenfelder zugreifen. Ich würde also davon ausgehen, dass $row nicht definiert/leer ist. Das wiederum würde bedeuten, dass die Abfrage keine Zeilen zurückliefert. Was natürlich etwas seltsam wäre.... überprüf doch mal, was zu diesem Zeitpunkt in $_POST['dd'] ist (z.B. in dem du im HTML-Quelltest einfach mal schaust, was in dem hidden-Field steht). Und dann lass dir mal ausgeben, wieviel Zeilen die Abfrage zurückgibt. Und wenn du es dann nicht findest poste halt nochmal den ganzen akutellen Code.
Filipp
Hi Fillip,
hier ist mal nen Auszug aus dem Quelltext(HTML):
<input type='hidden' name='dd' value='test'> Also wurde "Test" erfolgreich übergeben!!!
"TEST" stimmt auch!
Aber bei all den anderen feldern ist value=' ' =>leer
Aber das sind ja auch nur Notices keine Warnings!
Lso könnte ich die auch, wenn wir die Fehlerquelle nicht feststellen können, das einfach nicht anzeigen lassen d.h. E_NOTICE ...
Cya
Chribu
hier ist mal nen Auszug aus dem Quelltext(HTML):
<input type='hidden' name='dd' value='test'> Also wurde "Test" erfolgreich übergeben!!!
"TEST" stimmt auch!
Aber bei all den anderen feldern ist value=' ' =>leer
Aber das sind ja auch nur Notices keine Warnings!
Lso könnte ich die auch, wenn wir die Fehlerquelle nicht feststellen können, das einfach nicht anzeigen lassen d.h. E_NOTICE ...
Cya
Chribu
Hi Fillip,
ich habe noch was rausgefunden, um das Problem noch ein bisschen einzugrenzen!
Er gibt mir nur diese komischen Fehler aus, wenn ich den Inhalt des ersten Feldes(Servername) ändere!!(er speichert zwar aber gibt Fehler aus notice blabla)
Bei den anderen kann ich so oft ändern wie ich will und es läuft!
Cya
Chribu
ich habe noch was rausgefunden, um das Problem noch ein bisschen einzugrenzen!
Er gibt mir nur diese komischen Fehler aus, wenn ich den Inhalt des ersten Feldes(Servername) ändere!!(er speichert zwar aber gibt Fehler aus notice blabla)
Bei den anderen kann ich so oft ändern wie ich will und es läuft!
Cya
Chribu
Oh ja, das hatte ich übersehen, das man den ändern kann.
Damit ist der Fehler völlig klar. Wenn du den Servernamen änderst, dann aber die Details zu dem alten Servernamen abfragst liefert er natürlich kein Ergebnis mehr zurück.
Das ist ein bisschen auch eine Frage von Datenbankdesign - jede Tabelle sollt ein Primärschlüsselattribut besitzen, und dessen Werte sollten sich nicht ändern. Und mit diesem Primärschlüssel sollte man dann in Anwendungen auf die einzelnen Zeilen zugreifen.
Abhilfe:
Füge ganz oben ein
Dann in dem Block für das Update hinzufügen:
und ändere in
die SQL-Anfrage in
Wenn jetzt innerhalb des Update-Blocks der Servername geändert wird, dann wird nachher bei der Abfrage der neue Wert verwendet, nicht mehr der in der POST-Variable abgelegte alte. Wird der Update-Block nich durchlaufen (also beim ersten Aufruf, wo die Details angezeigt und noch nicht geändert werden) so sind $anzuzeigenderServer und $_POST['dd'] gleich.
Andere Möglichkeit:
Ändere in
die if-Bedingung in
damit werden nach der Änderung die aktualisierten Daten einfach nicht mehr angezeigt, und damit hat sich auch das Problem erledigt, wie man sie abfragen soll.
Grundsätzlich ist das ganze aber unsauber. Wenn man bei zwei Datensätzen den selbern Servernamen eingibt wirken alle Änderungen später immer auf beide aus (und man kann sie auch nur als einen anzeigen).
Filipp
Damit ist der Fehler völlig klar. Wenn du den Servernamen änderst, dann aber die Details zu dem alten Servernamen abfragst liefert er natürlich kein Ergebnis mehr zurück.
Das ist ein bisschen auch eine Frage von Datenbankdesign - jede Tabelle sollt ein Primärschlüsselattribut besitzen, und dessen Werte sollten sich nicht ändern. Und mit diesem Primärschlüssel sollte man dann in Anwendungen auf die einzelnen Zeilen zugreifen.
Abhilfe:
Füge ganz oben ein
$anzuzeigenderServer = "";
if (isset($_POST['dd']))
$anzuzeigenderServer = $_POST['dd'];
Dann in dem Block für das Update hinzufügen:
$anzuzeigenderServer = $_POST['neusrv'];
und ändere in
if (isset($_POST['dd']))
{
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$anzuzeigenderServer."';";
Andere Möglichkeit:
Ändere in
if (isset($_POST['dd']))
{
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$_POST['dd']."';";
$res = mysql_query($sql);
$row = mysql_fetch_object($res); [...]
if (isset($_POST['dd']) AND !isset($_POST['submit2']))
Grundsätzlich ist das ganze aber unsauber. Wenn man bei zwei Datensätzen den selbern Servernamen eingibt wirken alle Änderungen später immer auf beide aus (und man kann sie auch nur als einen anzeigen).
Filipp
irgendwie klappt das noch net so!
Hab ich das so richtig gemacht?
Danke nochmal für deine Hilfe!
Chribu
Hab ich das so richtig gemacht?
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
/*Datenbankverbindung aufbauen*/
$db = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test", $db) or die("Konnte die Datenbank nicht waehlen.");
echo "Serverauswahl:";
echo "<form method='post'>";
echo "<select name='dd'>";
/*Abfrage*/
$sqlab = "SELECT Servername FROM infotain_neu";
$server = mysql_query($sqlab) or die("Anfrage nicht erfolgreich");
while ($srv = mysql_fetch_array($server))
{
echo "<option value='".$srv['Servername']."'>".$srv['Servername']."</option>";
}
echo "</select><p>";
echo "<input type = 'submit' name='senden' value='submit'>";
echo "<input type = 'reset' name='loeschen' value='loeschen'>";
echo "</form>";
if (isset($_POST['submit2']))
{
$anzuzeigenderServer = $_POST['neusrv'];
$sqlab = "UPDATE infotain_neu SET
Servername='".$_POST['neusrv']."',
Bemerkung = '".$_POST['neubm']."',
Netzart = '".$_POST['neuna']."',
IPNAT = '".$_POST['neuipnat']."',
IPTESTVPN = '".$_POST['neuiptvpn']."',
IPADMINVPN = '".$_POST['neuipavpn']."',
RSBIP = '".$_POST['neursbip']."',
RSBName = '".$_POST['neursbn']."',
Ansprechpartner = '".$_POST['neuap']."',
SID = '".$_POST['neusid']."',
Aufgabenart = '".$_POST['neuaart']."',
HerstellerTyp = '".$_POST['neuhtyp']."',
OSTyp = '".$_POST['neuotyp']."',
Standort = '".$_POST['neuort']."',
Ports = '".$_POST['neuports']."',
openPorts = '".$_POST['neuoports']."'
WHERE Servername = '".$_POST['dd']."'";
mysql_query($sqlab) or die (mysql_error());
$num = mysql_affected_rows();
if ($num > 0) echo "Der Datensatz wurde geändert<p>";
else echo "Der Datensatz wurde nicht geändert<p>";
}
else
{
echo mysql_error();
}
$anzuzeigenderServer = "";
if (isset($_POST['dd']))
{
$anzuzeigenderServer = $_POST['dd'];
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$anzuzeigenderServer."'";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo "<input type='hidden' name='dd' value='".$_POST['dd']."'>";
echo " Servername<p>";
echo "<input name='neusrv' value='".$row->Servername."'>";
echo " Bemerkung<p>";
echo "<input name='neubm' value='".$row->Bemerkung."'>";
echo " Netzart<p>";
echo "<input name='neuna' value='".$row->Netzart."'>";
echo " IP-NAT<p>";
echo "<input name='neuipnat' value='".$row->IPNAT."'>";
echo " IP-TEST-VPN<p>";
echo "<input name='neuiptvpn' value='".$row->IPTESTVPN."'>";
echo " IP-ADMIN-VPN<p>";
echo "<input name='neuipavpn' value='".$row->IPADMINVPN."'>";
echo " RSB-IP<p>";
echo "<input name='neursbip' value='".$row->RSBIP."'>";
echo " RSB-Name<p>";
echo "<input name='neursbn' value='".$row->RSBName."'>";
echo " Ansprechpartner<p>";
echo "<input name='neuap' value='".$row->Ansprechpartner."'>";
echo " SID<p>";
echo "<input name='neusid' value='".$row->SID."'>";
echo " Aufgabenart<p>";
echo "<input name='neuaart' value='".$row->Aufgabenart."'>";
echo " Hersteller-Typ<p>";
echo "<input name='neuhtyp' value='".$row->HerstellerTyp."'>";
echo " OS-Typ<p>";
echo "<input name='neuotyp' value='".$row->OSTyp."'>";
echo " Standort<p>";
echo "<input name='neuort' value='".$row->Standort."'>";
echo " Ports<p>";
echo "<input name='neuports' value='".$row->Ports."'>";
echo " openPorts<p>";
echo "<input name='neuoports' value='".$row->openPorts."'>";
echo "<input type='submit' value='Änderungen in DB speichern' name='submit2'><p>";
echo "<input type='reset' value='loeschen' name='loeschen'>";
echo "</form>";
}
else
{
echo "Es wurde kein Datensatz ausgewählt<p>";
}
mysql_close($db);
?>
</body>
</html>
Danke nochmal für deine Hilfe!
Chribu
Nein, das ist so nicht richtig.
solltest du ganz oben einfügen. Sprich: z.B. hinter "error_reporting(E_ALL);".
Also, ganzer Code:
Filipp
$anzuzeigenderServer = "";
if (isset($_POST['dd']))
$anzuzeigenderServer = $_POST['dd'];
Also, ganzer Code:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
$anzuzeigenderServer = "";
if (isset($_POST['dd']))
$anzuzeigenderServer = $_POST['dd'];
/*Datenbankverbindung aufbauen*/
$db = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test", $db) or die("Konnte die Datenbank nicht waehlen.");
echo "Serverauswahl:";
echo "<form method='post'>";
echo "<select name='dd'>";
/*Abfrage*/
$sqlab = "SELECT Servername FROM infotain_neu";
$server = mysql_query($sqlab) or die("Anfrage nicht erfolgreich");
while ($srv = mysql_fetch_array($server))
{
echo "<option value='".$srv['Servername']."'>".$srv['Servername']."</option>";
}
echo "</select><p>";
echo "<input type = 'submit' name='senden' value='submit'>";
echo "<input type = 'reset' name='loeschen' value='loeschen'>";
echo "</form>";
if (isset($_POST['submit2']))
{
$anzuzeigenderServer = $_POST['neusrv'];
$sqlab = "UPDATE infotain_neu SET
Servername='".$_POST['neusrv']."',
Bemerkung = '".$_POST['neubm']."',
Netzart = '".$_POST['neuna']."',
IPNAT = '".$_POST['neuipnat']."',
IPTESTVPN = '".$_POST['neuiptvpn']."',
IPADMINVPN = '".$_POST['neuipavpn']."',
RSBIP = '".$_POST['neursbip']."',
RSBName = '".$_POST['neursbn']."',
Ansprechpartner = '".$_POST['neuap']."',
SID = '".$_POST['neusid']."',
Aufgabenart = '".$_POST['neuaart']."',
HerstellerTyp = '".$_POST['neuhtyp']."',
OSTyp = '".$_POST['neuotyp']."',
Standort = '".$_POST['neuort']."',
Ports = '".$_POST['neuports']."',
openPorts = '".$_POST['neuoports']."'
WHERE Servername = '".$_POST['dd']."'";
mysql_query($sqlab) or die (mysql_error());
$num = mysql_affected_rows();
if ($num > 0) echo "Der Datensatz wurde geändert<p>";
else echo "Der Datensatz wurde nicht geändert<p>";
}
else
{
echo mysql_error();
}
if (isset($_POST['dd']))
{
$sql = "SELECT * FROM infotain_neu WHERE Servername='".$anzuzeigenderServer."'";
$res = mysql_query($sql);
$row = mysql_fetch_object($res);
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button!!<p>";
echo "<form method='post'>";
echo "<input type='hidden' name='dd' value='".$_POST['dd']."'>";
echo " Servername<p>";
echo "<input name='neusrv' value='".$row->Servername."'>";
echo " Bemerkung<p>";
echo "<input name='neubm' value='".$row->Bemerkung."'>";
echo " Netzart<p>";
echo "<input name='neuna' value='".$row->Netzart."'>";
echo " IP-NAT<p>";
echo "<input name='neuipnat' value='".$row->IPNAT."'>";
echo " IP-TEST-VPN<p>";
echo "<input name='neuiptvpn' value='".$row->IPTESTVPN."'>";
echo " IP-ADMIN-VPN<p>";
echo "<input name='neuipavpn' value='".$row->IPADMINVPN."'>";
echo " RSB-IP<p>";
echo "<input name='neursbip' value='".$row->RSBIP."'>";
echo " RSB-Name<p>";
echo "<input name='neursbn' value='".$row->RSBName."'>";
echo " Ansprechpartner<p>";
echo "<input name='neuap' value='".$row->Ansprechpartner."'>";
echo " SID<p>";
echo "<input name='neusid' value='".$row->SID."'>";
echo " Aufgabenart<p>";
echo "<input name='neuaart' value='".$row->Aufgabenart."'>";
echo " Hersteller-Typ<p>";
echo "<input name='neuhtyp' value='".$row->HerstellerTyp."'>";
echo " OS-Typ<p>";
echo "<input name='neuotyp' value='".$row->OSTyp."'>";
echo " Standort<p>";
echo "<input name='neuort' value='".$row->Standort."'>";
echo " Ports<p>";
echo "<input name='neuports' value='".$row->Ports."'>";
echo " openPorts<p>";
echo "<input name='neuoports' value='".$row->openPorts."'>";
echo "<input type='submit' value='Änderungen in DB speichern' name='submit2'><p>";
echo "<input type='reset' value='loeschen' name='loeschen'>";
echo "</form>";
}
else
{
echo "Es wurde kein Datensatz ausgewählt<p>";
}
mysql_close($db);
?>
</body>
</html>
?>
Filipp
@Franzmann
Hi,
ich würde das Script auf mehrere Seiten verteilen.
Zum einen ist es übersichtlicher, zum anderen weniger fehleranfällig,
bzw. Fehler können leichter eingegrenzt werden.
Der Übersichtlichkeit halber habe ich eine auf meinem Webserver
vorhandene Tabelle benutzt.
Eine Index-Seite(index.php). Hier wird mittels DropDown-Box ein PC ausgewählt.
Das Formular wird an die Seite edit.php gesendet.
Die Seite edit.php sucht anhand echo "<option value=$srv[id]>...
den richtigen Datensatz über die id in der Tabelle.
Klickt man nun auf Aendern, so wird die Seite update.php
aufgerufen.
In der Seite edit.php gibt's ein verstecktes Feld id.
In der Seite Update werden nun die Felder des Datensatzes id
durch die Felder im Formular der Seite edit.php ersetzt.
Der Befehl header("location:result.php?id=$id"); ruft nun die
Seite result.php mit den geänderten Werten auf.
Am Schluß der Seite result.php werden zwei Links angezeigt.
Der erste Link geht zurück nach edit.php, mit der Variablen Server,
Inhalt der Variablen: die id des geänderten Datensatzes.
Klickt man den Link an, wird der Datensatz erneut zum Ändern angezeigt.
Der zweite Link ruft einfach die Startseite wieder auf.
Gruß
Günni
PS.: Das Abrufen von gesendeten Variablen über $_POST['Vari'] oder
"select ...... where Spalte='".$_POST['dd']."'"; kannst du dir sparen.
Ein Textfeld <input type="text" name="eingabe"..... > in einem Formular,
kannst du ganz normal mit Variable=$eingabe zuordnen bzw. mit
"select...... where Spalte=$eingabe"; verwerten.
In einem Select gilt dann:
Zeichenketten mit Hochkomma: "select...... where Spalte='$eingabe'";
Zahlen ohne Hochkomma: "select...... where Spalte=$eingabe";
Hi,
ich würde das Script auf mehrere Seiten verteilen.
Zum einen ist es übersichtlicher, zum anderen weniger fehleranfällig,
bzw. Fehler können leichter eingegrenzt werden.
Der Übersichtlichkeit halber habe ich eine auf meinem Webserver
vorhandene Tabelle benutzt.
Eine Index-Seite(index.php). Hier wird mittels DropDown-Box ein PC ausgewählt.
Das Formular wird an die Seite edit.php gesendet.
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
$conn=mysql_connect("localhost","guenni","guenni") or die(mysql_error());
$db=mysql_select_db("test") or die("Konnte die Datenbank nicht waehlen.");
$sql="SELECT id,computer FROM computer";
$result=mysql_query($sql,$conn) or die("Anfrage nicht erfolgreich");
?>
Serverauswahl:
<form action = "edit.php" method = "post">
<select name="server">
<?
while ($srv = mysql_fetch_array($result,MYSQL_ASSOC)){
echo "<option value=$srv[id]>$srv[computer]</option>";
}
?>
</select><p>
<input type = "submit" name="cmd" value="Abfragen">
<input type = "reset" value="Zurücksetzen">
</form>
</html>
Die Seite edit.php sucht anhand echo "<option value=$srv[id]>...
den richtigen Datensatz über die id in der Tabelle.
<?
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
$conn=mysql_connect("localhost","guenni","guenni") or die(mysql_error());
$db=mysql_select_db("test") or die("Konnte die Datenbank nicht waehlen.");
$sql="SELECT * FROM computer WHERE id = $server";
$result = mysql_query($sql,$conn);
echo "<form action = 'update.php' method = 'post'>";
$row=mysql_fetch_array($result,MYSQL_BOTH);
echo "<input type=hidden name=id value=$row[id]><p>";
echo "<input type=text name=computer value=$row[computer]><p>";
echo "<input type=text name=prozessor value=$row[prozessor]><p>";
echo "<input type=text name=mainboard value=$row[mainboard]><p>";
echo "<input type=text name=festplatte value=$row[festplatte]><p>";
echo "<input type=text name=speicher value=$row[speicher]><p>";
echo "<input type='submit' name='cmd' value='Aendern'>";
echo "<input type='reset'>";
echo "</form>";
?>
Klickt man nun auf Aendern, so wird die Seite update.php
aufgerufen.
<?
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
$conn = mysql_connect("localhost","guenni","guenni") or die(mysql_error());
$db=mysql_select_db("test") or die(mysql_error());
$sql="UPDATE computer set ";
$sql.="computer='$computer',";
$sql.="prozessor='$prozessor',";
$sql.="mainboard='$mainboard',";
$sql.="festplatte='$festplatte',";
$sql.="speicher=$speicher";
$sql.=" where id=$id";
mysql_query($sql, $conn) or die (mysql_error());
header("location:result.php?id=$id");
?>
In der Seite edit.php gibt's ein verstecktes Feld id.
In der Seite Update werden nun die Felder des Datensatzes id
durch die Felder im Formular der Seite edit.php ersetzt.
Der Befehl header("location:result.php?id=$id"); ruft nun die
Seite result.php mit den geänderten Werten auf.
<?
//alle Fehler im Browser anzeigen
ini_set("diplay_errors",1);
error_reporting(E_ALL);
$conn=mysql_connect("localhost","guenni","guenni") or die(mysql_error());
$db=mysql_select_db("test") or die("Konnte die Datenbank nicht waehlen.");
$sql="SELECT * FROM computer WHERE id = $id";
$result = mysql_query($sql,$conn);
$row=mysql_fetch_array($result,MYSQL_ASSOC);
echo "<table border=1>";
echo "<tr>";
while($field=key($row)){
echo "<th>";
echo $field;
next($row);
}
echo "</tr>";
$result = mysql_query($sql,$conn);
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
echo "<tr><td>";
echo implode("<td>",$row);
}
echo "</table>";
echo "<a href=edit.php?server=$id title='Aendern'>Aendern?</a> ";
echo "<a href=index.php title='Zurueck zur Startseite'>Beibehalten</a>";
?>
Am Schluß der Seite result.php werden zwei Links angezeigt.
Der erste Link geht zurück nach edit.php, mit der Variablen Server,
Inhalt der Variablen: die id des geänderten Datensatzes.
Klickt man den Link an, wird der Datensatz erneut zum Ändern angezeigt.
Der zweite Link ruft einfach die Startseite wieder auf.
Gruß
Günni
PS.: Das Abrufen von gesendeten Variablen über $_POST['Vari'] oder
"select ...... where Spalte='".$_POST['dd']."'"; kannst du dir sparen.
Ein Textfeld <input type="text" name="eingabe"..... > in einem Formular,
kannst du ganz normal mit Variable=$eingabe zuordnen bzw. mit
"select...... where Spalte=$eingabe"; verwerten.
In einem Select gilt dann:
Zeichenketten mit Hochkomma: "select...... where Spalte='$eingabe'";
Zahlen ohne Hochkomma: "select...... where Spalte=$eingabe";
Hi Fillip,
es geht doch! Er speichert alles richtig ab!
Wenn ich den Datensatz jetzt ändere, ist er zwar richtig in der DB gespeichert aber im Dropdownmenü ist dann immernoch die alte Serverbezeichnung!
Das kann ich doch bestimmt beheben irgendwie, wenn ich nach der Aktualisierung (DB-Speicherung) das Dropdownmenü aktualiesieren lasse oder?
Cya
Chribu
es geht doch! Er speichert alles richtig ab!
Wenn ich den Datensatz jetzt ändere, ist er zwar richtig in der DB gespeichert aber im Dropdownmenü ist dann immernoch die alte Serverbezeichnung!
Das kann ich doch bestimmt beheben irgendwie, wenn ich nach der Aktualisierung (DB-Speicherung) das Dropdownmenü aktualiesieren lasse oder?
Cya
Chribu
Hallo,
naja... die Lösung ist eigentlich eher einfach... da könnte man mit etwas Nachdenken schon drauf kommen...
Für die Dropdownlist liest er die Servernamen aus der DB aus und gibt sie aus. Wenn ich das vor der Aktualisierung mache steht natürlich noch der alte Name drin. Wenn ich es danach mache... Insofern könnte es hilfreich sein, die Dropdownlist einfach hinter den Update-Block zu verschieben.
Dann würde sich übrigens noch anbieten die while-Schleife etwas abzuändern, etwa:
Damit hier immer der Server ausgewählt ist, dessen Details angezeigt werden sollen.
Filipp
naja... die Lösung ist eigentlich eher einfach... da könnte man mit etwas Nachdenken schon drauf kommen...
Für die Dropdownlist liest er die Servernamen aus der DB aus und gibt sie aus. Wenn ich das vor der Aktualisierung mache steht natürlich noch der alte Name drin. Wenn ich es danach mache... Insofern könnte es hilfreich sein, die Dropdownlist einfach hinter den Update-Block zu verschieben.
Dann würde sich übrigens noch anbieten die while-Schleife etwas abzuändern, etwa:
while ($srv = mysql_fetch_array($server))
{
echo "<option value='".$srv['Servername']."'";
if($srv['Servername'] == $anzuzeigenderServer)
echo " selected";
echo ">".$srv['Servername']."</option>";
}
Filipp