Daten werden nicht in die Datenbank geschrieben

nchristoph

Erfahrenes Mitglied
Hallo.

Ich hab mit meinem ACP ein kleines Problem.

Und zwar werden die Daten aus dem Formular zum Mitarbeiter hinzufügen nicht in die Datenbank geschrieben obwohl der Query alle Daten enthält.

PHP:
case 'add':
        if(isset($_POST['submit']) AND "Speichern" == $_POST['submit'])
		{
			$error = 0; // Wächterstruktur
			if(isset($_POST['geb']['jahr']))
			{
				// wenn die Daten von dem Formular kommen, prüfen
				if(!checkdate($_POST['geb']['monat'],
							  $_POST['geb']['tag'],
							  $_POST['geb']['jahr']))
				{
					?>
                    <p>
					Bitte geben sie ein g&uuml;ltiges Geburtsdatum an
					</p>
                    <?php
					$error++;
				}

			}
			if(!$error)
			{
				// Session Variablen checken und initialisieren
				if(!isset($_SESSION['Name']))
					$_SESSION['Name'] = trim($_POST['Name']);
				if(!isset($_SESSION['Email']))
					$_SESSION['Email'] = trim($_POST['Email']);
				if(!isset($_SESSION['KW']))
					$_SESSION['KW'] = trim($_POST['KW']);
				if(!isset($_SESSION['Tel']))
					$_SESSION['Tel'] = trim($_POST['Tel']);
				if(!isset($_SESSION['Bild']))
					$_SESSION['Bild'] = trim($_POST['Bild']);
				if(!isset($_SESSION['Abteilung']))
					$_SESSION['Abteilung'] = trim($_POST['Abteilung']);
				if(!isset($_SESSION['geb']))
					$_SESSION['geb'] = sprintf('%04d-%02d-%02d',
											   $_POST['geb']['jahr'],
											   $_POST['geb']['monat'],
											   $_POST['geb']['tag']);
				?>
				<!-- Übersicht anzeigen -->
				<form action="index.php?p=admin&amp;site=mitarbeiter&amp;action=add" method="post" class="formular">
				<p>
				Neuen Mitarbeiter hinzuf&uuml;gen;
				</p>
				<ol>
				<li>
				Name:<?php echo(htmlspecialchars($_SESSION['Name']));?>
				</li>
				<li>
				Email:<?php	echo(htmlspecialchars($_SESSION['Email']));?>
				</li>
				<li>
				Geburtstag:<?php echo($_SESSION['geb']);?>
				</li>
				<li>
				Kurzwahl: <? echo(htmlspecialchars($_SESSION['KW']));?>
				</li>
                <li>
				TelefonNr.:<?php	echo(htmlspecialchars($_SESSION['Tel']));?>
				</li>
				<li>
				Bild.: <?php echo(htmlspecialchars($_SESSION['Bild']));?>
				</li>
				<li>
				Abteilung.:<?php	echo(htmlspecialchars($_SESSION['Abteilung']));?>
				</li>
				</ol>
				</form>
                <?php
				back2admin();
	
			}
		}
		elseif(isset($_POST['submit']) AND "Speichern" == $_POST['sumbit'])
		{
			$sql = "INSERT INTO
						mitarbeiter
					SET
						name = '".addslashes($_SESSION['Name'])."',
						email = '".addslashes($_SESSION['Email'])."',
						kurzwahl = '".addslashes($_SESSION['KW'])."',
						telefonnr = '".addslashes($_SESSION['Tel'])."',
						abteilung = '".addslashes($_SESSION['Abteilung'])."',
						geburtstag = '".addslashes($_SESSION['geb'])."',
						bild = '".addslashes($_SESSION['Bild'])."'";
							
			$result = new Query($sql);
			if($result->error())
			{
				die("<pre>".$result->getError()."</pre>\n");
			}
			unset($result);
			$id = mysql_insert_id();
			echo("<p>\n");
			echo("    Der Mitarbeiter wurde hinzugef&uuml;gt.");
			echo("</p>\n");
			back2admin();
		}
        else
        {?>
            <form action="index.php?p=admin&amp;site=mitarbeiter&amp;action=add" method="post"  class="formular">
            <p>
            Neuen Mitarbeiter hinzuf&uuml;gen
            </p>
            <ol>
            <li>
            <label for="Name">Name</label><input type="text" name="Name" id="Name"/>
            </li>
            <li>
            <label for="email">Email</label><input type="text" name="email" id="Email"/>
            </li>
            <li>
            <label for="KW">Kurzwahl</label><input type="text" name="KW" id="KW"/>
            </li>
			<li>
			Geburtstag
            <?php
			// Formularfeld für den Tag
			echo("                <select name=\"geb[tag]\">\n");
			for($i=1; $i<=31; $i++)
			{
				echo("<option value=\"".$i."\">\n");
				echo($i.".\n");
				echo("</option>\n");
			}
			echo("                </select>\n");
		
			// Formularfeld für den Monat
			echo("                <select name=\"geb[monat]\">\n");
			for($i=1; $i<=12; $i++)
			{
				echo("<option value=\"".$i."\">\n");
				echo($monate[$i].".\n");
				echo("</option>\n");
			}
			echo("                </select>\n");
		
			// Formularfeld für das Jahr
			echo("                <input type=\"text\" name=\"geb[jahr]\" />\n");
			?>
			</li>
			<li>
            <label for="Tel">Telefonnr</label><input type="text" name="Tel" id="Tel"/>
            </li>
            <li>
            <label for="Bild">Bild</label><input type="text" name="Bild" id="Bild"/>
            </li>
			<li>
            <label for="Abteilung">Abteilung</label><input type="text" name="Abteilung" id="Abteilung"/>
            </li>
            <li>
            <input type="submit" name="submit" value="Speichern" /><input type="reset" name="submit" value="Zurücksetzen" />
            <?php
            echo("<input type=\"hidden\" name=\"".session_name()."\"");
            echo("                          value=\"".session_id()."\" />");?>
            </li>
            </ol>
            </form>
            <?php

        }
        break;

