tobmes
Goto Top

Variable einer seite auf einer zweiten verwenden

Hi Experten,

ich habe mal wieder ein kleines Problem. Ich habe auf einer Seite mehrere Forms, je nachdem, welcher submitButton geclickt wird, soll sich eine Seite mit angepasstem Inhalt öffnen. Das habe ich auch hinbekommen. Der Wert, der mit dem POST übertragen wird soll dann auf der zweiten Seite mit noch zusätzlichen Daten, welche der Benutzer in ein Formular eingibt in die Datenbank geschriben werden, auch das habe ich hinbekommen. Jedoch baut sich ja nach jedem Click auf dem SubmitButton auf der zweiten Seite die Seite neu auf und somit habe ich meine Variable nicht mehr.

Hier mal die Codes zum besseren Verständnis:

Seite1:
<?php

error_reporting(E_ALL);
require_once './Page.php';  

/**
 *
 */
class index extends Page
{

    protected function __construct()
    {
        parent::__construct();
    }

    protected function __destruct()
    {
        parent::__destruct();
    }

    protected function generateView()
    {
        $artikel = $this->getViewData();
        $this->generatePageHeader('Lagerverwaltung');  
        $this->generateMenu();
        echo <<< showHTML
        <h3>Infos</h3>
<!--Im bereich Einstellungen können neue Artikel und neue Lagerorte hinzugefügt und gelöscht werden.-->
<div class="artikelButtons"/>  

showHTML;

        foreach ($artikel as $key => $value) {
            $value = htmlspecialchars($value);
            echo <<< showHTML
  <!--<button type="button" class="submit submit1" onclick="window.location.href='test.php?artikelName=$value'">$value</button>-->  
  <form action="test.php" method="POST" name="myForm">  
  <input type="hidden" name="artName" value="$value"/>  
  <input type="submit" name="submitBtn" class="submit submit2" value="$value"/>  

  </form>

showHTML;
        }
        
        echo <<< showHTML

        </div>

showHTML;

        $this->generatePageFooter();
    }

    protected function getViewData()
    {
        $sql = 'SELECT material FROM material ORDER BY material;';  
        $recordset = $this->db->query($sql);

        if (!$recordset) {
            throw new Exception('Fehler bei der Datenbankabfrage', $sql);  
        }

        $artikelArray = array();
        $i = 0;

        while ($artikel = $recordset->fetch_assoc()) {
            $artikelArray[$i] = $artikel['material'];  
            ++$i;
        }
        $recordset->free();

        return $artikelArray;
    }

    protected function processReceivedData()
    {
    }

    public static function main()
    {
        try {
            $page = new self();
            $page->processReceivedData();
            $page->generateView();
        } catch (Exception $e) {
            header('Content-type:text/plain');  
            echo $e->getMessage();
        }
    }
}

index::main();

Seite 2:
<?php

error_reporting(E_ALL);
require_once './Page.php';  

/**
 *
 */
class test extends Page
{

    protected function __construct()
    {
        parent::__construct();
    }

    protected function __destruct()
    {
        parent::__destruct();
    }
    protected function processReceivedData()
    {


        $artikel = $this->db->real_escape_string($_POST['artikel']);  
        // if(isset($_POST['menge'])) { 
      //   $menge=$_POST['menge']; 
      //   if(!preg_match('/^[0-9]*$/', $menge)) { 
      //     echo '<script>alert("Es dürfen nur Zahlen verwendet werden");</script>'; 
      //     return false;
      //   }else {
      //     $menge= $this->db->real_escape_string($_POST['menge']); 
      //   }
      // }
        if (isset($_POST['speichern'])) {  
            // echo '<script>alert("Hallo");</script>'; 
            //if (isset($_POST['menge'])) { 
            $testInt = filter_var($_POST['menge'],FILTER_VALIDATE_INT);  
            if($testInt === false) {
              echo '<script>alert("Das ist kein integer");</script>';  
            }else{
              $menge = $this->db->real_escape_string($_POST['menge']);  
            }

            //}
            // if (isset($_POST['datum'])) { 
                $datum = $this->db->real_escape_string($_POST['datum']);  
            // }
            // if (isset($_POST['Kunde'])) { 
                $kunde = $this->db->real_escape_string($_POST['kunde']);  
            // }
            // if (isset($_POST['status'])) { 
                $status = $this->db->real_escape_string($_POST['status']);  
            // }
            $artikel = $this->db->real_escape_string($_POST['artikel']);  
            $this->storeData($artikel, $menge, $datum, $kunde, $status);
            // echo '<script>alert("Test");</script>'; 
        }
    }
    protected function storeData($artikel, $menge, $datum, $kunde, $status)
    {
        $sql = "INSERT INTO hasOption(artikel,menge,datum,kunde,status) VALUES('$artikel','$menge','$datum','$kunde','$status');";  
        mysqli_query($this->db, $sql);
        if (!$sql) {
            throw new Exception('Es ist ein Fehler aufgetreten', $sql);  
        }
    }

