PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   mysql speichert Dropdwons nicht (http://www.selfphp.de/forum/showthread.php?t=25882)

Cason 16.06.2016 12:24:07

mysql speichert Dropdwons nicht
 
Es speichert ab Abteilung nicht mehr Abteilung, Vorgesetzter, Unternehmen und Standort sind Drop downs die ich in einzelne Tabellen gespeichert habe.

PHP-Code:

<html> <!-- Datensatz_speichern.php -->
    <?php
        
//aktuelle Zeit hohlen
        
$Jetzt time();
        
$DatumAnzeige date("d.m.Y"$Jetzt);
        echo 
$DatumAnzeige;
        
        
// uebertragenden Daten auswerten
        
$Vorname $_POST["vorname"];
        
$Nachname $_POST["nachname"];
        
$Position $_POST["position"];
        
$Abteilung $_POST["abteilung"];
        
$Vorgesetzter $_POST["vorge"];
        
$Unternehmen $_POST["unternehmen"];
        
$Standort $_POST["standort"];
        
$Buero $_POST["buero"];
        
$Eintritsdatum $_POST["edatum"];
        
        
// Datum fuer  mysql-Datenbank umformatieren
        
$Eintritsdatum date("Y-m-d"strtotime($Eintritsdatum));

        
        
//Neue Daten ausgeben
        
echo "</br>".$Vorname."</br>";
        echo 
"</br>".$Nachname."</br>";
        echo 
"</br>".$Position."</br>";
        echo 
"</br>".$Abteilung."</br>";
        echo 
"</br>".$Vorgesetzter."</br>";
        echo 
"</br>".$Unternehmen."</br>";
        echo 
"</br>".$Standort."</br>";
        echo 
"</br>".$Eintritsdatum."</br>";
        echo 
"</br<".$Buero."</br>";
            
                
        
//Verbindung zur Datenbank erstellen
        
$Verbindung mysql_connect("localhost""root");
        
mysql_select_db("db_ma_formular");
        
        
//sql-Befehl erstellen
        
$tbl "tbl_mitarbeiter";
        
//$sqlBefehl = "insert into ".$tbl."(Vorname, Nachname, Position, Abteilung, Vorgesetzter, Unternehmen, Standort, Buero, Eintritsdatum) values ('$Vorname', '$Nachname', '$Position', '$Abteilung', '$Vorgesetzter', '$Unternehmen', '$Standort', '$Buero', '$Eintritsdatum')";
        
$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')";
        
$Ergebnis mysql_query($sqlBefehl);
        if (
$Ergebnis == 1)
        {
            echo 
"Daten erfolgreich gespeichert";
        }
        else
        {
            echo 
"Daten nicht gespeichert";
        }
        
mysql_close($Verbindung);
    
?>
</html>


sysop 16.06.2016 12:55:40

AW: mysql speichert Dropdwons nicht
 
Na du hast ja auch die Zeile "ausgeremmt", in der die Daten gespeichert werden.

falsch:
PHP-Code:

//$sqlBefehl = "insert into ".$tbl."(Vorname, Nachname, Position, Abteilung, Vorgesetzter, Unternehmen, Standort, Buero, Eintritsdatum) values ('$Vorname', '$Nachname', '$Position', '$Abteilung', '$Vorgesetzter', '$Unternehmen', '$Standort', '$Buero', '$Eintritsdatum')";
$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')"

richtig:
PHP-Code:

$sqlBefehl "insert into ".$tbl."(Vorname, Nachname, Position, Abteilung, Vorgesetzter, Unternehmen, Standort, Buero, Eintritsdatum) values ('$Vorname', '$Nachname', '$Position', '$Abteilung', '$Vorgesetzter', '$Unternehmen', '$Standort', '$Buero', '$Eintritsdatum')";
// $sqlBefehl = "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')"; 

Anmerkung meinerseits:
1. mysql ist veraltet, nutze mysqli oder PDO
2.
PHP-Code:

// $Jetzt = time();
// $DatumAnzeige = date("d.m.Y", $Jetzt);
// echo $DatumAnzeige;

echo date("d.m.Y"time()); 

3. Warum setzt du nicht gleich die $_POST Variablen? und ganz wichtig!
4. http://us1.php.net/manual/de/functio...ape-string.php
PHP-Code:

$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('".mysql_real_esc_string($_POST['vorname'])."', '".mysql_real_esc_string($_POST['nachname'].....; 


PHP-Code:

<html> <!-- Datensatz_speichern.php -->
    <?php

5. was macht das html da vorne und am Ende?
6. Wenn ich dann schon dabei bin, mysql-Befehle GROSS schreiben also INSERT INTO....VALUES..... das macht das ganze leserlich ;-) .
7. Zwar reine Kosmetik, aber ich finde es wichtig.
PHP-Code:

echo "</br>".$Vorname."</br>"da machst du es übersichtlich

aber hier (man achte auf das Syntaxhighlight...)
PHP-Code:

$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')";
$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('".$Vorname."', '".$Nachname."', '".$Position."', '."$Abteilung."')"

PS
mysql_close() ist mittlerweile überflüssig, PHP schliesst die Verbindung automatisch.

Cason 16.06.2016 15:17:48

AW: mysql speichert Dropdwons nicht
 
Benutze nich dirkt $_Post weil ich daten von einer Website aus eingabe und mit post übertrage

HTML-Code:

        <form action = "speicher.php" method = "post">
                                <table>
                                        <tr>
                                                <td> Vorname </td>
                                                <td>
                                                        <input type="text" size="25" name="vorname" />
                                                </td>
                                </tr>
                                <tr>
                                        <td> Nachname </td>
                                        <td>
                                                <input type="text" size="25" name="nachname" />
                                        </td>
                                </tr>
                                <tr>
                                        <td> Position </td>
                                        <td>
                                                <input type="text" size="25" name="position" />
                                        </td>
                                </tr>
                                <tr>
                                        <td> Abteilung </td>
                                        <td>
                                                <select name="abteilung" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld[$Index]["Abteilung_ID"].">".$Feld[$Index]["Abteilung"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> Vorgesetzter </td>
                                        <td>
                                                <select name="vorge" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld3[$Index]["Vorgesetzter_ID"].">".$Feld3[$Index]["Vorgesetzter"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> Unternehmen </td>
                                        <td>
                                                <select name="unternehmen" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld4[$Index]["Unternehmen_ID"].">".$Feld4[$Index]["Unternehmen"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> Standort </td>
                                        <td>
                                                <select name="standort" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld2[$Index]["Standort_ID"].">".$Feld2[$Index]["Standort"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> B&uuml;ro </td>
                                        <td>
                                                <input type="text" size="25" name="buero" />
                                        </td>
                                </tr>
                                <tr>
                                        <td> Eintrittsdatum </td>
                                        <td>
                                                <input type="text" size="25" name="edatum" /> (tt.mm.jjjj)
                                        </td>
                                </tr>
                                                <td> </td>
                                <td>
                                        <input type="submit" value="Speichern" />
                                        <input type="reset" value="Abbrechen" />
                                </td>
                                </table>
                        </form>               

die eingabe fuktioniert problemlos

Aber erst mal Danke

Cason 16.06.2016 15:24:24

AW: mysql speichert Dropdwons nicht
 
aber hier (man achte auf das Syntaxhighlight...)
PHP-Code:

$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')";
$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('".$Vorname."', '".$Nachname."', '".$Position."', '."$Abteilung."')"

da bekomme ich nen error wenn ich das Probiere


und nein ich hatte das ober auskommentiert weil es nicht tat

//$sqlBefehl = "insert into ".$tbl."(Vorname, Nachname, Position, Abteilung, Vorgesetzter, Unternehmen, Standort, Buero, Eintritsdatum) values ('$Vorname', '$Nachname', '$Position', '$Abteilung', '$Vorgesetzter', '$Unternehmen', '$Standort', '$Buero', '$Eintritsdatum')";
$sqlBefehl = "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')";

und mit dem da drunter habe ich gemacht um zu erkennen wo der fehler beginnt und das Abteilung.

sysop 16.06.2016 16:38:47

AW: mysql speichert Dropdwons nicht
 
Zitat:

Zitat von Cason (Beitrag 148652)
aber hier (man achte auf das Syntaxhighlight...)
PHP-Code:

$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('$Vorname', '$Nachname', '$Position', '$Abteilung')";
$sqlBefehl "insert into ".$tbl."(Vorname,Nachname, Position, Abteilung) values ('".$Vorname."', '".$Nachname."', '".$Position."', '."$Abteilung."')"

da bekomme ich nen error wenn ich das Probiere

und mit dem da drunter habe ich gemacht um zu erkennen wo der fehler beginnt und das Abteilung.

Man sieht da recht schön (auf Grund des Systax-Highlights), dass ich den Punkt bei $Abteilung falsch gesetzt habe, deshalb auch meine Anregung.

Dein Formular nutzt mir in so fern nichts, da ich die Daten aus der Datenbank nicht zur Verfügung habe, ist aber für mein nächstes Vorhaben zunächst egal.

Ich schlage also erst einmal vor, die $_POST Variablen zu prüfen.
Dazu fügst nach folgendem Code das ein:

PHP-Code:

        // uebertragenden Daten auswerten
        
$Vorname $_POST["vorname"];
        
$Nachname $_POST["nachname"];
        
$Position $_POST["position"];
        
$Abteilung $_POST["abteilung"];
        
$Vorgesetzter $_POST["vorge"];
        
$Unternehmen $_POST["unternehmen"];
        
$Standort $_POST["standort"];
        
$Buero $_POST["buero"];
        
$Eintritsdatum $_POST["edatum"];

// hier mein Zusatz:
echo '<pre>';
print_r($_POST);
echo 
'</pre>'

Wenn nicht alle Variablen befüllt sind, hast du dein Problem wohl schon gefunden.
Ist alles da, kannst du dein SQL-Querie eventuell so schreiben:

PHP-Code:

$sqlBefehl "
INSERT INTO `"
.$tbl."`
(
    `Vorname`,
    `Nachname`,
    `Position`,
    `Abteilung`,
    `Vorgesetzter`,
    `Unternehmen`,
    `Standort`,
    `Buero`,
    `Eintritsdatum`
)
VALUES
(
    '"
.mysql_real_escape_string($_POST['vorname'])."',
    '"
.mysql_real_escape_string($_POST['nachname'])."',
    '"
.mysql_real_escape_string($_POST['position'])."',
    '"
.mysql_real_escape_string($_POST['abteilung'])."',
    '"
.mysql_real_escape_string($_POST['vorge'])."',
    '"
.mysql_real_escape_string($_POST['unternehmen'])."',
    '"
.mysql_real_escape_string($_POST['standort'])."',
    '"
.mysql_real_escape_string($_POST['buero'])."',
    '"
.$Eintritsdatum."'
)"


In einer Testtabelle hier hat das Problemlos funktioniert.

PS
Sind die Feldnamen deiner Tabelle wirklich am Anfang Grossbuchstaben? Auch dass ist wichtig und Fehlerquelle.
mysql_error() gibt Fehler aus.

Cason 17.06.2016 08:54:23

AW: mysql speichert Dropdwons nicht
 
tbl_abteilung
Abteilung_ID :1:2:3:4
Abteilung :Marketing:Holding:Einkauf:Verwaltung:

tbl_mitarbeiter
Mitarbeter_ID
Vorname
Nachname
Abteilung_Nr


zwischen Abteilung_ID und Abteilung_Nr besteht eine beziehung

und im dropdown steht Marketing usw.
ich möchte aber das die dazugehörige Abteilung_ID als Abteilung_Nr in tbl-Mitarbeiter gespeichert wird.

Das beschreibt mein Problem besser.


Die Variablen sind befüllt habe ich getestet.

Danke weiterhin für deine Hilfe

Gruß

Cason

sysop 17.06.2016 11:30:35

AW: mysql speichert Dropdwons nicht
 
Hallo

Ich sage es nur ungern, aber das von mir gepostete Query funktioniert bei mir fehlerfrei, sofern alle Variablen auch belegt sind. Ich habe mir ein entsprechendes Formular gebastelt und alle Daten befüllt und abgeschickt, alles landet da, wo es hin soll.

Dein Problem, dass ab Abteilung nichts gespeichert wird kommt also offensichtlich vom Formular (leere Einträge o.Ä.). Ich kenne weder die Tabelle noch die Abfrage, die deine Dropdown-Felder befüllt, was für mich den Code deines Formulars natürlich undurchsichtig macht.

Wenn alle Daten aus dem Formular vorhanden sind, ist der Rest (wohin, sprich in welches Feld du dann die Einträge speicherst) nur noch ein Umschaufeln der Variablen.

Cason 17.06.2016 13:02:12

AW: mysql speichert Dropdwons nicht
 
Hier mein formular quelltext
HTML-Code:

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 STRICT//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml-strict.dtd">

<html xmlns= "http://w3.org/1999/xhtml" lang ="de">

<?php
        //Datenverbindung
        $Verbindung = mysql_connect ("localhost", "root");
        mysql_select_db("mitarbeiterformular");
       
        //Abteilung        Feld
        $Resultat = mysql_query("select * from tbl_abteilung");
        $DatenSatzAnzahl = mysql_num_rows ($Resultat);
        for ($Index=0; $Index < $DatenSatzAnzahl; $Index++)
        {
        $Datensatz = mysql_fetch_assoc($Resultat);
        $Feld[$Index]["Abteilung_ID"]= $Datensatz["Abteilung_ID"];
        $Feld[$Index]["Abteilung"]= $Datensatz["Abteilung"];       
        }
       
       
        //Standort Feld2
        $Resultat2 = mysql_query("select * from tbl_standort");
        $DatenSatzAnzahl2 = mysql_num_rows ($Resultat2);
        for ($Index=0; $Index < $DatenSatzAnzahl; $Index++)
        {
        $Datensatz2 = mysql_fetch_assoc($Resultat2);
        $Feld2[$Index]["Standort_ID"]= $Datensatz2["Standort_ID"];
        $Feld2[$Index]["Standort"]= $Datensatz2["Standort"];       
        }
       
        //Vorgesetzter Feld3
        $Resultat3 = mysql_query("select * from tbl_vorgesetzter");
        $DatenSatzAnzahl3 = mysql_num_rows ($Resultat3);
        for ($Index=0; $Index < $DatenSatzAnzahl; $Index++)
        {
        $Datensatz3 = mysql_fetch_assoc($Resultat3);
        $Feld3[$Index]["Vorgesetzter_ID"]= $Datensatz3["Vorgesetzter_ID"];
        $Feld3[$Index]["Vorgesetzter"]= $Datensatz3["Vorgesetzter"];       
        }
       
        //Unternehmen Feld4
        $Resultat4 = mysql_query("select * from tbl_unternehmen");
        $DatenSatzAnzahl4 = mysql_num_rows ($Resultat4);
        for ($Index=0; $Index < $DatenSatzAnzahl; $Index++)
        {
        $Datensatz4 = mysql_fetch_assoc($Resultat4);
        $Feld4[$Index]["Unternehmen_ID"]= $Datensatz4["Unternehmen_ID"];
        $Feld4[$Index]["Unternehmen"]= $Datensatz4["Unternehmen"];       
        }
       
       
        //Monitor Feld5
        $Resultat5 = mysql_query("select * from tbl_monitor");
        $DatenSatzAnzahl5 = mysql_num_rows ($Resultat5);
        for ($Index=0; $Index < $DatenSatzAnzahl5; $Index++)
        {
        $Datensatz5 = mysql_fetch_assoc($Resultat5);
        $Feld5[$Index]["Monitor_ID"]= $Datensatz5["Monitor_ID"];
        $Feld5[$Index]["Monitor"]= $Datensatz5["Monitor"];       
        }       
       
        mysql_close($Verbindung);
?>


<head>
        <title>Mitarbeiterformular</title>
        <meta http-equiv="Content-type" content="text/html; CHARSET=iso-8859-1" />
        <link rel="stylesheet" type="text/css" href="css/basic.css" media="screen" />
        <style type="text/css">
                body
                {
                        font-size: 85%;
                        font-family: "Verdana, Arial, Sans-Serif"
                        text-align: left;
                        background-color: #fff;
               
                        }
               
                #wrap
                {
                        width: 760px;
                        margin: 0 auto;
                        text-alighn: left;
                }
               
                #kopf
                {
                        width: 760px;
                        height: 145px;
                        font-size: 25px ;
                        text-align: right;
                        background-color: #fff;
                        /*
                        border-top: 2px solid #999;
                        border-bottem: 2px solid #999;
                        border-right: 2px solid #999;
                        border-left: 2px solid #999;
                        */
                }
               
                #kopf-1
                {
                        text-align: center;
                        width: 760px;
                        height: 60px;
                    border-top: 1px solid #fff;
                        border-left: 1px solid #fff;
                        border-right: 1px solid #fff;
               
                }
               
                        #inhalt1
                {
                        float: left;
                        height: 100%;
                        width: 760px;
                        background-color: #fff;
                        border-top: 2px solid #999;
                        border-right: 2px solid #999;
                        border-left: 2px solid #999;
                        border-bottem: 2px solid #999;
                       
                }
               
               
                #inhalt
                {
                        float: left;
                        height: 400px;
                        width: 764px;
                        background-color: #fff;
                        border-top: 2px solid #999;
                        /* border-right: 1px solid #999;
                        border-left: 1px solid #999; */
                       
                }
               
               
                h2
                {
                text-align: center;
                }


                h3, h4, h5
                {
                margin: 12px;
                color: black;
                text-align: center;
                }
               
               
                h1
                {
                front-size: 220%;
                margin: 20px;
                text-align: center;
                color: black;
                }
               
                h6
                {
                margin: 11px;
                color: black;
                }
               
                p.dashed
                {border-style: dashed;
                margin: 15px 20px;
                }
               
                a:link
                {
               
                }
               
                a:hover, a:active, a:focus
                {
                        color: #00ff00;
                        text-decoration: none;
                }
                       
                #navigation ul li
                {
                display: inline;
                list-style-type: none;
                margin: 20px;
                }
               
                #fusszeile
                {
                        border-top: 2px solid black;
                }
               
        </style>
        <body>
                <div id="wrap">
                        <div id="kopf" >
                                <!-- Eine Ueberschrift oder Logo fuer die Webseite -->
                                <a href ="https://www.deutsche-glasfaser.de" title="Srart">
                        <div align="center"> <img src="deutsche-glasfaser_b.svg" alt="Logo"> </div> </a>       
                       
                        </div> <!-- Ende von Kopf -->                       
                <div id="kopf-1">
                  <h1> Mitarbeiterformular </h1>
                  <h2> Personelle Daten </h2>
                <h3> ◄ Für die Personalabteilung ► </h3>
                </div> <!-- ende des Kopf-1 -->
                <div id="inhalt1">
                  <!-- Beginn des Inhalteinss -->
                        </br> </br> </br> </br> </br>
                        <form action = "speicher.php" method = "post">
                                <table>
                                        <tr>
                                                <td> Vorname </td>
                                                <td>
                                                        <input type="text" size="25" name="vorname" />
                                                </td>
                                </tr>
                                <tr>
                                        <td> Nachname </td>
                                        <td>
                                                <input type="text" size="25" name="nachname" />
                                        </td>
                                </tr>
                                <tr>
                                        <td> Position </td>
                                        <td>
                                                <input type="text" size="25" name="position" />
                                        </td>
                                </tr>
                                <tr>
                                        <td> Abteilung </td>
                                        <td>
                                                <select name="abteilung" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld[$Index]["Abteilung_ID"].">".$Feld[$Index]["Abteilung"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>       
                                <tr>
                                        <td> Vorgesetzter </td>
                                        <td>
                                                <select name="vorge" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld3[$Index]["Vorgesetzter_ID"].">".$Feld3[$Index]["Vorgesetzter"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> Unternehmen </td>
                                        <td>
                                                <select name="unternehmen" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld4[$Index]["Unternehmen_ID"].">".$Feld4[$Index]["Unternehmen"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> Standort </td>
                                        <td>
                                                <select name="standort" size="0">
<?php
                                                        for($Index=0; $Index < $DatenSatzAnzahl; $Index++)
                                                        {       
                                                                echo "<option value".$Feld2[$Index]["Standort_ID"].">".$Feld2[$Index]["Standort"]."</option>";
                                                        }
?>

                                                </select>
                                        </td>
                                </tr>
                                <tr>
                                        <td> B&uuml;ro </td>
                                        <td>
                                                <input type="text" size="25" name="buero" />
                                        </td>
                                </tr>
                                <tr>
                                        <td> Eintrittsdatum </td>
                                        <td>
                                                <input type="text" size="25" name="edatum" /> (tt.mm.jjjj)
                                        </td>
                                </tr>
                                                <td> </td>
                                <td>
                                        <input type="submit" value="Speichern" />
                                        <input type="reset" value="Abbrechen" />
                                </td>
                                </table>
                        </form>               
</br>                       
                </div> <!-- ende des Inhalt1 -->
                </body>
        </html>


ich weiß ich bin eine "einrückschlampe" und ich mache es wahrscheinlich auch bisschen umständlich. Trozdem denke ich das du das verstehst.

mit freundlichem gruß

Cason


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:53:55 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.