【问题标题】:How to saving in HTML form variables in session?如何在会话中保存 HTML 表单变量?
【发布时间】:2017-11-08 20:15:18
【问题描述】:

我有 7 个不同网站的以下表单结构:

<div class="row">
<!-- Formular start -->
<form id="formular" action="datenbankanbindung.php" method="POST">
    <!--  Vorschläge für Bedarfe an Mitarbeiterinformation -->
    <div class="col-sm-12 col-md-12 col-lg-12">
        <div class="card">
            <div class="card-header"  data-background-color="purple">
                <h4 class="title">7. Vorschl&auml;ge für Bedarfe an Mitarbeiterinformation</h4>
                <p class="category"></p>
            </div>

            <div class="card-content">
                <!--7.1-->
                <div class="row">
                    <div class="col-sm-12 col-md-12 col-lg-4">
                        <div class="form-group label-floating optimaler-abstand">
                            <div class="label">
                                <label for="ThemenvorschlaegeFreitagsmail"> 
                                    <div class="aufzählung">7.1
                                    </div> 
                                    <div class="beschreibung">Themenvorschl&auml;ge Freitagsmail</div>
                                </label>
                                <textarea class="form-control" id="ThemenvorschlaegeFreitagsmail" name="name_ThemenvorschlaegeFreitagsmail" rows="1" maxlength="250"></textarea>
                            </div>
                        </div>
                    </div>
                    <!--7.2-->
                    <div class="col-sm-12 col-md-12 col-lg-4">
                        <div class="form-group label-floating optimaler-abstand">
                            <div class="label">
                                <label for="AenderungsbedarfeInformationsmedien"> 
                                    <div class="aufzählung">7.2
                                    </div> 
                                    <div class="beschreibung">&Auml;nderungsbedarfe in Informationsmedien des Kreises (Internet/Intranet), die nicht &uuml;ber die Beauftragten der Gesch&auml;fts- und Fachbereiche gel&ouml;st werden k&ouml;nnen.</div>
                                </label>
                                <textarea class="form-control" id="AenderungsbedarfeInformationsmedien" name="name_AenderungsbedarfeInformationsmedien" rows="1" maxlength="250"></textarea>
                            </div>
                        </div>
                    </div>
                    <!--7.3-->
                    <div class="col-sm-12 col-md-12 col-lg-4">
                        <div class="form-group label-floating optimaler-abstand">
                            <div class="label">
                                <label for="VorschlaegePressemitteilungen"> 
                                    <div class="aufzählung">7.3
                                    </div> 
                                    <div class="beschreibung">Vorschl&auml;ge für Pressemitteilungen</div>
                                </label>
                                <textarea class="form-control" id="VorschlaegePressemitteilungen" name="name_VorschlaegePressemitteilungen" rows="1" maxlength="250"></textarea>
                            </div>
                        </div>
                    </div>
                </div>  
                <!-- Button -->
                <div class="row">
                    <!--absenden-->
                    <div style="float:right">
                        <button class="btn btn-primary" type="submit" id="button">absenden</button>
                    </div>
                    <!--Eingaben speichern-->
                    <div style="float:right">
                        <button class="btn btn-primary" id="button" onclick="eingaben_speichern()">Eingaben speichern</button>
                    </div>
                </div>  
            </div>  
        </div>  
    </div>
</form> 

现在我想将所有变量存储到一个会话中,我可以在最后一个站点结束时将它们保存到我的数据库中。

我唯一要做的就是在每个站点的开头粘贴这段代码:

<?php
 session_start();
 foreach ($_POST as $key => $value) {
 $_SESSION['post'][$key] = $value;
 }
?>

并在我的 database.php 中粘贴以下代码:

<?php
  session_start();
   foreach ($_POST as $key => $value) {
     $_SESSION['post'][$key] = $value;
   }
  //function to extract array
  extract($_SESSION['post']); 
?>

但是没有变量被粘贴到我的数据库中。

我不得不说数据库和一切都运行良好,因为在我创建 7 个不同的站点之前,我有一个包含所有表单元素的站点并且运行良好。

这可能是一个解决方案吗?