Das ist das erste mal das ich OOP richtig anzuwenden versuche.

Hab ich bei den Formularen irgendwo einen Fehler gemacht?

Ich sitze da schon ne ganze weile bei und hab bis auf diesen Fehler eigentlich schon alle ausgebügelt, an dem beise ich mir die Zähne aus.

mfg
 
Was mir als erstes Auffällt du hast in den ersten Zwei Zeilen das stehen:
PHP:
case 'add':
        if(isset($_POST['submit']) AND "Speichern" == $_POST['submit'])

Willst du hier überprüfen, ob $_POST['submit'] = Speichern ist?
Wenn ja probiere es mal so:

PHP:
case 'add':
        if(isset($_POST['submit']) AND $_POST['submit']=="Speichern")

Außerdem schau die mal das an.
 
Zuletzt bearbeitet:
Moin Christoph,


hier mal die beiden Problemzeilen:

PHP:
if(isset($_POST['submit']) AND "Speichern" == $_POST['submit'])

//.....

elseif(isset($_POST['submit']) AND "Speichern" == $_POST['sumbit'])

Den Tippfehler (sumbit) erkennst du jetzt sicher selbst, aber soweit kommt dein Skript garnicht, weil die 2. Zeile selbst nach Korrektur nie zutrifft, weil sie identisch mit der 1. Zeile ist.
 
Ok ich geb mir jetzt die Kugel. Danke Sven das wars.

Allerdings hab ich denselben Fehler jetzt bei der Edit funktion:

