Daten temporär Speichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten temporär Speichern

    Hallo an alle,

    ich hab noch nich allzulange mit PHP zu tun, hab mich aber schon durch einige Themen hier im Forum gewühlt.

    Jetzt bin ich jedoch an einem Problem angelangt. Wenn jemand einen vorschlag hat würde ich mich über eine Antwort freuen.

    Also, folgendes Problem:

    PHP-Code:

    <?

    //Arrays definieren



    $bestellung = array();

    if ($_POST['anzahl'] != ""){

    $anzahl = $_POST['anzahl'];
    $artikel = $_POST['artikel'];
    $beschreibung = $_POST['beschreibung'];
    $bild = $_POST['bildpfad'];

    $datensatz = array("anzahl" => $anzahl, "artikel" => $artikel, "beschreibung" => $beschreibung, "bild" => $bild);
    $bestellung[] = $datensatz;

    }


    $zu = chr(13).chr(10); // zu = Zeilenumbruch

    //Datei zum zwischenspeichern anlegen

    $bstdatei = $benutzer.".txt";

    if (!file_exists($bstdatei)){
        $dz = fopen($bstdatei, "w");
        fclose($dz);
    }





    ?>

    //Hier folgt HTML Code

    <?

    echo "<table border=\"0\" align=\"center\" width=\"95%\" cellpadding=\"0\" cellspacing=\"3\">";
    echo "<tr><td width=\"25%\" align=\"center\"><b>Artikel</b></td><td width=\"6%\" align=\"center\">
    <b>Anzahl</b></td><td width=\"*\" align=\"center\"><b>Beschreibung</b></td><td width=\"60\" align=\"center\"><b>Bild</b></td></tr>";
    echo "</table>";
    echo "<hr align=\"center\" width=\"95%\" color=\"white\" size=\"3\">";
    echo "<table border=\"0\" align=\"center\" width=\"95%\" cellpadding=\"0\" cellspacing=\"3\">";

    //array ausgeben

    /*    $ds_anzahl = count($bestellung);
        for($zaehl = 0; $zaehl == $ds_anzahl -1; $zaehl++){
        $datensatz = $bestellung[$zaehl]; */



    foreach ($bestellung as $zaehl => $datensatz)  
    {
        $anzahl = $datensatz["anzahl"];
        $artikel = $datensatz["artikel"];
        $beschreibung = $datensatz["beschreibung"];
        $bild = $datensatz["bild"];

        if ($artikel != ""){
        
        if($bild == ""){
            $bild = "./bilder/kein_bild.png";
        }
        
        } 


        echo " <tr><td width=\"25%\" align=\"center\">&nbsp;".$artikel."</td><td width=\"6%\" align=\"center\">&nbsp;".$anzahl."
    </td><td width=\"*\" align=\"center\">&nbsp;".$beschreibung."</td><td width=\"60\" align=\"center\"><img src=\"
    ".$bild."\" alt=\"BILD\" width=\"50\" height=\"50\"></td></tr> ";
    }


    echo "</table>";
    echo "<hr align=\"center\" width=\"95%\" color=\"white\" size=\"3\">";
    ?><form method="post" action="./bestellung_neu.php?be=<?=$benutzer?>&pa=<?=$passwort?>&bk=<?=$benutzer_ok?>
    &sp=urlencode(serialize(<?=$speicher?>))"><?
    echo "<table border=\"0\" align=\"center\" width=\"95%\" cellpadding=\"0\" cellspacing=\"3\">";

    //Daten einlesen

    echo "<tr><td align=\"center\" width=\"25%\"><b>Artikel:</b><br><input name=\"artikel\" 
    type=\"Text\" size=\"25\"></td><td width=\"10%\" align=\"center\"><b>Anzahl:</b><br><input name=\"anzahl\" type=\"Text\" size=\"10\">
    </td><td rowspan=\"3\" width=\"25%\" align=\"center\"><b>Beschreibung:</b><br><textarea name=\"beschreibung\" 
    cols=\"25\" rows=\"4\"></textarea></td><td width=\"25%\" align=\"center\"><b>Bildpfad:</b>
    <br><input name=\"bildpfad\" type=\"Text\" size=\"25\"></td></tr>";
    echo "<tr height=\"18\"><td></td><td> </td><td> </td></tr>";
    echo "<tr><td></td><td> </td><td align=\"center\"><input name=\"Eintrag\" type=\"submit\"
    value=\"Hinzuf&uuml;gen\"></td></tr>";
    echo "<tr><td></td><td> </td><td> </td><td align=\"center\"></td></tr>";
    echo "</table>";
    echo "<br><hr align=\"center\" width=\"95%\" color=\"white\" size=\"3\">";

    ?>
    Ein Bild wie das ganze aussieht gibt es hier:

    www.liemehna-lan.de/downloads/scrshot.JPG

    Mein Problem:

    Ich möchte unten in den Feldern etwas eingeben können, was dann mit
    jedem Eintrag darüber dargestellt wird. Wenn ich aber auf Hinzufügen
    klicke (link auf sich selbst) dann wird das Array geleert, wenn die Seite
    erneut geladen wird. Ich möchte dass die Daten wenn ich hinzufügen
    anklicke in eine Datei geschrieben werden. Wenn die Seite neu geladen
    wird sollen folglich die Einträge zeilenweise wieder ausgelesen werden
    und dann in das Array welches oben definiert ist geschrieben werden.
    Das Ergebnis soll dan sein das ich den Inhalt des Arrays in eine SQL-
    Tabelle schreiben kann. Wie das mit dem zeilenweise Auslesen ist weiss
    ich, aber ich brauch bitte einen Vorschlag wie ich Mehrere Datensätze so
    in die Textdatei schreibe, dass ich dann hinterher Zeile für Zeile auslesen kann.

    Auf das Problem komme ich, weil wenn ich de Seite erneut laden lasse (mit
    klick auf Hinzufügen) dann steht immer nur ein Artikel da, das Array merkt
    sich das nicht.

    Mit Sessionvariablen hab ich es auch schon Probiert, aber das hat auch nich geklappt.

    Danke schonmal im Vorraus.

    MfG Parthekind
    Zuletzt geändert von Parthekind; 02.11.2005, 11:04.
    ~~~~~~~~~~~~~~~~~~~~~

    Am Ende ist doch der Provider der Sieger.

  • #2
    Re: Daten temporär Speichern

    Original geschrieben von Parthekind
    Mit Sessionvariablen hab ich es auch schon Probiert, aber das hat auch nich geklappt.
    Sessions sind aber m.E. für das, was du vorhast (sofern ich das Gebrabbel denn richtig verstanden habe), immer noch die geeignetste Technik.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      sessionvariablen

      ich hab das schon mehrmals probiert. vielleicht könntset du mir ja einen quelltextvorschlag mal als beispiel posten.
      ~~~~~~~~~~~~~~~~~~~~~

      Am Ende ist doch der Provider der Sieger.

      Kommentar


      • #4
        Hi,

        also das Hauptproblem wird sein, dass du deine temp. Datei nicht ausliest! Dein Array $bestellung[] enthält immer nur den Datensatz aus $POST. Nachdem das Script fertig ist, wird $bestellung[] ja gelöscht und die Daten sind beim erneuten Aufruf des Scripts nicht mehr verfügbar.
        Im übrigen würde ich auch auf Sessionvariablen umstellen bzw. die Daten sofort in die DB schreiben.

        Grüße

        Enrico

        Kommentar


        • #5
          Re: sessionvariablen

          Original geschrieben von Parthekind
          ich hab das schon mehrmals probiert. vielleicht könntset du mir ja einen quelltextvorschlag mal als beispiel posten.
          Nein, mit Sessions umgehen zu können, zähle ich zum Grundlagenwissen.
          Wer's nicht beherrscht, soll es halt erst an einfacheren Beispielen üben, bis er absolut verstanden hat, wie Sessions funktionieren.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            @ enno19 ich weiss, denn ich hab keinen plan wie ich die daten im richtigen format in die datei schreibe wenn ich auf hinzufügen klicke.

            @wahsaga ok, hast recht, ich schau mir das nochmal an. trotzdem würde ich gerne wissen wie ich die daten im richtigen format in die textdatei bekomme.
            ~~~~~~~~~~~~~~~~~~~~~

            Am Ende ist doch der Provider der Sieger.

            Kommentar


            • #7
              das format ist doch egal, kannst du machen, wie du willst, must nur einen eindeutigen trenner für die daten nehmen z.b. | oder machst ne einfache csv. ein weiterer einfacher punkt: jede zeile ist ein datensatz.
              aber nochmal am einfachsten geht das sicher mit der session, da kannst auch in eine sessionvariable ganze arrays oder objekte reinlegen oder du speicherst deine sachen gleich in die db, da sie da ja eh rein sollen.

              enrico

              Kommentar


              • #8
                ich probier das nochmal, danke
                ~~~~~~~~~~~~~~~~~~~~~

                Am Ende ist doch der Provider der Sieger.

                Kommentar


                • #9
                  re session variablen

                  Also ich habe jetzt auf meiner login - seite einmalig eine variable deklariert.

                  PHP-Code:

                  <?
                  $bestellung_a = array;
                  session_register($bestellung_a);
                  ?>
                  und auf meiner bestell-seite schreibe ich die daten die per post an die selbe seite übergeben werden in ein array datensatz, welches dann an das array bestellung angehängt wird.

                  PHP-Code:

                  <?

                  if ($_POST['anzahl'] != ""){

                  $anzahl = $_POST['anzahl'];
                  $artikel = $_POST['artikel'];
                  $beschreibung = $_POST['beschreibung'];
                  $bild = $_POST['bildpfad'];

                  $datensatz = array("anzahl" => $anzahl, "artikel" => $artikel, "beschreibung" => $beschreibung, "bild" => $bild);


                  session_start();

                  $bestellung_a[] = $datensatz;

                  }

                  ?>

                  // html - code

                  <?

                  //array ausgeben


                  if (count($bestellung_a) > 0){  //wenn in $bestellung_a etwas drin steht
                  foreach ($bestellung_a as $zaehl => $datensatz2)  //soll jeweils ein datensatz ausgelesen und dargestellt werden
                      {
                      $anzahl = $datensatz["anzahl"];
                      $artikel = $datensatz["artikel"];
                      $beschreibung = $datensatz["beschreibung"];
                      $bild = $datensatz["bild"];

                      if ($artikel != ""){
                      
                          if($bild == ""){
                          $bild = "./bilder/kein_bild.png";
                          }
                      
                      } 

                      echo " <tr><td width=\"25%\"
                   align=\"center\">&nbsp;".$artikel."</td><td width=\"6%\"
                   align=\"center\">&nbsp;".$anzahl."</td><td width=\"*\"
                   align=\"center\">&nbsp;".$beschreibung."</td><td width=\"60\"
                   align=\"center\"><img src=\"".$bild."\" alt=\"BILD\" width=\"50\"
                   height=\"50\"></td></tr> ";
                  }
                  }
                  leider wird aber bei der darstellung immer nur 1 zeile dargestellt, dass heisst das in dem array $bestellung_a immer der erste datensatz überschrieben wird.

                  PHP-Code:

                  //durch dieses fpormular werden die daten an die seite selbst übergeben

                  <form method="post" action="./bestellung_neu.php?be=<?=$benutzer?>&pa=<?=$passwort?>&bk=<?=$benutzer_ok?>">

                  <?
                  echo "<table border=\"0\" align=\"center\" width=\"95%\" cellpadding=\"0\" cellspacing=\"3\">";

                  //Daten einlesen

                  echo "<tr><td align=\"center\" width=\"25%\"><b>Artikel:</b><br>
                  <input name=\"artikel\" type=\"Text\" size=\"25\"></td>
                  <td width=\"10%\" align=\"center\"><b>Anzahl:</b><br>
                  <input name=\"anzahl\" type=\"Text\" size=\"10\"></td>
                  <td rowspan=\"3\" width=\"25%\"
                  align=\"center\"><b>Beschreibung:</b><br>
                  <textarea name=\"beschreibung\" cols=\"25\" rows=\"4\"></textarea></td><td width=\"25%\" align=\"center\">
                  <b>Bildpfad:</b><br><input name=\"bildpfad\" type=\"Text\" size=\"25\"></td></tr>";
                  echo "<tr height=\"18\"><td></td><td> </td><td> </td></tr>";
                  echo "<tr><td></td><td> </td><td align=\"center\"><input name=\"Eintrag\" type=\"submit\" value=\"Hinzuf&uuml;gen\"></td></tr>";
                  echo "<tr><td></td><td> </td><td> </td><td align=\"center\"></td></tr>";
                  echo "</table>";
                  echo "<br><hr align=\"center\" width=\"95%\" color=\"white\" size=\"3\">";

                  ?>
                  </form>
                  bitte kann mir jemand sagen wo der fehler liegt?
                  ~~~~~~~~~~~~~~~~~~~~~

                  Am Ende ist doch der Provider der Sieger.

                  Kommentar


                  • #10
                    Re: re session variablen

                    session_register soll nicht mehr benutzt werden - RTFM.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Hi,

                      das http-Protokoll ist Verbindungslos. Damit man aber Informationen speichern kann gibt es u.a. Sessions. Dazu muss aber auf _jeder_ Seite ein session_start() erfolgen, damit der Aufruf des Scriptes einer bestimmten Session zugeordnet werden kann. (SesID kommt aus Cookie oder URL).

                      siehe: http://de2.php.net/manual/de/ref.session.php

                      Des Weiteren übergibst du auf deiner Bestellseite nicht der Variablen in der Session deine Datensätze, sondern der "lokalen" Variable $bestellung_a[].

                      Versuch mal bitte folgendes:
                      PHP-Code:
                      $_SESSION[$name] = $value
                      Lass bitte erstmal die ganze Geschichte mit dem Bestellen weg und übe mit einfachen Scripten!!

                      Grüße

                      Enrico

                      Kommentar


                      • #12
                        re

                        ich RTFM:

                        http://www.php.net/manual/de/function.session-start.php

                        und angrenzende seiten

                        zb. http://www.php.net/manual/de/ref.session.php

                        ich hab noch ne php5 refferenz hier, da steht es genau so drin.
                        Zuletzt geändert von Parthekind; 03.11.2005, 10:59.
                        ~~~~~~~~~~~~~~~~~~~~~

                        Am Ende ist doch der Provider der Sieger.

                        Kommentar


                        • #13
                          dann guckst du noch hier:

                          http://de2.php.net/manual/de/functio...n-register.php

                          da steht:

                          PHP-Code:
                          // Sie sollten session_register() nicht verwenden
                          $barney "A big purple dinosaur.";
                          session_register("barney");

                          // Ab PHP 4.1.0 ist die Verwendung von $_SESSION vorzuziehen
                          $_SESSION["zim"] = "An invader from another planet.";

                          // Die alte Methode war, $HTTP_SESSION_VARS zu verwenden
                          $HTTP_SESSION_VARS["spongebob"] = "He's got square pants."

                          Kommentar


                          • #14
                            re

                            soweit ich das verstanden habe ist laut meiner definition $bestellung_a superglobal, oder nich?

                            das heisst meiner meinung nach wenn ich die einmal beim login deklariere, isst die dann solange verfügbar, bist der browser geschlossen wird, oder die session beendet wird.

                            ich möchte mit meinem script folgendes erreichen:

                            am ende der seite möchte ich daten eingeben, siehe bild weiter oben,
                            und möchte diese darüber beim erneuten aufrufen der seite wieder darstellen.

                            mein problem ist nur, dass das array immer wieder überschrieben wird, sodass sich immer der erste datensatz des arrays $bestellung_a ändert. aber wenn $bestellung:a superglobal ist, dann müsste es doch sich den inhalt merken und dann neue werte hinzufügen.

                            das session_start() habe ich so platziert, das es vor der bearbeitung von $bestellung_a kommt.
                            ~~~~~~~~~~~~~~~~~~~~~

                            Am Ende ist doch der Provider der Sieger.

                            Kommentar


                            • #15
                              nein, $bestellung_a ist so nicht superglobal!!

                              dass hier ist superglobal:

                              PHP-Code:
                              $_SESSION["$bestellung_a"

                              Kommentar

                              Lädt...
                              X