User Edit Problem

nchristoph

Erfahrenes Mitglied
Hi ich hab jetzt alles fürs Intranet meiner Firma fertig.

Beim Probelauf lief alles bis auf eine Kleinigkeit glatt: Das Bearbeiten der Mitarbeiter Daten.

Ich klicke auf Speichern und kriege eine Menge index notices.

PHP:
Notice: Undefined index: Name in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 331

Notice: Undefined index: Email in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 332

Notice: Undefined index: KW in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 333

Notice: Undefined index: Tel in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 334

Notice: Undefined index: Bild in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 335

Notice: Undefined index: Abteilung in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 336

Notice: Undefined index: geb in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 337

Notice: Undefined index: geb in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 338

Notice: Undefined index: geb in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 339

Bitte geben sie ein gültiges Geburtsdatum an.

Hier wäre der betroffene Code
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($_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 Bearbeiten\" />\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=mitarbeiter&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();

Auf wunsch kann ich die ganze Edit Funktion posten.

Ich werkle an dem schon den ganzen Tag, besser gesagt seit gestern Abend und find den Fehler ned.
 
Zuletzt bearbeitet:
Hi,

wie übergibst du die Werte aus deinem Formular?

PHP:
$_SESSION['geb'] = sprintf('%04d-%02d-%02d',
                                               $_POST['geb']['jahr'],
                                               $_POST['geb']['monat'],
                                               $_POST['geb']['tag']);


müsste es nicht eher

PHP:
$_SESSION['geb'] = sprintf('%04d-%02d-%02d',
                                               $_POST['jahr'],
                                               $_POST['monat'],
                                               $_POST['tag']);

heißen?
 
Hallo.

Es wäre leichter wenn du markieren könntest in welcher Zeile das ist, denn ich kann nicht wissen wo die 331 Zeile ist ;-)
Okay, jetzt weis ichs doch.. ;-)

MfG
Philipp

Edit: Versuchst du vl. mit dem unteren Teil den Mitarbeiter zu bearbeiten Denn dort schreibst du nur die Werte hin, übergibst aber nicht neue..
 
Zuletzt bearbeitet:
Ich poste mal einfach die ganze edit funktion

PHP:
<?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");
			$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
            back2admin();
        }       
        else
        {
            if(isset($_POST['submit']) AND "Mitarbeiter Bearbeiten" == $_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'])
            {
			
				XXXXXXXX $_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'])) XXXXXXXX
                {?>
                    <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($_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 Bearbeiten\" />\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=mitarbeiter&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 mit XXXXXXXX markierte bereich ist der betroffene Code lt. den Fehlermeldungen.

Editieren kann ich nur speichert er mir nicht. Anstatt zu speicher wirft er mir oben angeführte Notices aus.
 
Zuletzt bearbeitet:
Ich galube ich weis es nun.. Du hast bei dem Formular als id strtolower($value) (zb. name) angegeben.
Der Session übergibst du aber trim($_POST['Name']);
Da hast du es groß geschrieben...

//Edit: Sollte es gelöst sein, bitte markiere es als "Erledigt" ;-)
 
Zuletzt bearbeitet:
So jetzt funktionierts bis auf eine kleinigkeit am rande



Notice: Undefined index: MemberID in D:\xampp\htdocs\pdc\admin\inc\admin_mitarbeiter.php on line 284


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=\"".$value."\">".$value."</label>\n");
                echo("                <input type=\"text\" id=\"".$value."\"");
                echo(" name=\"".$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");
			$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
            back2admin();
        }       
        else
        {
            if(isset($_POST['submit']) AND "Mitarbeiter Bearbeiten" == $_POST['submit'])
            {
  284              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($_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 Bearbeiten\" />\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=mitarbeiter&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="Mitarbeiter Bearbeiten" />
                <?php
                echo("            <input type=\"hidden\"");
                echo("                   name=\"".session_name()."\"");
                echo("                   value=\"".session_id()."\" />\n");
				?>
                </li>
                </ol>
                </form>
                <?php
             }
             back2admin();
        }
        break;

hab ne 284 hinzugefügt zu der zeile
 
Zurück