Formular soll nicht zurückgesetzt werden...

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

  • Formular soll nicht zurückgesetzt werden...

    Hallo phpgemeinde,

    Ich musste für einen Kunden von mir einen Designer schreiben und er funktioniert auch, nur die Vorschau spinnt noch ein bisschen.

    Die Funktionsweise:
    Die Daten für die Vorschau werden aus der Datenbank ausgelesen und in radio-buttons gepackt.
    Jeder Radio-Button besitzt bei Value, eine ID und eine mit kommagetrennte Information über den Bildnamen.
    Diese Values werden an das Vorschauscript übergeben und mit explode() abgetrennt.
    Zum Abschicken benutze ich 2 submit buttons, einen für die Vorschau und einen für in den Warenkorb legen. Diese unterscheide ich in der "action".

    Das Problem ist Folgendes:
    Nach einem Klick auf Vorschau wird das Formular zurückgesetzt und der Besucher muss die Daten neu eingeben und das soll nicht sein.

    Einige Codeschnipsel:

    Das Formular wird so abgeschickt: in der action steht eine Funktion, von dieser Funktion hab ich den Teil genommen in der ich prüfe welcher Submit-Button geklickt wurde. id[1] - [3] sind die Variablen für die Vorschau.php.
    PHP-Code:
          case 'add_product' :    if (isset($_POST['vorschau'])){
                                  echo 
    '<script type="text/javascript">window.open("vorschau.php?var1=' rawurlencode($id[3])
     . 
    '&var2=' rawurlencode($id[1])
     . 
    '&var3=' rawurlencode($id[4]) . '","_blank");</script>';
                                  break;
                                  
                                  } else {
                                    ... 
    nicht von Bedeutungdenn war schon vorher da und läuft...
                                  break;
                                  } 

    Der Submit-Button in Javascript damit er nur bei Activiertem Javascript angezeigt wird:
    PHP-Code:
        <script type="text/javascript">
            
    document.writeln('<tr>');
            
    document.writeln('    <td align="center"><input type="submit" 
    name="vorschau" value="Vorschau des Produktes" /></td>'
    );
              
    document.writeln('</tr>');
        </
    script

    Hier werden die Radio-Buttons erstellt:
    PHP-Code:
    foreach ($products_options_array as $opti_array){
    ...
    <
    input type="radio" name ="id[' . $products_options_name['products_options_id'] . ']" 
    value="' . $opti_array['id'] . ',' . $opti_array['thumbnail'] . '" checked>
    ...

    Hat jemand eine Idee, wie ich das Problem lösen kann???

    Danke schon mal für eure Hilfe

    Grüße Micha
    Zuletzt geändert von skiveit; 05.05.2008, 19:11.

  • #2
    als erstes brichst du mal deinen code um. kein mensch scrollt gerne kilometerweit nach rechts.

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hat jemand eine Idee, wie ich das Problem lösen kann???
      indem du zuerst mal den code mit den action-attributen postest.
      btw: du gehst extrem kompliziert an die sache heran. wenn die vorschau in einem popup geöffnet werden soll, so nimm einfach einen link für "Vorschau", leg da ein oncklick-handler drauf mit window.open und fertig ist es. dafür brauchst du kein submit-button. dann gehen auch die werte nicht verloren.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Original geschrieben von Kropff
        indem du zuerst mal den code mit den action-attributen postest.
        btw: du gehst extrem kompliziert an die sache heran. wenn die vorschau in einem popup geöffnet werden soll, so nimm einfach einen link für "Vorschau", leg da ein oncklick-handler drauf mit window.open und fertig ist es. dafür brauchst du kein submit-button. dann gehen auch die werte nicht verloren.

        gruß
        peter
        Kannst du mir zufällig auch sagen, wie das mit dem onclick funktioniert, hab dies nämlich auch schon versucht, aber ich bin nicht zurande gekommen.

        wie muss das richtig aussehen?


        muss diese 3 Variablen übergen:
        PHP-Code:
        "vorschau.php?var1=' . rawurlencode($id[3])
         . '&var2=' . rawurlencode(
        $id[1])
         . '&var3=' . rawurlencode(
        $id[4]) . ' 
        die Werte $id[1], $id[1] und $id[1] werden im Formualr mithilfe von Radiobuttons gefüllt!

        Grüße Micha

        Kommentar


        • #5
          indem du per javascript auf die werte zugreifst a la
          PHP-Code:
          document.formularname.elements 
          siehe auch selfhtml

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Original geschrieben von Kropff
            indem du per javascript auf die werte zugreifst a la
            PHP-Code:
            document.formularname.elements 
            gruß
            peter

            mhm... wenn ich das richtig verstanden habe, kann ich damit auf die Einzelnen Radio-buttons in einer Gruppe zugreifen, aber das ist doch nicht das was ich möchte. ich muss doch entweder den weg bestreiten, den ich in meinem ersten Post geschrieben habe, oder ich muss die variablen an ein popup-fenster übergeben, aber wie mach ich das mit javascript?

            Bitte ein konkretes beispiel für eine der variablen mitliefern, bin was javascript angeht nicht sonderlich bewandert...


            Grüße Micha

            Kommentar


            • #7
              PHP-Code:
              feld_1 document.formularname.elementname.value;
              window.open('vorschau.php?var1=' feld_1); 
              so in der art.

              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Original geschrieben von Kropff
                PHP-Code:
                feld_1 document.formularname.elementname.value;
                window.open('vorschau.php?var1=' feld_1); 
                DAnke das war ein Wink in die richtige Richtung.

                Mit dem Code klappt es:

                PHP-Code:
                <script language="JavaScript">
                function 
                createvorschau()
                {

                var 
                id3_ok false
                for (var i=0i<document.cart_quantity.id3.lengthi++){
                   if (
                document.cart_quantity.id3[i].checked){
                      
                id3_ok true
                      
                var vari1 document.cart_quantity.id3[i].value
                    } 


                var 
                id1_ok false
                for (var i=0i<document.cart_quantity.id1.lengthi++){
                   if (
                document.cart_quantity.id1[i].checked){
                      
                id1_ok true
                      
                var vari2 document.cart_quantity.id1[i].value
                    } 
                }

                var 
                id4_ok false
                for (var i=0i<document.cart_quantity.id4.lengthi++){
                   if (
                document.cart_quantity.id4[i].checked){
                      
                id4_ok true
                      
                var vari3 document.cart_quantity.id4[i].value
                    } 
                }
                 
                window.open ("vorschau.php?var1="+vari1+"&var2="+vari2+"&var3="+vari3 'Ihre Vorschau''width=175,height=200');
                }

                </
                script
                Jetzt hab ich nur noch 2 kleine Probleme:

                1. Die Felder heißen nicht id1, id3, id4, sondern id[1], id[3], id[4], hab Sie nur zum testen id1 benannt, im späteren Verlauf müssen Sie id[1] heißen. Es klappt aber mit der KLammer nicht, da Javascript dies dann für ein Array hält. Wie muss ich meinen Code umschreiben, dass es auch für die Variante mit klammern geht???

                2. Die Variable id[1], kann sonderzeichen wie ß,ö,ä,ü enthalten, in php würde ich jetzt rawurlencode($id[1]) verwenden, wie muss ich das aber bei Javascript machen???

                Danke schon mal für eure Hilfe


                Grüße Micha

                Kommentar

                Lädt...
                X