<?php
$_SESSION['name'] = "wert";
 ?>

我必须将每个表单字段的每个名称都存储到会话变量中吗? 或者有没有可能用 foreach 做到这一点?

编辑: 这是我的database.php。当执行 database.php 时,它会在我的数据库中写入一个空行。

<?php

    session_start();
    if (!empty($_POST)) {
        $_SESSION['post'] = $_POST; 
    }

    //blendet alle Meldungen (Notizen) aus.
    ini_set('display_errors','off'); 

    //Tabelle Landrat
    //Datenbankverbindung herstellen 
        function Connect()
        {
         $dbhost = "localhost";
         $dbuser = "root";
         $dbpass = "";
         $dbname = "landrat";

        $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
        //Kodierung auf UTF-8 stellen, da sonst Umlaute falsch dargestellt werden 
        $conn->set_charset("utf8");

        return $conn;
        }

    //Notizen beim Ausführen können vernachlässigt werden -> werden mit obiger Anweisung ausgeblendet
    //Variablen den einzelnen Formlarfeldern zuweisen und mit Datenbank verbinden
        $conn = Connect();

    //Datum
        $date = date("Y-m-d");

    //In welche Tabelle soll alles gespeichert werden? Alle Eingaben in die jeweiligen Spalten schreiben
        $query  = "INSERT into landrat_dashboard (name_Gleitzeitrahmen,name_Abweichungen,name_Mehrarbeitervolumen,name_Mehrarbeit1,name_Ausgleich,name_Mehrarbeit2,name_Personalmassnahmen,
        name_Ueberstunden_abzusehen,name_Klaerungsbedarfe1,name_Klaerungsbedarfe2,name_durchgefuehrt,name_abgelehnt,name_offen,name_Fortbildungsantraege,name_Antraege_genehmigt,name_Antraege_abgelehnt,
        name_Fortbildung,name_Fachbereichsleiterbesprechungen,name_Datum1,name_Datum2,name_Datum3,name_Datum4,name_Datum5,name_Themen, name_Fragestellungen,name_NeueMitarbeiter,name_BekannteFluktuation,
        name_Geschaeftsverteilungsaenderungen,name_Raumplanung,name_Verwaltungsverfahren,name_ITEinsatz,name_Kooperationen,name_ProjekttitelA,name_ProjektverantwortlicheA,name_ZeitplanA,name_BudgetA,name_ProjekttitelB,
        name_ProjektverantwortlicheB,name_ZeitplanB,name_BudgetB,name_ProjekttitelC,name_ProjektverantwortlicheC,name_ZeitplanC,name_BudgetC,name_ProjekttitelD, name_ProjektverantwortlicheD, 
        name_ZeitplanD,name_BudgetD,name_ProjekttitelE,name_ProjektverantwortlicheE,name_ZeitplanE,name_BudgetE,name_Kreisentwicklungskonzept,name_Kooperation1,name_Kooperation2,name_StatusberichtA,
        name_StatusberichtB,name_StatusberichtC,name_StatusberichtD,name_StatusberichtE,name_Fallzahlenentwicklungen,name_Haushaltsansaetze,name_AnzeichenAbweichung1,name_OffeneForderungen,
        name_Kreistag,name_AnzeichenAbweichung2,name_SonstigeVeranstaltungen,name_ThemenvorschlaegeFreitagsmail,name_AenderungsbedarfeInformationsmedien,name_VorschlaegePressemitteilungen,datum) 

        VALUES('" . $name_Gleitzeitrahmen . "','" . $Abweichungen . "','" . $Mehrarbeitervolumen . "','" . $Mehrarbeit1 . "','" . $Ausgleich . "','" . $Mehrarbeit2 . "','" . $Personalmaßnahmen . "','" 
            . $Überstunden_abzusehen . "','" . $Klärungsbedarfe1 . "','" . $Klärungsbedarfe2 . "','" . $durchgeführt . "','" . $abgelehnt . "','" . $offen . "','" . $Fortbildungsanträge . "','" 
            . $Anträge_genehmigt. "','" . $Anträge_abgelehnt . "','" . $Fortbildung . "','" . $Fachbereichsleiterbesprechungen . "','" . $Datum1 . "','" . $Datum2 . "','" . $Datum3 . "','" 
            . $Datum4 . "','" . $Datum5 . "','" . $Themen . "','" . $Fragestellungen . "','" . $NeueMitarbeiter . "','" . $BekannteFluktuation . "','" . $Geschäftsverteilungsänderungen . "','" 
            . $Raumplanung . "','" . $Verwaltungsverfahren . "','" . $ITEinsatz . "','" . $Kooperationen . "','" . $ProjekttitelA . "','" . $ProjektverantwortlicheA . "','" . $ZeitplanA . "','" 
            . $BudgetA . "','". $ProjekttitelB . "','" . $ProjektverantwortlicheB . "','" . $ZeitplanB . "','" . $BudgetB .  "','" . $ProjekttitelC . "','" . $ProjektverantwortlicheC . "','" 
            . $ZeitplanC . "','" . $BudgetC ."','" . $ProjekttitelD . "','" . $ProjektverantwortlicheD . "','" . $ZeitplanD . "','" . $BudgetD .  "','" . $ProjekttitelE . "','" 
            . $ProjektverantwortlicheE . "','" . $ZeitplanE . "','" . $BudgetE . "','" . $Kreisentwicklungskonzept . "','" . $Kooperation1 . "','" . $Kooperation2 . "','" . $StatusberichtA . "','" 
            . $StatusberichtB . "','" . $StatusberichtC . "','" . $StatusberichtD . "','" . $StatusberichtE . "','" . $Fallzahlenentwicklungen . "','" . $Haushaltsansätze ."','" . $AnzeichenAbweichung1 . "','" 
            . $OffeneForderungen . "','" . $Kreistag . "','" . $AnzeichenAbweichung2 . "','" . $SonstigeVeranstaltungen . "','" . $ThemenvorschlägeFreitagsmail .  "','" . $ÄnderungsbedarfeInformationsmedien . "','" 
            . $VorschlägePressemitteilungen . "','" . $date . "')";


        $success = $conn->query($query);

    //Bei Error
    if (!$success) {
        die("Couldn't enter data: ".$conn->error);
    }

    //Verbindung zur Datenbank schliessen
    $conn->close();
    ?> 

【问题讨论】:

  • 您似乎设置了两次会话并且没有阅读它?当然如果你要使用它,你的 db.php 文件不应该需要再次设置它

标签: php html forms session


【解决方案1】:

您需要检查表单是否已发送。

session_start();
if (!empty($_POST)) {
    $_SESSION['post'] = $_POST; // no foreach needed
}

【讨论】:

  • 当我有更多变量时,我会这样做吗? session_start(); if (!empty($_POST)) { $_SESSION['post'] = $_POST; // 不需要 foreach $_SESSION['post2'] = $_POST; .....}
  • 哪些变量?来自$_POST 的所有密钥都保存到$_SESSION['post']。其他$_SESSIONs 保持不变。试试这个代码并在后面添加print_r($_SESSION['post']);。你可以像我写的那样分配整个数组。
  • 好的,我试过了,但我的数据库中没有存储任何值。正如你所说,我已经在我的 database.php 开头插入了这个: session_start(); if (!empty($_POST)) { $_SESSION['post'] = $_POST;可能是因为我的 sql 查询。如果文本字段的名称是“name_textfield”,我可以在我的 database.php 中使用相同的名称调用它吗? ....VALUES('" . $name_textfield . "','" ...
  • @CK2513:您没有向我们展示 SQL 查询。只是保存到会话而不检查之前是否发送过表单。如果您想将表单中的值直接保存到数据库中,则不需要将它们保存到之前的会话中。更新您的问题并显示 SQL 查询(使用数据库结构),而不是我编辑我的答案以更好地适应您的情况。
  • 我更新了我的帖子。数据库结构很好,正如我所说的,当我有一个未划分为多个表单页面站点的单个表单页面页面时它可以工作。如果你需要它让我知道。谢谢!
猜你喜欢
  • 2013-09-08
  • 1970-01-01
  • 2013-12-07
  • 2019-07-12
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
相关资源
最近更新 更多