php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Probleme mit verschachtelten IF-Anweisungen


 
Alex.Th
05-02-2007, 12:52 
 
Hallo Leute, habe da ein kleines Problem und steh da wie ein Ochs vorm Berg.
Ich möchte ein Formular erstellen, in dem Ich Nutzer u.ä neu anlegen, editieren oder löschen kann.
Der Code für die Auswahl der Aktion funktioniert, die Var werden auch übergeben und er zeigt mir das erste Bearbeitungsfenster "Nutzer neu anlegen" auch an, aber dann hat sich das auch schon mit der kooperation.
Wäre sehr nett, wenn sich jemand mal den Code ansehen könnte, arbeite noch nicht solange mit php und finde den fehler einfach nicht.
Hier der Code:


<html>
<body>
<center><h2>
Daten ändern/löschen --- Daten neu anlegen </h2>
<br>
<form action = "datenbearb.php" method="POST">
<u>Datengruppe aussuchen:</u><br><p>
<table border="0"><tr><font size="3">
<td><input type="radio" name="dsgr" value="Nutzer" checked>Nutzer</td>
<td><input type="radio" name="dsgr" value="APC" checked>APC</td>
<td><input type="radio" name="dsgr" value="Monitor" checked>Monitor</td>
<td><input type="radio" name="dsgr" value="Drucker" checked>Drucker</td>
<td><input type="radio" name="dsgr" value="Notebook" checked>Notebook</td>
</font></tr></table><br>
<u>Aktion wählen:</u><br><p>
<table border="0"><tr><font size="3">
<td><input type="radio" name="action" value="neu anlegen" checked>neu anlegen</td>
<td><input type="radio" name="action" value="bearbeiten" checked>bearbeiten</td>
<td><input type="radio" name="action" value="löschen" checked>löschen</td>
</font></tr></table><br>
<input type="submit">
<input type="reset">
</form></center><br><br><hr/>
<center>


<?php
echo "Sie möchten also ein(en) " . $_POST["dsgr"] . " " . $_POST["action"] . "<br><br>";
if ($_POST["dsgr"] == "Nutzer" && $_POST["action"] == "neu anlegen")
{
echo "<form action='datenbearb.php' method='POST'";
echo "<br><font color='red'>";
echo "Der Datensatz muß vollständig ausgefüllt werden!!!<br><br></font>";
echo "<table border=0>";
echo "<tr><td><b>Name:</b></td><td><input name='nm'><br></td>
<td><b>Vorname:</b></td><td><input name='vn'><br></td></tr>";
echo "<tr><td><b>PKZ-Nr.:</b></td><td><input name='id'><br></td>
<td><b>Telefon:</b></td><td><input name='tel'><br></td></tr>";
echo "<tr><td><b>Sachbereich:</b></td><td><input name='sb'><br></td>
<td><b>Funktion:</b></td><td><input name='fb'><br></td></tr>";
echo "<tr><td><b>Gebäude:</b></td><td><input name='geb'><br></td>
<td><b>Zimmer:</b></td><td><input name='zi'><br></td></tr>";
echo "<tr><td><b>Dienststelle:</b></td><td><input name='ds' value='BPOLABT BZA'><br></td>
<td><b>Ort:</b></td><td><input name='ort' value='Bad Bergzabern'><br></td></tr>";
echo "</table><br>";
echo "<input name='gesendet' value='Datensatz senden' type='submit'> <input type='reset'> </form>";
if (isset($_POST["gesendet"]))
{
$prf = $_POST["nm"];
if ($prf!="")
{
mysql_connect();
mysql_select_db("it-verwaltung");
$sql = "INSERT INTO personaldaten";
$sql .= "(ID, Name, Vorname, Dienststelle,
Sachbereich, Funktionsbereich, Ort, Gebaeude, Zimmer, Telefon) VALUES ";
$sql .= "('" . $_POST["nm"] . "', '";
$sql .= $_POST["id"] . "', '";
$sql .= $_POST["vn"] . "', '";
$sql .= $_POST["ds"] . "', '";
$sql .= $_POST["sb"] . "', '";
$sql .= $_POST["fb"] . "', '";
$sql .= $_POST["ort"] . "', '";
$sql .= $_POST["geb"] . "', '";
$sql .= $_POST["zi"] . "', '";
$sql .= $_POST["tel"] . "') ";
mysql_query($sql);
$num = mysql_affected_rows();
if ($num>0)
echo "Es wurde 1 Datensatz hinzugefügt<p>";
else
echo "Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt<p>";
}
else
echo "Geben SIe einen kompletten Datensatz ein!!";
}
}
else
echo "alle anderen Script-Bausteine sind noch nicht geschrieben";
echo mysql_errno() . ": " . mysql_error(). "\n";






?>
</body>
</html>

 
wahsaga
05-02-2007, 13:07 
 
Original geschrieben von Alex.Th
aber dann hat sich das auch schon mit der kooperation.
Ja, genauso wie mit deiner.

Erst mal bitte Regeln (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454) lesen, Code ohne Überbreite posten (Beitrag editieren).

Und dann vielleicht mal eine nachvollziehbare Problembeschreibung liefern - obiges ist nämlich keine.

 
Jache84
05-02-2007, 17:44 
 
Original geschrieben von Alex.Th


if ($num>0)
echo "Es wurde 1 Datensatz hinzugefügt<p>";
else
echo "Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt<p>";
}


Erst mal ein Willkommen hier im Forum :)

zu deinem problem. Tu mir mal den gefallen und rück deinen code ordentlicher ein. dann du machst da zweimal ein p-Tag auf, wieso? Nur so nebenbei. dann hast du bei dem einem if keine Klammer oder hab ich was übersehen. und dann beschreib doch bitte mal genauer was NICHT funktioniert.

Liebe Grüße
jochen

 
Enerkin
05-02-2007, 17:53 
 
hier noch n schickes Tutorial zum Thema einrücken
http://tut.php-q.net/einruecken.html

 
splasch
06-02-2007, 11:52 
 
Hehe wir haben alle mal Angefangen.

Hier mal ein parr Tips du dir selbst einen gefallen und schreib den Hmtl code nicht mit der echo anweisung das wird zu unbersichtlich

echo "<form action='datenbearb.php' method='POST'";
echo "<br><font color='red'>";
echo "Der Datensatz muß vollständig ausgefüllt werden!!!<br><br></font>";
echo "<table border=0>";
echo "<tr><td><b>Name:</b></td><td><input name='nm'><br></td>
<td><b>Vorname:</b></td><td><input name='vn'><br></td></tr>";
echo "<tr><td><b>PKZ-Nr.:</b></td><td><input name='id'><br></td>
<td><b>Telefon:</b></td><td><input name='tel'><br></td></tr>";
echo "<tr><td><b>Sachbereich:</b></td><td><input name='sb'><br></td>
<td><b>Funktion:</b></td><td><input name='fb'><br></td></tr>";
echo "<tr><td><b>Gebäude:</b></td><td><input name='geb'><br></td>
<td><b>Zimmer:</b></td><td><input name='zi'><br></td></tr>";
echo "<tr><td><b>Dienststelle:</b></td><td><input name='ds' value='BPOLABT BZA'><br></td>
<td><b>Ort:</b></td><td><input name='ort' value='Bad Bergzabern'><br></td></tr>";
echo "</table><br>";
echo "<input name='gesendet' value='Datensatz senden' type='submit'> <input type='reset'> </form>";




?>
<form action='datenbearb.php' method='POST'
<font color='red'>
Der Datensatz muß vollständig ausgefüllt werden!!! <br><br>
</font>



Der nächste Hammer ist deine Sql zusammen setzung zu unübersichtlich

$sql = "INSERT INTO personaldaten";
$sql .= "(ID, Name, Vorname, Dienststelle, Sachbereich, Funktionsbereich, Ort, Gebaeude, Zimmer, Telefon) VALUES ";
$sql .= "('" . $_POST["nm"] . "', '";
$sql .= $_POST["id"] . "', '";
$sql .= $_POST["vn"] . "', '";
$sql .= $_POST["ds"] . "', '";
$sql .= $_POST["sb"] . "', '";
$sql .= $_POST["fb"] . "', '";
$sql .= $_POST["ort"] . "', '";
$sql .= $_POST["geb"] . "', '";
$sql .= $_POST["zi"] . "', '";
$sql .= $_POST["tel"] . "') ";



$sql = "INSERT INTO personaldaten
(ID, Name, Vorname, Dienststelle,Sachbereich, Funktionsbereich, Ort, Gebaeude, Zimmer, Telefon)
VALUES
( $_POST["nm"] , $_POST["id"] ,$_POST["vn"] ,$_POST["ds"] ,$_POST["sb"] ,$_POST["fb"] ,$_POST["ort"],
$_POST["geb"] ,$_POST["zi"], $_POST["tel"] ) ";


So wird ein wenig übersichtlich und man sieht gleich das du hier die Spalten schon falsch zu geordnet hast was ID zu post nm.

Dann noch was schreib nie eine $_post direkt in die Db

 
TobiaZ
06-02-2007, 11:56 
 
<font color='red'> WTF... Lang nicht gesehen :D

 
Alex.Th
07-02-2007, 13:18 
 
Hallo, erstmal danke für die Antworten. Die Überbreite des Scripts tut mir leid, auf meinem Monitor (17") hat er keine Überbreite, Ich hab jetzt hoffentlich in der richtigen Zeile den Umbruch gemacht.
Zu dem Problem:
Das ganze soll eine zentrale Material- und Nutzerverwaltung werden, und soll nach meinem Chef kein Geldkosten und schnell fertig sein.
Also, über die Radiobuttons soll eine Auswahl getroffen werden, z. B. Nutzer neu anlegen - funktioniert, er gibt die Werte auch weiter.
Darunter wird nochmal aufgeführt welche Aktion gewählt wurde - funktioniert.
In der ersten If-Anweisung soll er die Werte prüfen und mir das entsprechende Eingabe-Formular aufrufen - auch das klappt.
Beim Absenden des Formulars tritt dann der Fehler auf, er wirft mir statt dem Ergebnis Nutzer neu angelegt oder kein neuer Datensatz angelegt, die letze else-Anweisung "alle anderen Script-bausteine..." aus.


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:32 Uhr.