    protected function showOptions($artikel)
    {
        $sql = "SELECT artikel,menge,datum,kunde,status FROM hasOption WHERE artikel = '$artikel' ORDER BY datum;";  
        $recordset = $this->db->query($sql);
        if (!$recordset) {
            throw new Exception('Fehler bei der Datenbankabfrage', $sql);  
        }
        echo "<table border='2' cellspacing='2' cellpadding='2' id='stockTable'>";  
        echo '<tr><th>Artikel</th><th>Menge</th><th>Datum</th><th>Kunde</th><th>Status</th></tr>';  
        while ($options = $recordset->fetch_assoc()) {
            echo '<tr><td>'.htmlspecialchars($options['artikel']).'</td>'  
            .'<td>'. htmlspecialchars($options['menge']).'</td>'  
            .'<td>'. htmlspecialchars($options['datum']).'</td>'  
            .'<td>'. htmlspecialchars($options['kunde']).'</td>'  
            .'<td>'. htmlspecialchars($options['status']).'</td>'  
            .'</tr>';  
        }
        echo '</table>';  
        $recordset->free();
    }
    protected function generateView()
    {
        $artikel= $_POST['artName'];  
        $cookie = $_COOKIE['cookieArtikel'];  
        //$artikel = $_GET['artikelName']; 
        //$artikel = htmlspecialchars($artikel);
        $artikel=htmlspecialchars($artikel);
        $this->getViewData();
        $this->generatePageHeader('Lagerverwaltung');  
        $this->generateMenu();

        echo <<< showHTML
        <h1>$artikel</h1>
        <h2>$cookie</h2>
        <huge>Bestand: </huge>
        <form method="POST" action="test.php">  

        <!--Hidden-Field überträgt den Artikelnamen der von index.php übermittelt
        wurde in die Datenbank-->

        <input type="hidden" name="artikel" value="$artikel"/>  
        <label class="mobile">  
        <br/>
        <input type="text" size="10" name="menge" placeholder="Menge" id="menge"/>  
</label>
<label class="mobile">  
<br/>
        <input type="text" size="10" name="datum" placeholder="Datum" id="date"/>  
</label>

<label class="mobile">  
<br/>
        <input type ="text" size="10" name="kunde" placeholder="Kunde" id="kunde"/>  
</label>

<label class="mobile">  
<br/>
        <select name="status" size="1" id="status">  

        <option>Offen</option>
        <option>Bestätigt</option>
        <option>Bestätigt(mündl.)</option>
        </select>
        </label>

<input type="submit" name="speichern" class="submit submit1" value="speichern"/>  
</form>

showHTML;
        $this->showOptions($artikel);
        $this->generatePageFooter();
    }

    protected function getViewData()
    {
      // $cookie=$_COOKIE["cookieArtikel"]; 
      //
      // return $cookie;
    }

    public static function main()
    {
        try {
            $page = new self();
            $page->processReceivedData();
            $page->generateView();
        } catch (Exception $e) {
            header('Content-type:text/plain');  
            echo $e->getMessage();
        }
    }
}

test::main();

Ich hatte jetzt die Idee, das man das ja evtl. mit Cookies lösen könnte, oder was meint Ihr? Ich bekomme das nämlich nicht so ganz hin.

Danke mal wieder für die Unterstützung

Content-Key: 311016

Url: https://administrator.de/contentid/311016

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: 129813
Lösung 129813 27.07.2016 um 22:23:50 Uhr
Goto Top
For this purpose you normaly use session variables

Regards
Mitglied: tobmes
tobmes 28.07.2016 um 10:22:51 Uhr
Goto Top
Thanks for your answer, works fine.