tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
206
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    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-Code:
    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
     

  2. #2
    merzi86 merzi86 ist offline Mitglied Gold
    Registriert seit
    Jun 2007
    Ort
    Sachsen
    Beiträge
    244
    Was mir als erstes Auffällt du hast in den ersten Zwei Zeilen das stehen:
    PHP-Code:
    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-Code:
    case 'add':
            if(isset(
    $_POST['submit']) AND $_POST['submit']=="Speichern"
    Außerdem schau die mal das an.
    Geändert von merzi86 (19.08.08 um 21:45 Uhr)
     
    Zitat Zitat von Albert Einstein
    „Ich weiß nicht, welche Waffen im nächsten Krieg zur Anwendung kommen, wohl aber, welche im übernächsten: Pfeil und Bogen.“
    Würde mich über eine Positive beurteilung freuen.

  3. #3
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin Christoph,


    hier mal die beiden Problemzeilen:

    PHP-Code:
    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.
     

  4. #4
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    Ok ich geb mir jetzt die Kugel. Danke Sven das wars.

    Allerdings hab ich denselben Fehler jetzt bei der Edit funktion:

    PHP-Code:
    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
     

  5. #5
    DeluXe DeluXe ist offline Funkjoker
    Registriert seit
    Jul 2004
    Ort
    Offenburg
    Beiträge
    847
    Zitat Zitat von nchristoph Beitrag anzeigen
    Ok ich geb mir jetzt die Kugel.
    Na das wollen wir doch nicht hoffen.

    Wenn ich das richtig sehe machst du folgendes:
    PHP-Code:
    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.
     

  6. #6
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    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.
     

  7. #7
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    Hat sich erledigt
     

Ähnliche Themen

  1. Daten werden nicht in DB geschrieben
    Von MajotPayne im Forum PHP
    Antworten: 15
    Letzter Beitrag: 20.09.09, 12:17
  2. Daten werden nicht in DB geschrieben
    Von counteract im Forum PHP
    Antworten: 26
    Letzter Beitrag: 28.10.06, 13:10
  3. Antworten: 4
    Letzter Beitrag: 22.10.06, 15:49
  4. Antworten: 5
    Letzter Beitrag: 04.04.06, 11:02
  5. & und # werden nicht in die Datenbank geschrieben?
    Von 2Pac im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.03.04, 14:41