Hallo!
Zunächst: Ich bin totaler Anfänger in PHP, von daher kann es sein, dass einiges im folgenden Code vllt. nich ganz so gut gelöst ist .
Ich programmiere gerade eine Nutzerverwaltung basierend auf MySQL. Ich hänge zur Zeit an den Formularen für das Bearbeiten eines Datensatzes. Man soll per Radio-Button einen Datensatz aus einer Tabelle auswählen können, nach Klick auf den "Datensatz auswählen"-Button sollen auf der nachfolgenden Seite sollen die Daten des Datensatzes in Textfeldern angezeigt werden, sodass sie bearbeitet werden können. Wenn kein Datensatz gewählt wird und auf den "Datensatz auswählen"-Button klickt, erscheint eine Fehlermeldung, dass kein Datensatz ausgewählt wurde.
Ich benutze XAMPP 1.6.7 und Firefox 2 als Browser unter Windows XP. In dieser Verbindung funktioniert das auch alles sehr gut, genau wie ich es mir wünsche. Gestern habe ich dann mal versucht, das ganze unter Opera und dem Internet Explorer ans Laufen zu kriegen - Hier machen die Radio-Buttons Probleme. Egal ob ein Datensatz ausgewählt wurde oder nicht, stehts wird gemeldet es sei keiner ausgewählt.
Dasselbe probierte ich auch unter Suse Linux aus. Hier kann ich sogar gar nicht schreibend auf die Datensatz zugreifen (das Hinzufügen eines Datensatzes mithilfe eines anderen Formulars funktioniert in Windows allerdings in allen 3 Browsern.), hier vermute ich aber eher Probleme mit MySQL, deshalb sei dieses Problem erstmal beiseite geschoben
Jedenfalls funktioniert das Auswählen eines Datensatzes selbst unter Firefox in Linux nicht.
Hier ist der Code des Formulars, in dem per Radio-Button der Datensatz ausgewählt wird:
PHP-Code:
<html>
<head>
<title>
Accounts bearbeiten
</title>
</head>
<body>
<body bgcolor= "#D3D3D3">
<font face="Arial">
<?php
require 'conn.php';
$abfrage='SELECT * FROM accountverwaltung';
$ergebnis=mysql_query($abfrage);
$anzahlds = mysql_num_rows($ergebnis);
echo "$anzahlds Datensätze gefunden<br><br>";
?>
<form method = "post" action = "frmAccountsbearbeiten2.php">
<table width="1000" cellpadding="0" cellspacing="0" border="1">
<tr>
<th>Auswahl</th>
<th>Mitarbeiter-ID</th>
<th>Name</th>
<th>Vorname</th>
<th>Username</th>
<th>Passwort</th>
<th>Beschäftigung</th>
</tr>
<a href ="frmAccountverwaltung.php">Zurück zur Accountverwaltung<br><br></a>
<input type="submit" name="waehlen" value="Datensatz auswählen">
</form>
<?php
while($attrib=mysql_fetch_object($ergebnis)){
echo '<tr>'."\n";
echo '<td><input type="radio" name="auswahl" value = "'.$attrib->Mitarbeiter_ID.'"></td>'."\n";
echo '<td align="center">'.$attrib->Mitarbeiter_ID.'</td>'."\n";
echo '<td align="center">'.$attrib->Name.'</td>'."\n";
echo '<td align="center">'.$attrib->Vorname.'</td>'."\n";
echo '<td align="center">'.$attrib->Username.'</td>'."\n";
echo '<td align="center">'.$attrib->Passwort.'</td>'."\n";
echo '<td align="center">'.$attrib->Beschaeftigung.'</td>'."\n";
}
?>
</table>
</body>
</font>
</html>
Hier nun das Formular, in dem die Daten des gewählten Datensatzes bearbeitet werden können:
PHP-Code:
<html>
<head>
<title>
Accounts bearbeiten
</title>
</head>
<body>
<body bgcolor= "#D3D3D3">
<font face="Arial">
<?php
if (isset($_POST["speichern"]))
{
if ($_POST["Name"] == NULL)
{
die("Es wurde kein Name eingegeben. Bitte geben Sie einen Namen an.");
}
if ($_POST["Vorname"] == NULL)
{
die("Es wurde kein Vorname eingegeben. Bitte geben Sie einen Vornamen an.");
}
if ($_POST["Username"] == NULL)
{
die("Es wurde kein Username eingegeben. Bitte geben Sie einen Usernamen ein, mit dem sich der Benutzer einloggen kann.");
}
if ($_POST["Passwort"] == NULL)
{
die("Es wurde kein Passwort eingegeben. Bitte geben Sie ein Passwort an.");
}
if ($_POST["Beschaeftigung"] == NULL)
{
die("Es wurde keine Beschäftigung ausgewählt. Bitte wählen Sie die Beschäftigung des Mitarbeiters aus.");
}
$Mitarbeiter_ID = $_POST["Mitarbeiter_ID"];
$Name = $_POST["Name"];
$Vorname = $_POST["Vorname"];
$Username = $_POST["Username"];
$Passwort = md5($_POST["Passwort"]);
$Beschaeftigung = $_POST["Beschaeftigung"];
$sql = "UPDATE Accountverwaltung SET Name='$Name', Vorname='$Vorname', Username='$Username', Passwort='$Passwort', Beschaeftigung='$Beschaeftigung' WHERE Mitarbeiter_ID='$Mitarbeiter_ID'";
require 'conn.php';
mysql_query($sql, $conn);
mysql_close();
echo "Die Daten wurden aktualisiert";
?>
<a href ="frmAccountverwaltung.php"><br>Zurück zur Accountverwaltung<br><br></a>
<?php
}
else
{
//GIBT IM FIREFOX UNTER WINDOWS 1 AUS! TROTZDEM IEXPLORER-FEHLER !
//echo isset($_POST['auswahl']);
$tempid= $_POST['auswahl'];
if ($_POST["auswahl"] != NULL)
{
require 'conn.php';
$abfrage = "select * from Accountverwaltung where Mitarbeiter_ID='$tempid'";
$result = mysql_query($abfrage)
or die(mysql_error().'<hr />'. $abfrage .'<hr />');
$altName = mysql_result($result,0,"Name");
$altVorname = mysql_result($result,0, "Vorname");
$altUsername = mysql_result($result,0,"Username");
$altPasswort = mysql_result($result,0, "Passwort");
$altBeschaeftigung = mysql_result($result,0, "Beschaeftigung");
mysql_close();
}
else
die("Es wurde kein Datensatz ausgewählt.");
?>
<form method="post" action="frmAccountsbearbeiten2.php">
<input type="hidden" name="Mitarbeiter_ID" value="<? echo $tempid; ?>"><br>
<table border="0" align="left">
<a href ="frmAccountverwaltung.php">Zurück zur Accountverwaltung<br><br></a>
<tr>
<td>Name</td>
<td><input type="text" name="Name" size="30" value="<? echo $altName; ?>"></td>
</tr>
<tr>
<td>Vorname</td>
<td><input type="text" name="Vorname" size="30" value="<? echo $altVorname; ?>"></td>
</tr>
<tr>
<td>Username</td>
<td><input type="text" name="Username" size="30" value="<? echo $altUsername; ?>"></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="text" name="Passwort" size="30" value="<? echo $altPasswort; ?>"></td>
</tr>
<tr>
<td>Beschäftigung</td>
<td><label><input type="radio" name="Beschaeftigung" value="Administrator" <? if ($altBeschaeftigung=='Administrator') echo checked; ?>/>Administrator</label><br><label><input type="radio" name="Beschaeftigung" value="Empfangskraft" <? if ($altBeschaeftigung=='Empfangskraft') echo checked; ?>/>Empfangskraft</label><br><label><input type="radio" name="Beschaeftigung" value="ExecutiveHousekeeper" <? if ($altBeschaeftigung=='ExecutiveHousekeeper') echo checked; ?>/>Executive Housekeeper</label></td>
</tr>
<tr>
<td><input type="submit" name="speichern" value="Daten speichern"></td>
</tr>
</form>
</table>
<?php } ?>
</body>
</html>
Ich habe bereits mit error_reporting(E_ALL); und print_r($_POST); versucht den Fehler zu finden.
Wenn ich unter Firefox unter Windows keinen Datensatz auswähle und auf den Button klicke, erscheint so richtigerweise die Meldung:
Array ( [waehlen] => Datensatz auswählen )
Notice: Undefined index: auswahl in ...\frmAccountsbearbeiten2.php on line 78
Notice: Undefined index: auswahl in ...\frmAccountsbearbeiten2.php on line 80
Es wurde kein Datensatz ausgewählt.
Zeile 78 und 80 sind diese Zeilen aus dem zweiten Formular.
PHP-Code:
<?php
$tempid= $_POST['auswahl'];
if ($_POST["auswahl"] != NULL)
?>
Wenn ich allerdings z.b. Datensatz 2 wähle, so erscheint die Meldung
Array ( [waehlen] => Datensatz auswählen [auswahl] => 2 )
Unter dem Internet Explorer erhalte ich dagegen die oben genannte Meldung es sei kein Datensatz ausgewählt auch wenn dem definitiv so ist.
Unter Firefox mit Linux erscheint - wenn kein Datensatz ausgewählt wurde - die Meldung
Array ([waehlen] => Datensatz auswählen) Es wurde kein Datensatz ausgewählt
Wenn hier Datensatz 2 gewählt wird, erscheint:
Array([waehlen] => Datensatz auswählen[auswahl] => 2) Es wurde kein Datensatz ausgewählt.
Die Auswahl wird in diesem Fall also sogar definitiv übernommen und trotzdem tut sich nix. Hat jemand vllt. eine Idee woran das liegen könnte ? Ich würde mich über Antworten freuen,
mfg
vollderdude