PHP:
case "edit":
        if(isset($_POST['submit']) AND "Aendern" == $_POST['submit'])
        {?>
            <form action="index.php?p=admin&amp;site=mitarbeiter&amp;action=edit" method="post" class="formular">
            <p>
            Mitarbeiterdaten bearbeiten.
            </p>
            <ol>
            <?php
            $felder = array('Name', 'Email', 'KW', 'Bild', 'Tel', 'Abteilung');
            foreach($felder as $value)
            {
                echo("        <li>\n");
                echo("<label for=\"".strtolower($value)."\">".$value."</label>\n");
                echo("                <input type=\"text\" id=\"".strtolower($value)."\"");
                echo(" name=\"".strtolower($value)."\"");
                echo(" value=\"".htmlspecialchars($_SESSION[$value])."\" />\n");
                echo("        </li>\n");
            }
			?>
            <li>;
            Geburtstag
            <?php
            /*$tmpdate = explode('-', $_SESSION['geb'];
            $Tag = (int)$tmpdate[2];
            $Monat = (int)$tmpdate[1];
            $Jahr = (int)$tmpdate[0];*/
			            // Formularfeld für den Tag
            echo("                <select name=\"geb[tag]\">\n");
            for($i=1; $i<=31; $i++)
            {
                echo("<option value=\"".$i."\"");
                if($i == $Tag)
                    echo(" selected=\"selected\"");
                echo(">".$i.".\n");
                echo("</option>\n");
            }
            echo("                </select>\n");

            // Formularfeld für den Monat
            echo("                <select name=\"geb[monat]\">\n");
            for($i=1; $i<=12; $i++)
            {
                echo("<option value=\"".$i."\"");
                if($i == $Monat)
                    echo(" selected=\"selected\"");
                echo(">".$monate[$i].".\n");
                echo("</option>\n");
            }
            echo("                </select>\n");

            // Formularfeld für das Jahr
            echo("            <input type=\"text\" name=\"geb[jahr]\"");
            echo("                   value=\"".$Jahr."\" />\n");
            echo("        </li>\n");            
            echo("        <li>\n");
            echo("            <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n");
            echo("            <input type=\"reset\" name=\"submit\" value=\"Zur&uuml;cksetzen\" />\n");
            echo("            <input type=\"hidden\" name=\"".session_name()."\"");
            echo("                   value=\"".session_id()."\" />\n");
            echo("        </li>\n");
            echo("    </ol>\n");
            echo("</form>\n");
            back2admin();
        }
       
        elseif(isset($_POST['submit']) AND "Speichern" == $_POST['submit'])
        {
            $sql = "UPDATE
                        mitarbeiter
                    SET
                        name = '".addslashes($_SESSION['Name'])."',
                        email = '".addslashes($_SESSION['Email'])."',
                        kurzwahl = '".addslashes($_SESSION['KW'])."',
                        telefonnr = '".addslashes($_SESSION['Tel'])."',
                        abteilung = '".addslashes($_SESSION['Abteilung'])."',
                        geburtstag = '".addslashes($_SESSION['geb'])."',
                        bild = '".addslashes($_SESSION['Bild'])."'
                    WHERE
                        id = '".$_SESSION['MemberID']."';";
            $memupd = new Query($sql);
            if($memupd->error())
            {
                die("<pre>".$memupd->getError()."</pre>\n");
            }
            unset($memupd);
			?>
            <p>
            Member wurde bearbeitet
            </p>
            <?php
        }
        else
        {
            if(isset($_POST['submit']) AND "Aendern" == $_POST['submit'])
            {
                if($_POST['MemberID'])
                {
                    // MemberID in der Session speichern
                    $_SESSION['MemberID'] = $_POST['MemberID'];
                    // Memberdaten holen
                    $sql = "SELECT
                                name,
								email,
								kurzwahl,
								telefonnr,
								abteilung,
								geburtstag, 
								bild 
                            FROM
                                mitarbeiter
                            WHERE
                                id = '".$_POST['MemberID']."';";
                    $Member = new Query($sql);
                    if($Member->error())
                    {
                        die("<pre>".$Member->getError()."</pre>\n");
                    }
                    $row = $Member->fetch();
                    $Member->free();
                    unset($Member);
                    // Memberdaten in Session speichern
                    $_SESSION['Name'] = $row['name'];
                    $_SESSION['Email'] = $row['email'];
                    $_SESSION['KW'] = $row['kurzwahl'];
                    $_SESSION['Tel']= $row['telefonnr '];
                    $_SESSION['Abteilung'] = $row['abteilung'];
                    $_SESSION['geb'] = $row['geburtstag'];
                    $_SESSION['Bild'] = $row['bild'];                       
                    // Newslinks holen
                }
                else
                {?>
                    <p>
                    Bitte wählen sie einen g&uuml;ltigen Mitarbeiter aus
                    </p>
                    <?php
                }

            }
            if(isset($_POST['submit']) AND "Speichern" == $_POST['submit'])
            {
			
				$_SESSION['Name'] = trim($_POST['Name']);
				$_SESSION['Email'] = trim($_POST['Email']);
				$_SESSION['KW'] = trim($_POST['KW']);
				$_SESSION['Tel'] = trim($_POST['Tel']);
				$_SESSION['Bild'] = trim($_POST['Bild']);
				$_SESSION['Abteilung'] = trim($_POST['Abteilung']);
                if(!checkdate($_POST['geb']['monat'],
                              $_POST['geb']['tag'],
                              $_POST['geb']['jahr']))
                {?>
                    <p>
                    Bitte geben sie ein g&uuml;ltiges Geburtsdatum an.
                    </p>
                    <?php
                }
                else
                {
                    $_SESSION['geb'] = sprintf('%04d-%02d-%02d',
                                               $_POST['geb']['jahr'],
                                               $_POST['geb']['monat'],
                                               $_POST['geb']['tag']);            
                }
            }
            if(isset($_POST['submit']) AND "Loeschen" == $_POST['submit'])
            {
            }
            if(!isset($_SESSION['MemberID']))
            {?>
                <form action="index.php?p=admin&amp;site=mitarbeiter&amp;action=edit" method="post" class="formular">
                <p>;
                Mitarbeiter ausw&auml;hlen.
                </p>
                <ol>
                <li>
				<?php
                echo("            <label for=\"memberid\">Mitarbeiter</label>\n");
                $sql = "SELECT
                            id,
                            name
                        FROM
                            mitarbeiter
                        ORDER BY
                            name ASC;";
                $Member = new Query($sql);
                if($Member->error())
                {
                    die("<pre>".$Member->getError()."</pre>\n");
                }
                echo("<select id=\"memberid\" name=\"MemberID\">\n");
                echo("    <option value=\"0\">Bitte einen Mitarbeiter w&auml;hlen</option>\n");
                while($row = $Member->fetch())
                {
                    echo("    <option value=\"".$row['ID']."\">\n");
                    echo($row['name']."\n");
                    echo("    </option\n");
                }
                echo("</select>\n");
                echo("        </li>\n");
                echo("        <li>\n");
                echo("            <input type=\"submit\" name=\"submit\" value=\"Mitarbeiter ausw&auml;hlen\" />\n");
                echo("            <input type=\"reset\" name=\"submit\" value=\"Zur&uuml;cksetzen\" />\n");
                echo("            <input type=\"hidden\" name=\"".session_name()."\" ");
                echo("                                      value=\"".session_id()."\" />\n");
				?>
                </li>
                </ol>
                </form><?php
            }
            else
            {?>
                <form action="index.php?p=admin&amp;site=admit&amp;action=edit" method="post" class="formular">
                <p>
                Mitarbeiter bearbeiten.
                </p>
                <ol>
                <li>
                Name:<?php	echo(htmlspecialchars($_SESSION['Name']));?>
				</li>
				<li>
				Email:<?php	echo(htmlspecialchars($_SESSION['Email']));?>
				</li>
				<li>
				Geburtstag:<?php	echo($_SESSION['geb']);?>
				</li>
				<li>
				Kurzwahl:<?	echo(htmlspecialchars($_SESSION['KW']));?>
				</li>
				<li>
				TelefonNr.:<?php	echo(htmlspecialchars($_SESSION['Tel']));?>
				</li>
				<li>
				Bild.:<?php	echo(htmlspecialchars($_SESSION['Bild']));?>
				</li>
				<li>
				Abteilung.:<?php echo(htmlspecialchars($_SESSION['Abteilung']));?>
				</li>
                <li>
                Mitarbeiterdaten
                <input type="submit" name="submit" value="Aendern" />
                </li>
                </li>
                <li>
                <input type="submit" name="submit" value="Speichern" />
                <?php
                echo("            <input type=\"hidden\"");
                echo("                   name=\"".session_name()."\"");
                echo("                   value=\"".session_id()."\" />\n");
				?>
                </li>
                </ol>
                </form>
                <?php
             }
             back2admin();
        }
        break;

Der Query enthält auch hier die richtigen Daten allerdings kommen die nicht in der DB an
 
Ok ich geb mir jetzt die Kugel.
Na das wollen wir doch nicht hoffen. ;)

Wenn ich das richtig sehe machst du folgendes:
PHP:
if(isset($_POST['submit']) AND "Aendern" == $_POST['submit']) {
[...]
}
elseif(isset($_POST['submit']) AND "Speichern" == $_POST['submit']) {
[...]
}
else {
  if(isset($_POST['submit']) AND "Aendern" == $_POST['submit']) {
  // in db schreiben...
  }
}
Bei diesem Aufbau wird die if-Abfrage innerhalb des else-Zweiges nie ausgeführt werden, da du gar nicht erst in den else-Zweig kommst. Es trifft ja schon die Bedingung in der ersten Zeile zu. :)
 
Ok jetzt komm ich nicht mal mehr soweit, das ich den Mitarbeiter auswählen kann.

Ich wähle den Mitarbeiter aus, klicke auf Auswählen und zack schon bin ich wieder auf dem auswähl Bildschirm.

Am Code selber hab ich soweit mal nichts verändert.
 
Zurück