1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

PHP globale variable + post..

    • Frage
  • sommeralex
  • 17. Juli 2006 um 01:30
  • Unerledigt
  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 17. Juli 2006 um 01:30
    • #1

    Ich bin am Verzweifeln.. das Problem: mein simple-snippet funktioniert nicht. Idee: 2 Formulare in einer PHP Seite. Jedes Formular besitzt 2 Buttons. Button1 um sich selbst aufzurufen, Button2 um das jeweils andere Formular aufzurufen. Jedes Formular hat eine TextBox. Der Inhalt der Textbox wird bei(m) POST(en) in die globale variable geschrieben. Witzigerweise wird der Wert auch mitgenommen und aus der globalen variabeln ausgeschrieben. Beim Zurück-Wechseln des Formulars auf sich selbst liest er jedoch keine Werte mehr aus..

    <?php

    global $items, $step;


    if($_POST) {

    if(isset($_POST['S1'])) {

    if(!empty($_POST['beruf'])){

    $items['beruf'] = $_POST['beruf'];

    }


    if (!empty($_POST['alter'])){
    $items['alter'] = $_POST['alter'];
    echo $items['alter'];
    }
    else{
    echo "POST[S1] empty!";
    }

    echo "alter ist: ";
    echo $items['alter'];
    $step = 1;

    }


    else if(isset($_POST['S2'])) {

    if(!empty($_POST['alter'])){

    $items['alter'] = $_POST['alter'];

    }


    if (!empty($_POST['beruf'])){
    $items['beruf'] = $_POST['beruf'];
    echo $items['beruf'];


    }
    else{
    echo "POST[S2] empty!";
    }

    $step = 2;

    }

    }


    if (empty($step)){

    $step = 1;

    }


    if ($step == 1){
    ?> S1Beruf
    <form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="beruf" value ="<?php echo $items['beruf']; ?>">
    <input type="submit" name="S1" value="Submit1">
    <input type="submit" name="S2" value="Submit2">
    </form>

    <?php
    }
    if ($step == 2){
    ?>
    S2Alter
    <form name="form2" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="alter" value ="<?php echo $items['alter']; ?>">
    <input type="submit" name="S1" value="Submit1">
    <input type="submit" name="S2" value="Submit2">

    </form>

    <?php
    }

    ?>

  • bimbo
    15
    bimbo
    Mitglied
    Reaktionen
    15
    Punkte
    2.320
    Beiträge
    390
    • 17. Juli 2006 um 08:29
    • #2

    was genau verstehst unter

    Zitat

    Zurück-Wechseln des Formulars auf sich selbst

    das problem ist, das natürlich nur die formularwerte übertragen werden die auch im aktuellen formular drinnen stehen. wenn also Form2 submited wird, ist nur mehr der $_POST['alter'] gesetzt.

    eventuall liegt da (ich spiele auf den post von dir wegen den globals an) ein vertändnis problem vor. "global" bedeutet nur, das die variable innerhalb einer funktion lesbar ist. wenn du variablen "weiterereichen" willst - in deinem fall "beruf" auch nach dem abschicken des 2ten formulars haben willst, muss du es auch als (verstecktes) element in das formular eintragen.


    wenn du folgendes noch ins form2 einträgst sollte das ergebnis also passen.

    PHP
    <input type="hidden" name="beruf" value ="<?php echo $items['beruf']; ?>">

    ich hoff ich war vertsändlich :)

    LVA Erfahrungsberichte: http://vowi.fsinf.at/

  • MarvinTheRobot
    26
    MarvinTheRobot
    Mitglied
    Reaktionen
    53
    Punkte
    7.308
    Beiträge
    1.368
    • 17. Juli 2006 um 08:44
    • #3

    hm, sicher dass das mit doppelten anführungsstrichen auch geht?

    ich verwend eigentlich immer $_POST['submit'] statt $_POST['submit'] und das global würd ich global überhaupt weglassen. macht imho keinen sinn.

    du kommst mit $_POST['varname'] ja auch auf den wert deiner variable....

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 17. Juli 2006 um 08:57
    • #4

    Danke für die hilfreichen Infos! Jedoch drängt sich nun eine Frage auf:

    Wieso kann ich nicht POST Werte in eine globale variable schreiben, und diese dann auslesen? Wieso benötige ich hidden fields? ich lese aus meinem formular ="<?php echo $items['alter']; ?>"> aus, und nichts aus $_POST... (ich setze nur aus POST in meine globale variable)

  • MarvinTheRobot
    26
    MarvinTheRobot
    Mitglied
    Reaktionen
    53
    Punkte
    7.308
    Beiträge
    1.368
    • 17. Juli 2006 um 09:25
    • #5

    ja und ich frage daraufhin: wozu?

    schau eine ganz simple geschichte:

    PHP
    <? 
    if($_POST['submit']) {
    
    
    echo $_POST['alter'];
    
    
    }
    else {
    ?>
      <form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <input type="text" name="alter" value ="<? if($_POST['alter']) { echo $_POST['alter']); } ?>"> 
      <input type="text" name="beruf" value ="<? if($_POST['beruf']) { echo $_POST['beruf']); } ?>"> 
      <input type="submit" name="S2" value="submit">
    </form>
    <?
    }
    ?>
    Alles anzeigen


    da brauch ich kein global.... wozu auch... was du machst ist ja von einem "array" in ein anderes hineinschreiben, ich versteh den sinn dahinter nicht ganz...

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • Paulchen
    1
    Paulchen
    Gast
    • 17. Juli 2006 um 09:25
    • #6
    Zitat von sommeralex

    Wieso kann ich nicht POST Werte in eine globale variable schreiben, und diese dann auslesen? Wieso benötige ich hidden fields? ich lese aus meinem formular ="<?php echo $items['alter']; ?>"> aus, und nichts aus $_POST... (ich setze nur aus POST in meine globale variable)

    Bitte was? :confused:

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 17. Juli 2006 um 09:36
    • #7

    ich fasse einmal mein "verständnis-problem" zusammen:

    unter der annahme, dass ich eine php datei mit mehreren Formularen habe und keine hidden fields verwende, um daten aus unterschiedlichen formularen zu behalten, ist meine logik die folgende:

    1. In einer $_POST Variable stehen immer nur alle Variablen, die im FORM auch definiert sind. inputtype="text" name =textbox1" im form1 meiner seite.php - bedeutet, bei einem SUBMIT gibts im $_POST eine Variable namens textbox1.
    2. In meiner seite.php habe ich jedoch noch ein Formular, form2, mit dem inputtype="text", name "textbox2". Wird aus diesem das SUBMIT befohlen, habe ich in meiner $_POST Variable nur eine textbox2-variable. Die textbox1 variable wäre leer. analog für form1.
    3.um meine Daten jedoch nun aber nicht zu verlieren, kopiere ich von einem array ($_POST) welches immer nur ein paar textbox-elemente enthält (nämlich die des FORMS aus dem submited wurde), in mein "rießiges" globales array, welches am schluss, nachdem ich alle Formulare submitet habe, alle variabeln enthält. - und deshalb kopiere ich von einem "kleinen" array (POST) in ein anderes (GLOBAL).
    4.meine php Seite ruft sich immer selber auf und in Abhängigkeit des submits wird entweder form1 oder form2 geladen.

    wieso stimmen meine überlegungen nicht?

    soweit, so gut..

    AHAHAHAHAH: ich glaube, ich weiß, was falsch ist, und bitte um "Bestätigung": durch jeden SUBMIT-Befehl (meine seite1.php mit mehreren formularen ruft sich immer selber auf) gehen alle DATEN (auch eine globale variable) VERLOREN. das einzige, was bleibt, sind die durch POST übermittelten Variablen. Meine Annahme war, dass "global" quasi wie eine session Variable ist!!!!!!!

  • Paulchen
    1
    Paulchen
    Gast
    • 17. Juli 2006 um 09:51
    • #8
    Zitat von sommeralex

    AHAHAHAHAH: ich glaube, ich weiß, was falsch ist, und bitte um "Bestätigung": durch jeden SUBMIT-Befehl (meine seite1.php mit mehreren formularen ruft sich immer selber auf) gehen alle DATEN (auch eine globale variable) VERLOREN. das einzige, was bleibt, sind die durch POST übermittelten Variablen. Meine Annahme war, dass "global" quasi wie eine session Variable ist!!!!!!!

    So ist es. Du musst dir das so vorstellen: Irgendwo auf deinem Rechner gibt es das Programm php, das nichts anderes tut, als eine PHP-Datei einzulesen, zu verarbeiten und eine entsprechende Ausgabe zu liefern. Wenn dein Webserver eine .php-Datei findet, stellt er fest, dass er nicht den Inhalt der .php-Datei an deinen Webclient schicken soll, sondern das, was PHP daraus macht. PHP wird jedes Mal aufgerufen, wenn der Webclient eine PHP-Datei vom Server anfordert, und danach gleich wieder beendet.

    Das führt dazu, dass die Werte von Variablen nur so lange erhalten bleiben, wie PHP den Code interpretiert; sobald PHP terminiert, gehen die Variableninhalte verloren. Um Variablenwerte bei einem weiteren Aufruf von PHP wieder zu verwenden, kann man sie in Form eines POST-Requests erneut vom Client zum Server übertragen, oder man verwendet Session-Variablen, bei denen der Server die Werte speichert und weiterverwendet, sobald er den Client anhand einer übermittelten Session-ID wiedererkennt.

  • bimbo
    15
    bimbo
    Mitglied
    Reaktionen
    15
    Punkte
    2.320
    Beiträge
    390
    • 18. Juli 2006 um 08:37
    • #9

    genau das hab ich vorher gemeint mit

    Zitat

    eventuall liegt da (ich spiele auf den post von dir wegen den globals an) ein vertändnis problem vor. "global" bedeutet nur, das die variable innerhalb einer funktion lesbar ist. wenn du variablen "weiterereichen" willst - in deinem fall "beruf" auch nach dem abschicken des 2ten formulars haben willst, muss du es auch als (verstecktes) element in das formular eintragen.

    Zitat

    hm, sicher dass das mit doppelten anführungsstrichen auch geht?

    ja sicher, ist egal, beides ein string.

    LVA Erfahrungsberichte: http://vowi.fsinf.at/

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 18. Juli 2006 um 08:52
    • #10

    ..und schönen Tag!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung