claus: Variable

Hallo zusammen,

wie erreiche ich, dass eine Variable -in meinem Fall ein Array- auch nach dem Verlassen des PHP Teile eines Scripts weiterhin existent bleibt, so dass die Variable (Array, so wie es beim ersten Durchlauf definiert wurde) beim nächsten Durchlauf des PHP-Teiles des Scripts ansprechbar ist?
Ich meine, dass es grundsätzlich möglich sein sollte, da beispielsweise globale Variable wie $PHP_AUTH_USER oder $PHP_AUTH_PW auch nicht jedes Mal neu definiert werden müssen.

Für einen Tipp wäre ich sehr dankbar.

Dank im voraus!

Claus

  1. Hallo zusammen,

    das ist nicht ganz verständlich!
    meinst Du den Aufbau so?
    <?php
     blablub
     $var=1;
    ?>

    blablub

    <?
    echo $var;
    ?>

    das geht, alle Variablen die in derselben Datei stehen sind erreichbar, auch wenn das script unterbrochen wird, da logisherweise vom Server alle Befehle die in <??> -tags eingeschlossen sind ausführt.

    Oder meintest Du in verschiedenen Dateien?
    dazu müsstest Du die Variablen übergeben (session, formular->hiddenfeld, url)

    Variablen wie $PHP_AUTH_USER sind superglobal und somit überall erreichbar, es wäre aber nicht sauber solche Variablen nachzubilden.

    ach ja und wenn Du bestimmte Variablen in Funktionen, die Du selbst schreibst brauchst, führe sie dort mit - global $var - ein, dann musst Du sie nicht immer alle übergeben und zurückgeben

    hih
    romy

    Claus

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. Hallo zusammen,
      das ist nicht ganz verständlich!
      meinst Du den Aufbau so?
      <?php
       blablub
       $var=1;
      ?>

      blablub

      <?
      echo $var;
      ?>

      das geht, alle Variablen die in derselben Datei stehen sind erreichbar, auch wenn das script unterbrochen wird, da logisherweise vom Server alle Befehle die in <??> -tags eingeschlossen sind ausführt.

      Oder meintest Du in verschiedenen Dateien?
      dazu müsstest Du die Variablen übergeben (session, formular->hiddenfeld, url)

      Variablen wie $PHP_AUTH_USER sind superglobal und somit überall erreichbar, es wäre aber nicht sauber solche Variablen nachzubilden.

      ach ja und wenn Du bestimmte Variablen in Funktionen, die Du selbst schreibst brauchst, führe sie dort mit - global $var - ein, dann musst Du sie nicht immer alle übergeben und zurückgeben

      hih
      romy

      Claus

      Hallo romy,
      vielen Dank für Deine Antwort.
      Um meine Problem zu präzisieren nachfolgend der Code, mit dem ich nicht weiter komme:

      Ich bekomme die ID's von zwei unterschiedlichen Tabellen einer DB durch den folgenden Code:

      Tabelle 1/2

      <?php while ($daten = mysql_fetch_array($result)) { ?>
      <tr>

      <td><?php echo $daten[Wert1]; ?></td>
      <td><?php echo $daten[Wert2]; ?></td>
      <td><?php echo $daten[Wert3]; ?></td>
      <td><?php echo $daten[Wert4]; ?></td>
      <td><?php echo $daten[Wertnn]; ?></td>
      <td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[id].'' ?>">löschen</a></td>
      <td><a href="<? echo ''.$PHP_SELF.'?auswerten='.$daten[id].'' ?>">Auswerten</a></td>
      </tr>
      <?php } ?>
      </table>

      beim anklicken von "auswerten" wird die ID der entsprechenden Zeile einer Tabelle übergeben und an den PHP Teil derselben Datei übergeben wobei in der PHP-Sequenz, die die Auswertung vornimmt folgendes steht:
      Die PHP-Sequenz wird 2 mal aufgerufen und verzweigt entweder nach auswerten1 oder auswerten2.

      if($auswerten1) {
           $result_von_id1 = mysql_query("SELECT * FROM zeile WHERE                       id=$auswerten",$db);
           $myrow1 = mysql_fetch_row($result_von_id1);
           echo "$myrow1[$j] ";
                echo "$myrow2[$j] ";
      {

      if($auswerten2) {
           $result_von_id2 = mysql_query("SELECT * FROM zeile WHERE                       id=$auswerten2",$db);
           $myrow2 = mysql_fetch_row($result_von_id2);
           echo "$myrow1[$j] ";
                echo "$myrow2[$j] ";

      Das Problem ist, dass immer nur entweder $myrow1[] oder $myrow2[] ansprechbar ist und das jeweils andere Feld leer ist?!

      Gruß
      Claus

      1. Hallo romy,

        hallo Claus

        <tip> zitiere nur das was relevant ist </tip>

        <td><?php echo $daten[Wert1]; ?></td>

        was ist wert1? muss das nicht in "" l, denn wenn es eine variable wäre sollte ja ein $ davor sein!

        <td><a href="<? echo ''.$PHP_SELF.'?auswerten='.$daten[id].''

        daselbe hier mit id!

        if($auswerten1) {

        ^^^^^^^^^^^^^^^
        $auswerten oder $auswerten1 (oben steht nur auswerten und in der query-zeile benutzt du auch $auswerten

        $result_von_id1 = mysql_query("SELECT * FROM zeile WHERE                       id=$auswerten",$db);

        echo "$myrow1[$j] ";

        wo kommt $j her, ist das ganze in einer Schleife, wenn nicht prüfe ob $j vielleicht zweimal den gleichen wert hat, dann kann ja nichts unterschiedliches drinstehen!

        Gruß
        Claus

        liebe Grüsse
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. Hi romy,

          Du hast natürlich recht wenn Du sagst "zitiere nur was relevant ist"

          Der übersandte Code ist soweit korrekt, d.h. er bringt das von mir gewünschte Erbebnis, jedoch nur jeweils 1 mal. Das heißt wie oben erwähnt steht in der jeweiligen IF Sequenz entweder das Feld myrow1[] für die Weiterverarbeitung zur Verfügung oder myrow2[] und eben nicht beide was ja genau mein Problem ist. Du schreibst in Deiner ersten Antwort sinngemäß - wenn ich Dich richtig verstanden habe- dass wenn die Verarbeitung der Variablen in ein und derselbe Datei stattfindet  es auch möglich sein sollte die PHP Sequenz zu verlassen und die gewünschten Variablen bei einem späteren, erneuten Durchlauf wieder vorzufinden und zu verarbeiten; genau dies hätte ich auch erwartet - funktioniert bei mir aber nicht????

          Dank für Deine Mühe!

          Liebe Grüße
          Claus

          1. Hi Claus,

            Hi romy,

            Du hast natürlich recht wenn Du sagst "zitiere nur was relevant ist"

            war nicht böse gemeint, nur ein Hinweis ;)

            entweder das Feld myrow1[] für die Weiterverarbeitung zur Verfügung oder myrow2[] und eben nicht beide was ja genau mein Problem ist.

            <zitat vom Vorposting>
            if($auswerten1) {
                 $result_von_id1 = mysql_query("SELECT * FROM zeile WHERE                       id=$auswerten",$db);
                 $myrow1 = mysql_fetch_row($result_von_id1);
                 echo "$myrow1[$j] ";
                      echo "$myrow2[$j] ";
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            -> du kannst $myrow2[$j] noch nicht haben, da erst in der nächsten schleife $myrow2 definiert wird
            {

            if($auswerten2) {
                 $result_von_id2 = mysql_query("SELECT * FROM zeile WHERE                       id=$auswerten2",$db);
                 $myrow2 = mysql_fetch_row($result_von_id2);
                 echo "$myrow1[$j] ";
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      echo "$myrow2[$j] ";

            -> dasselbe gilt hier für myrow1, da dies in einem anderen Zweig ausgeführt wird (wenn er in den if-Zweig nicht reinspringt, wir ddie variable auch nicht gestzt)
            </zitat>

            Fazit: entweder Du definierst myrow2 und 2 ausserhalb der if-Anweisungen oder Du definierst beide in jeder if_anweisung!

            genau dies hätte ich auch erwartet - funktioniert bei mir aber nicht????
            doch! ;)

            Dank für Deine Mühe!

            ich hoffe jetzt ist es klar
            falls ich schon wieder was falsch vertsanden haben sollte, gib nicht auf, und poste mal die kompletten if-Anweisungen

            Liebe Grüße
            Claus

            ciao

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            ->Alles ist gut wenn es aus Schokolade ist
            1. Hi romy,

              Du hast natürlich recht wenn Du sagst "zitiere nur was relevant ist"
              war nicht böse gemeint, nur ein Hinweis ;)

              habe ich auch so verstanden

              -> dasselbe gilt hier für myrow1, da dies in einem anderen Zweig ausgeführt wird (wenn er in den if-Zweig nicht reinspringt, wir ddie variable auch nicht gestzt)
              ich bin davon ausgegangen, dass ich erst in den ersten IF Zweig spring, dort des Feld myrow1[] definiere, dann den PHP Teil verlasse, daran anschließend durch anklicken in meiner Tabelle den PHP-Teil erneut aufrufe und diesmal in den zweiten IF Zweig springe, hier das Feld myrow2[] definiere und zugleich aber auch jetzt im zweiten Durchlauf auch das im ersten Durchlauf bereits definierte Feld myrow1[] anprechen kann beispielsweise um die Werte beider Felder miteinander zu vergleichen.

              Fazit: entweder Du definierst myrow2 und 2 ausserhalb der if-Anweisungen oder Du definierst beide in jeder if_anweisung!

              meines Erachtens geht das in meinem Kontext nicht, da ich jeweils nacheinander eine Zeile einer mysql Tabelle auslese.
              Abstrahierter Ablauf:

              -Dargestellte Zeile von TAB1 anklicken -->damit ID an PHP übergeben (IF Sequenz1), dort Zeileninhalt gemäß ID auslesen und myrow1[] zuweisen --> PHP wird verlassen.
              -Dargestellte Zeile von TAB2 anklicken -->damit ID an PHP übergeben (IF Sequenz2), dort Zeileninhalt gemäß ID auslesen und myrow2[] zuweisen --> Vergleich dr Werte von myrow1[] mit Werten von myrow2[].
              --> Problem myrow1[] steht im zweiten Durchlauf nicht mehr zur Verfügung??

              Danke für Deine Geduld

              Servus
              claus

              1. Hi Claus,

                -Dargestellte Zeile von TAB1 anklicken -->damit ID an PHP übergeben (IF Sequenz1), dort Zeileninhalt gemäß ID auslesen und myrow1[] zuweisen --> PHP wird verlassen.
                -Dargestellte Zeile von TAB2 anklicken -->damit ID an PHP übergeben (IF Sequenz2), dort Zeileninhalt gemäß ID auslesen und myrow2[] zuweisen --> Vergleich dr Werte von myrow1[] mit Werten von myrow2[].

                ich wiederhole,was ich verstanden habe, okay...
                du hast eine tabelle mit Werten, die man löschen und anzeigen kann!
                tabelle

                wert1   loeschen1  anzeigen1
                wert2   loeschen2  anzeigen2

                hinter loeschen und anzeigen stehen links , die auf die gleiche seite verweisen und  dort soll dann was gemacht werden?
                was?
                was soll jetzt wo miteinander verglichen werden?
                wenn ich falsch liege, welche Bedeutung haben dann deine übergebenen Variablen

                ehrlich gesagt ist es etwas schwer, zu verstehen was Du möchtest! Kann an mir liegen, sorry ;)

                --> Problem myrow1[] steht im zweiten Durchlauf nicht mehr zur Verfügung??

                logischerweise, da Du ja mehrere Seitenaufrufe hast und natürlich ist jede Variable nur für einen Seitendurchlauf da, ausser du speicherst Sie in sessions oder verwendest eine ähnliche Technik!

                Servus
                claus

                ciao

                PS: bleib dran, wir schaffen das! ;)

                --
                DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
                ->Alles ist gut wenn es aus Schokolade ist
                1. Servus romy,

                  ich wiederhole,was ich verstanden habe, okay...
                  du hast eine tabelle mit Werten, die man löschen und anzeigen kann!
                  tabelle

                  wert1   loeschen1  anzeigen1
                  wert2   loeschen2  anzeigen2

                  hinter loeschen und anzeigen stehen links , die auf die gleiche seite verweisen und  dort soll dann was gemacht werden?
                  was?
                  was soll jetzt wo miteinander verglichen werden?
                  wenn ich falsch liege, welche Bedeutung haben dann deine übergebenen Variablen

                  ehrlich gesagt ist es etwas schwer, zu verstehen was Du möchtest! Kann an mir liegen, sorry ;)

                  ich poste mal den code vielleicht wird dann im Zusammenhang mit dem vorher Gesagten klar worauf ich hinaus möchte.
                  Kurz gesgt möchte ich die Zeilen zweier Tabellen einer DB miteinander vergleichen. Ich könnte mir gut vorstellen, dass mein Lösungsansatz nicht der Glücklichste ist.
                  Aber: Es liegt ganz bestimmt nicht an Dir

                  --> Problem myrow1[] steht im zweiten Durchlauf nicht mehr zur Verfügung??
                  logischerweise, da Du ja mehrere Seitenaufrufe hast und natürlich ist jede Variable nur für einen Seitendurchlauf da, ausser du speicherst Sie in sessions oder verwendest eine ähnliche Technik!

                  Dies dürfte die Erklärung für mein Problem sein.
                  Die Technik mit Sessions ist mir nicht geläufig aber Dein Hinweis darauf ist für mich schon mal ein Hoffnungsschimmer. Ich werde gleich mal versuchen mich schlau zu machen.
                  Nachfolgend der komplette Programmcode, vielleicht entdeckst Du ja einen grundsätzlichen Fehler in der "Logik" meines Lösungsansatzes.

                  <?php
                  if (!isset($PHP_AUTH_USER)
                        OR !@mysql_connect("localhost",
                                           $PHP_AUTH_USER,
                                           $PHP_AUTH_PW)) {
                      Header('HTTP/1.0 401 Unauthorized');
                      Header('WWW-Authenticate: Basic realm="DB Passwortgeschuetzt"');
                      echo "Neu anmelden. \n";
                      exit;
                                                          }

                  else{

                  //Verbindung herstellen
                       $db = mysql_connect("localhost", $PHP_AUTH_USER, $PHP_AUTH_PW);
                       //Datenbank auswaehlen
                       mysql_select_db("mydb",$db);
                       //Daten auslesen aus 2 Tabellen
                       $result = mysql_query("SELECT * FROM tabelle1", $db);
                       $z_result = mysql_query("SELECT * FROM tabelle2", $db);

                  //Daten löschen
                       if($clear) mysql_query("DELETE FROM tabelle1 WHERE id=$clear",$db);

                  //Werte gueltig setzen(fuer den Vergleich mit Tab2)
                       if($gueltig){
                       $z_result = mysql_query("SELECT * FROM tabelle2 WHERE id=$gueltig",$db)or die(mysql_error());
                       $myrow1 = mysql_fetch_array($z_result)or die(mysql_error());
                       echo "Zahl $myrow1[3] ";
                                   }

                  /*Reihe auslesen, die durch ID identifiziert wird und mit Werten aus Tab1 vergleichen*/
                      if($auswerten) {
                       $result = mysql_query("SELECT * FROM tabelle2 WHERE id=$auswerten",$db) or die(mysql_error());
                       $myrow2 = mysql_fetch_array($result)or die(mysql_error());

                  echo " Wert $myrow2[5] ";
                            echo "Wert $myrow1[3] ";
                                      }

                  /*Daten userspezifisch DB tabelle auslesen und in $result speichern*/
                       $result = mysql_query("SELECT * FROM tabelle1 where (name =                   '$PHP_AUTH_USER' AND passwd = '$PHP_AUTH_PW')", $db);

                  /*Daten aus DB tabelle  auslesen und in $z_result speichern*/
                       $z_result = mysql_query("SELECT * FROM tabelle2", $db);

                  }
                  ?>

                  <html>
                  <head>
                  <title>Datenbankinhalt auslesen</title>
                  <meta name="author" content="CG">
                  <meta name="generator" content="Ulli Meybohms HTML EDITOR">
                  </head>
                  <body text="#000000" bgcolor="#FFFFFF" link="#D80000" alink="#FFA000" vlink="#FF8080">
                  </body>

                  <table border="1" cellpadding="1">
                  <caption>Werte Tab1</caption>
                  <tr>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>ID</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>z1</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>z2</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>z3</b></th>
                  <th bgcolor=#00B0B0 bordercolor=#FF0078><b>Reihe auswerten</b></th>
                  <!--<td> </td>
                  <td> </td>
                  -->
                  </tr>
                  <?php while ($daten = mysql_fetch_array($result)) { ?>
                  <tr>
                  <td><?php echo $daten[id]; ?></td>
                  <td><?php echo $daten[Wert1]; ?></td>
                  <td><?php echo $daten[Wert2]; ?></td>
                  <td><?php echo $daten[Wert3]; ?></td>
                  <td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[id].'' ?>">löschen</a></td>
                  <td><a href="<? echo ''.$PHP_SELF.'?auswerten='.$daten[id].'' ?>">Auswerten</a></td>
                  </tr>
                  <?php } ?>
                  </table>

                  <br>
                  <br>
                  <br>

                  <table border="1" cellpadding="1">
                  <caption>Werte Tab2</caption>
                  <tr>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>id</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>Jahr</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>Nr</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>Werte1</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>Werte2</b></th>
                  <th bgcolor=#00B0FF bordercolor=#FF0078><b>Werte3</b></th>
                  <th bgcolor=#00B0B0 bordercolor=#FF0078><b>gueltig</b></th>
                  </tr>
                  <?php while ($z_daten = mysql_fetch_array($z_result)) { ?>
                  <tr>
                  <td><?php echo $z_daten[id]; ?></td>
                  <td><?php echo $z_daten[jahr]; ?></td>
                  <td><?php echo $z_daten[lfdznummer]; ?></td>
                  <td><?php echo $z_daten[Wert1]; ?></td>
                  <td><?php echo $z_daten[Wert2]; ?></td>
                  <td><?php echo $z_daten[Wert3]; ?></td>
                  <td><a href="<? echo ''.$PHP_SELF.'?gueltig='.$z_daten[id].'' ?>">gueltig</a></td>
                  </tr>
                  <?php } ?>
                  </table>

                  </html>

                  Gruß und Dank
                  Claus

                  1. Servus romy,

                    Hi

                    Puh...
                    also, Du hast zwei Tabellen untereinander stehen, die erste enthält in jeder Spalte einen auswerten-link
                    die zweite einen link "gültig"
                    Das Ziel ist, die zwei Spalten miteinander zu vergleichen, richtig
                    (verstehe ich zwar nicht, da die Daten angezeigt werden, sieht man doch ob sie gleich sind oder nicht. Was soll da die auswertung ergeben?)

                    was Du machen könnest, wäre ein link ganz untendrunter zur auswertung, welchem Du beide id's mitgibst-> dann die jeweiligen Datensätze ausliest und vergleichst in einer Funktion und in einem Ritt
                    wenn Du das nicht willst:
                    geh den umständlicheren Weg: speichere den wert der auswertung in eine session und merk ihn dir damit, dann kannst du auchnoch nach ehrmaligem Seitenaufruf, darauf zugreifen, ist aber nicht zu empfehlen!

                    ausserdem, guck nochmals durch den Code, aber ich denke, die zwei letzten sql-anweisungen bevor der html-code kommt brauchst du nicht, da diese nur das Ergebnis von oben überschreiben und auch nichts anderes machen

                    Gruß und Dank
                    Claus

                    --
                    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
                    ->Alles ist gut wenn es aus Schokolade ist
                    1. Hallo romy,
                      also jetzt bin ich auf jeden Fall -Dank Eurer Hilfe- schon mal weiter gekommen; soll heißen, ich weiß jetzt warum mein erster Ansatz nicht funktioniert hat und habe Impulse bekommen, wie ich mein Ziel erreichen kann. Als nächstes werde ich mich mit Deinen Vorschlägen auseinandersetzen.

                      Also, nochmals herzlichen Dank
                      Gruß
                      Claus

                      1. Hallo romy,
                        mir wäre die folgende, von Dir vorgeschlagene Lösung sympathisch:

                        was Du machen könnest, wäre ein link ganz untendrunter zur auswertung, welchem Du beide id's mitgibst-> dann die jeweiligen Datensätze ausliest und vergleichst in einer Funktion und in einem Ritt

                        Nur, wie mache ich das mit link ganz unten, wie gebe ich dem Link beide ID's der beiden angezeigten Tabellen mittels anklicken der jeweiligen Tabellenzeile mit?

                        Vielleicht kannst Du mir noch etwas auf die Sprünge helfen.
                        Gruß
                        Claus

                        1. Hallo romy,

                          Hi Claus

                          Nur, wie mache ich das mit link ganz unten, wie gebe ich dem Link beide ID's der beiden angezeigten Tabellen mittels anklicken der jeweiligen Tabellenzeile mit?

                          das geht natürlich nicht ganz so, weil ich annehme, dass Du verschiedene Spalten der beiden Tabellen miteinander vergleichen willst!

                          Also würde ich sagen, am Einfachsten wäre, wenn anstatt der links Checkboxen in jeder Tabellenspalte stehen und der user jeweils eine aus jeder Tabelle anklicken muss.
                          Also
                          Tabelle 1

                          spalte1 spalte2 spalte3 checkbox1 (mit Value="row_id")
                          spalte1 spalte2 spalte3 checkbox1 (mit Value="row_id")
                          spalte1 spalte2 spalte3 checkbox1 (mit Value="row_id")

                          dasselbe mit Tabélle 2

                          dann gibt es einen Button auswerten, dieser schickt das die daten an dieselbe Seite, Du kannst dann in einer Funktion die beiden checkboxen auswerten und mit den übergebenen Id's die Überprüfung durchfühen!

                          if($checkboxname1 || $checkboxname2) {
                              selectanweisung 1;
                              selectanweisung 2;
                              auswerten;
                          }

                          gehts jetzt so, wenn nicht poste noch mal...ich werd morgen nochmal gucken!

                          ciao
                          und schönen ersten Advent
                          romy

                          Gruß
                          Claus

                          --
                          DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
                          ->Alles ist gut wenn es aus Schokolade ist
              2. Moin!

                Abstrahierter Ablauf:

                -Dargestellte Zeile von TAB1 anklicken -->damit ID an PHP übergeben (IF Sequenz1), dort Zeileninhalt gemäß ID auslesen und myrow1[] zuweisen --> PHP wird verlassen.
                -Dargestellte Zeile von TAB2 anklicken -->damit ID an PHP übergeben (IF Sequenz2), dort Zeileninhalt gemäß ID auslesen und myrow2[] zuweisen --> Vergleich dr Werte von myrow1[] mit Werten von myrow2[].
                --> Problem myrow1[] steht im zweiten Durchlauf nicht mehr zur Verfügung??

                Immer wenn PHP verlassen wird, werden alle vorhandenen Variablen gelöscht und stehen beim nächsten Start nicht mehr zur Verfügung. Deshalb funktioniert deine Programmierung auch nicht.

                Lösungsmöglichkeiten: Wenn du zwei Dinge auswählen willst, dann kannst du
                1. das in _einem_ Formular realisieren, indem du zwei Reihen Radiobuttons verteilst für "erste Auswahl", "zweite Auswahl", und dann mit dem abgeschickten Formular in _einem_ Schritt arbeitest und vergleichst etc.

                2. die erste Auswahl nur kurz entgegennehmen und als Parameter an jeden Link dranhängen, den du auf der Seite für die zweite Auswahl ausgibst. Die zweite Seite arbeitet dann wie bei Lösung 1 alles auf einmal ab.

                3. Sessions wären grundsätzlich auch eine Möglichkeit, um Variablen von der einen Seite zur nächsten zu tragen, sie empfehlen sich hier aber nicht, weil sie viel zuviel Aufwand wären.

                - Sven Rautenberg

                --
                Diese Signatur gilt nur am Freitag.
          2. Moin!

            Hi romy,

            Du hast natürlich recht wenn Du sagst "zitiere nur was relevant ist"

            Der übersandte Code ist soweit korrekt,

            Nein, ist er nicht.

            Du spricht Elemente in Hashes mit [Wert1] an. Entweder hast du irgendwo die Konstante Wert1 definiert, die den entsprechenden Wert hat, oder du meinst den Hash-Eintrag mit dem Schlüsselnamen "Wert1", dann schreibe bitte ['Wert1'] bzw. ["Wert1"]. Oder du meinst den Schlüsselnamen, der in der Variablen $Wert1 steht, dann schreibe [$Wert1].

            Siehe dazu auch http://www.php.net/manual/de/language.types.array.php -> Array Do's and don'ts; "Warum ist $foo[bar] falsch?"

            d.h. er bringt das von mir gewünschte Erbebnis, jedoch nur jeweils 1 mal.

            Das etwas funktioniert, beweist nicht, dass es richtig ist. Der IE macht auch viel richtig, obwohl der Code definitiv falsch ist.

            Das heißt wie oben erwähnt steht in der jeweiligen IF Sequenz entweder das Feld myrow1[] für die Weiterverarbeitung zur Verfügung oder myrow2[] und eben nicht beide was ja genau mein Problem ist.

            Logisch: Du fragst die Variablen $auswerten1 und $auswerten2 ab. In jedem IF-Bereich wird dann aber entweder myrow1 _oder_ myrow2 gefüllt, und dann werden beide jeweils ausgegeben - was sinnlos ist, denn entweder füllst du myrow1 und gibst auch nur myrow1 aus, oder umgekehrt. Wenn du myrow1 füllst, ist in myrow2 nichts enthalten, was man ausgeben könnte.

            »»Du schreibst in Deiner ersten Antwort sinngemäß - wenn ich Dich richtig verstanden habe- dass wenn die Verarbeitung der Variablen in ein und derselbe Datei stattfindet  es auch möglich sein sollte die PHP Sequenz zu verlassen und die gewünschten Variablen bei einem späteren, erneuten Durchlauf wieder vorzufinden und zu verarbeiten; genau dies hätte ich auch erwartet - funktioniert bei mir aber nicht????

            Die gleiche PHP-Datei für die Verarbeitung von eingegebenen Daten wieder aufzurufen funktioniert prima und ist definitiv die bessere Variante (alternativ könnte man ja eine andere PHP-Datei aufrufen). Nur müßten wir mehr wissen. Du hast immer nur auszugsweise Code zitiert und dein Problem bzw. das, was gemacht werden soll, immer noch nicht vollständig beschrieben. Insofern fällt Hilfe zur Selbsthilfe schwer.

            - Sven Rautenberg

            --
            Diese Signatur gilt nur am Freitag.
            1. Moin!

              Der übersandte Code ist soweit korrekt,

              Nein, ist er nicht.

              Du spricht Elemente in Hashes mit [Wert1] an. Entweder hast du irgendwo die Konstante Wert1 definiert, die den entsprechenden Wert hat, oder du meinst den Hash-Eintrag mit dem Schlüsselnamen "Wert1", dann schreibe bitte ['Wert1'] bzw. ["Wert1"]. Oder du meinst den Schlüsselnamen, der in der Variablen $Wert1 steht, dann schreibe [$Wert1].

              Ich werde das in meinem Code prüfen.

              Das etwas funktioniert, beweist nicht, dass es richtig ist. Der IE macht auch viel richtig, obwohl der Code definitiv falsch ist.

              Da kann ich Dir grundsätzlich nur beipflichten.

              Logisch: Du fragst die Variablen $auswerten1 und $auswerten2 ab. In jedem IF-Bereich wird dann aber entweder myrow1 _oder_ myrow2 gefüllt, und dann werden beide jeweils ausgegeben - was sinnlos ist, denn entweder füllst du myrow1 und gibst auch nur myrow1 aus, oder umgekehrt. Wenn du myrow1 füllst, ist in myrow2 nichts enthalten, was man ausgeben könnte.

              Ziel ist die Werte der beiden Felder myrow1[] und myrow2[] miteinander zu vergleichen.

              Die gleiche PHP-Datei für die Verarbeitung von eingegebenen Daten wieder aufzurufen funktioniert prima und ist definitiv die bessere Variante (alternativ könnte man ja eine andere PHP-Datei aufrufen). Nur müßten wir mehr wissen. Du hast immer nur auszugsweise Code zitiert und dein Problem bzw. das, was gemacht werden soll, immer noch nicht vollständig beschrieben. Insofern fällt Hilfe zur Selbsthilfe schwer.

              - Sven Rautenberg

              Dank für Deine Hilfe
              Servus
              claus

  2. Moin!

    wie erreiche ich, dass eine Variable -in meinem Fall ein Array- auch nach dem Verlassen des PHP Teile eines Scripts weiterhin existent bleibt, so dass die Variable (Array, so wie es beim ersten Durchlauf definiert wurde) beim nächsten Durchlauf des PHP-Teiles des Scripts ansprechbar ist?

    Benutze Sessions. Oder übergebe die relevanten Informationen als URL-Parameter in den Links, die du ausgibst, bzw. als Hidden-Feld in Formularen, die du erzeugst.

    Mit anderen Worten: Sorge dafür, dass die Werte, die dich interessieren, vom Benutzer beim nächsten mal wieder ans Skript gesendet werden - und beachte, dass der Benutzer dich ärgern kann und diesen Wert möglicherweise verändert, bevor du ihn erhälst.

    Ich meine, dass es grundsätzlich möglich sein sollte, da beispielsweise globale Variable wie $PHP_AUTH_USER oder $PHP_AUTH_PW auch nicht jedes Mal neu definiert werden müssen.

    Diese Variablen _werden_ aber wirklich bei jedem PHP-Skriptablauf neu definiert - entsprechend der aktuellen Gegebenheiten. Der Browser schickt bei jeder Anfrage Benutzername und Passwort an den Server, und der Server schiebt die Angaben in die beiden Variablen. Damit ist sichergestellt, dass du immer von korrekten Werten ausgehst. Würde das nicht so funktionieren, dann könntest du ja niemals zwei Benutzer gleichzeitig bedienen, weil der Variableninhalt immer gleich bleiben würde.

    - Sven Rautenberg

    --
    Diese Signatur gilt nur am Freitag.