Formular Vorschau und Smarty

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

  • Formular Vorschau und Smarty

    Hallo Community,
    Heute habe ich mich den ganzen Tag mit Formularen und dem Thema Vorschau beschäftigt komme aber zu keinem Ergebnis!

    Ich habe ein Formular mit bbcode,.... alles was dazu gehört.

    Das Formular und alles was dazugehört habe ich schon fertig geschrieben und funktioniert auch.Nun habe ich zwei Optionen ABSCHICKEN - ZURÜCKSETZTEN.


    Und nun soll noch die Funktion VORSCHAU dazukommen.


    Idee war:
    MYSQL :text_vorschau
    Formular absenden an DB
    User sieht das Ergebnis auf einer popup Seite
    der user kann dann weiter an seinem Beitrag arbeiten und die Vorschau nutzen.Wenn er zufrieden ist kann er es absenden.
    Per cronjob die text_vorschau täglisch löschen.
    Das ist sicher zu kompleziert oder ?


    Wer weiss wie ich eine Vorschau realisieren kann?
    Habe viel über Java und Weichen gelesen und Java texterea Ausgabe die allerdings kein HTML Verarbeiten kann und für mich nun uninteressant ist. Das nächste problem ist das ich Smarty nutze und gerade nichtmehr weiter weiss.

    Habt Ihr ne Idee ?
    Zuletzt geändert von escape; 28.05.2006, 22:35.

  • #2
    Öhm, in PHP ist das ziemlich easy. Du bekommst ja die Formularsachen (vermutlich) per POST. Du hast sicher auch ne funktion die den BBcode in HTML umwandelt. Jag einfach die POSTdaten durch die BBtoHTML funktion, lass dir das ergebnis anzeigen, und für die POSTdaten noch mal in dein Formular ein, dann bekommste's so wie hier im Forum.

    Kommentar


    • #3
      Das anschliessende verarbeiten und wiedergeben durch {$var.var|bbcode2html} ist kein Prob

      Es geht mehr darum eine art Vorschau zu realisieren.

      Ich formuliere es mal anders.

      Ich habe ein Formular dort kann der User xxx sachen eintragen.
      Nun kann er den Button absenden klicken die Daten werden in der DB gesavt und bei reset ist klar.

      Nun muss also ein 3ter Button her der im selben Formular ist.Der aber auch die selben Daten verarbeitet nur halt über ein anderes Script.

      Die Daten $Post werden nur verarbeitet solang sie im <form> stehen

      Ich kann ja nicht einfach schreiben

      PHP-Code:
      <form action="eintrag_eintragen.php" method="post" name="post1">
      <
      form action="eintrag_vorschau.php" method="post" name="post2">

      ...

      <
      input name="post2" type=submit value="Vorschau">
      <
      input name="post1" type=submit value="Abschicken">
      <
      input type=reset value="Zurücksetzen"
      Zuletzt geändert von escape; 28.05.2006, 23:20.

      Kommentar


      • #4
        Original geschrieben von escape
        Nun muss also ein 3ter Button her der im selben Formular ist.Der aber auch die selben Daten verarbeitet nur halt über ein anderes Script.
        Niemand sagt, dass dies ein anderes Script sein muss.

        Du kannst die Daten doch gut und gerne an ein Script schicken - und in dem unterscheidest du dann anhand des gedrückten Buttons, welche Aktion jetzt auszuführen ist.



        Wenn du wirklich Formulardaten an eine von zwei verschiedenen Adressen schicken willst - dann musst du clientseitig mit Javascript das Formularziel abändern.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Du kannst die Daten doch gut und gerne an ein Script schicken - und in dem unterscheidest du dann anhand des gedrückten Buttons, welche Aktion jetzt auszuführen ist.
          Ich denke das wäre ne Lösung irgendwie Logisch

          Ergo mit IF ?

          Moar, wie soll ich das den machen *g*

          Könnte jemand bitte ein Beispiel posten ?
          Ich weiss nicht wie das aussehen muss

          Wäre das der richtige Weg ?

          Mehrere Submit-Buttons in einem Formular

          Prinzipiell besteht jedes Button-Element wie auch jedes andere Formular-Input-Feld aus name="" und value="".

          Bsp: <input type="Submit" name="button1" value="wert1">

          Wenn also das Formular abgeschickt wurde, hat die Variable $button1 den
          Wert 'wert1' ($button1 = "wert1"). Es sollte allerdings reichen, die Existenz einer Variable (isset($button) z.B. bei PHP) abzufragen.
          Zuletzt geändert von escape; 28.05.2006, 23:42.

          Kommentar


          • #6
            Dein Code ist völlig errelevatn wenn du ein Beispiel möchtest. Was für dich entscheidend ist, ist dass sich der Submitbutton der gedrückt wurde im $_POST-array wiederfindet. d.h. folgendes:

            PHP-Code:
            <form action="dieseDatei.php" method="post">

            ...

            <input name="preview" type=submit value="Vorschau">
            <input name="submit" type=submit value="Abschicken">

            <?PHP

            if(isset($_POST['preview'])) echo "vorschau";
            elseif(isset(
            $_POST['submit'])) echo "abgeschickt";

            ?>
            EDIT:
            Die Antwort auf deinen geänderten Post: Ja, das ist der Richtige weg, aber probier's doch erst mal selber aus. Das hat den größten Lerneffekt und du wirst feststellen Eigenständigkeit zahlt sich ganz schön aus
            Zuletzt geändert von Luke; 28.05.2006, 23:53.

            Kommentar


            • #7
              Habe gerade im Manual geblättert "IF & ELSE"

              Nach dem wie ich das nun aufgenommen habe sollte es so aussehen ?


              PHP-Code:
                <?php

              error_reporting
              (E_ALL);    
                 include 
              'config/config.php';
                 include 
              'checkuser.php';

                  
              $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
                  
                  
              $db_name =  "lexikon";

                  if ( ! 
              $db_link )
                  die( 
              "Keine Verbindung zu MySQL" );
                  
              mysql_select_db$db_name$db_link )
                  or die ( 
              "Konnte $db_name nicht öffnen: ".mysql_error() );

                 
                 (isset(
              $Abschicken) {
                 
                 
              // IN SQL EINTRAGEN
                  
              ....
                  
                  
                  } else {
                  
                  (isset(
              $Vorschau) {
                  
                  } else {
                  
                  
              // CODE Vorschau generieren
                  
              ...
                  
                  
                  }
                  
                  
              weiter mit normalen code
                  
                  ?>
              Liege ich richtig oder total falsch ? Hm habe dein posting übersehen lag fast richtig! Ich werde mich dran hängen ich werde das auchnoch lernen
              Zuletzt geändert von escape; 29.05.2006, 00:00.

              Kommentar


              • #8
                Ich breche mir krampfhaft nen Zahn aus.

                Ich kann das if elseif setzten wie ich möchte er schreibt in die DB wie im lustig und gerade danach ist.

                Mit

                PHP-Code:
                if(isset($_POST['preview'])) echo "vorschau";
                elseif(isset(
                $_POST['submit'])) echo "abgeschickt"
                Alleine in einem Php Dokument klappt es wunderbar "ohne SQL DATEN". Wenn ich nun aber sage geht garnichtsmehr!

                PHP-Code:
                <?php    
                error_reporting
                (E_ALL);    
                include 
                'config/config.php';
                include 
                'checkuser.php';   

                $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
                $db_name =  "lexikon";

                if ( ! 
                $db_link )
                die( 
                "Keine Verbindung zu MySQL" );
                mysql_select_db$db_name$db_link )
                or die ( 
                "Konnte $db_name nicht öffnen: ".mysql_error() );

                if(isset(
                $_POST['preview'])) 

                $sql "INSERT INTO lexikon_vorschau
                 SET
                  username = '"
                .$_SESSION['username']."',
                  sektion = '"
                .$_POST['sektion']."',
                  titel = '"
                .$_POST['titel']."',
                  suchwort = '"
                .$_POST['suchwort']."',
                  inhalt = '"
                .$_POST['inhalt']."',
                  deutsch = '"
                .$_POST['deutsch']."',
                  english = '"
                .$_POST['english']."',
                  time_create = NOW()
                "
                ;


                elseif(isset(
                $_POST['submit'])) 


                $sql "INSERT INTO lexikon
                 SET
                  username = '"
                .$_SESSION['username']."',
                  sektion = '"
                .$_POST['sektion']."',
                  titel = '"
                .$_POST['titel']."',
                  suchwort = '"
                .$_POST['suchwort']."',
                  inhalt = '"
                .$_POST['inhalt']."',
                  deutsch = '"
                .$_POST['deutsch']."',
                  english = '"
                .$_POST['english']."',
                  time_create = NOW()
                "
                ;
                Er will egal wie ich if oder else anwende er will nicht nicht unterscheiden

                Selbst ein simples
                if BLA make was & if BLO make was anderes " Will er nicht fressen"

                ...er will nicht nicht unterscheiden was wozu gehört mal schreibt er es dort rein, mal da, mal 2 oder gar dreifach mit einem simplen Klick.

                Ich bekomme die zwei Insert into einfach nicht getrennt.

                Bitte daher um Hilfe "Danke"

                So sieht mein Standart script aus was auch Funktioniert.
                PHP-Code:
                <?php

                   error_reporting
                (E_ALL);    
                   include 
                'config/config.php';
                   include 
                'checkuser.php';
                   
                   
                // Konfigurationsdatei laden       
                   
                        
                if(empty($_POST['sektion'])) 
                        {
                              
                header ("Location: eintrag_fehlerhaft.php");EXIT;
                        }

                        if(empty(
                $_POST['titel'])) 
                        {
                        
                header ("Location: eintrag_fehlerhaft.php");EXIT;
                        }
                         
                        if(empty(
                $_POST['suchwort'])) 
                        {
                        
                header ("Location: eintrag_fehlerhaft.php");EXIT;
                        }

                        if(empty(
                $_POST['inhalt'])) 
                        {
                        
                header ("Location: eintrag_fehlerhaft.php");EXIT;
                            } 
                         
                        if(empty(
                $_POST['deutsch'])) 
                        {
                        
                header ("Location: eintrag_fehlerhaft.php");EXIT;
                            } 
                         
                        if(empty(
                $_POST['english'])) 
                        {
                        
                header ("Location: eintrag_fehlerhaft.php");EXIT;
                            } 
                         
                         
                // Mit der Datenbank verbinden

                    
                $db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
                    
                // Datenbankname auswählen
                    
                $db_name =  "lexikon";

                // Wenn Datenbank nicht verfügbar
                    
                if ( ! $db_link )
                    die( 
                "Keine Verbindung zu MySQL" );
                    
                mysql_select_db$db_name$db_link )
                    or die ( 
                "Konnte $db_name nicht öffnen: ".mysql_error() );

                // Datensatz überprüfen auf Doppelte Einträge

                    
                $sql "SELECT count(*) AS anzahl FROM lexikon WHERE titel = '".$_POST['titel']."'";
                    
                $query mysql_query($sql);
                    
                $row mysql_fetch_object($query);
                    if(
                $row->anzahl 0)
                            {
                            
                // Wenn doppelter Datensatz vorhanden ist leite weiter nach
                        
                header ("Location: eintrag_vorhanden.php");
                        
                        EXIT;
                        
                            } 
                            else
                                    {

                // Wenn Datensatz nicht vorhanden ist schreibe in Datenbank den Datensatz
                $sql "INSERT INTO lexikon
                 SET
                  username = '"
                .$_SESSION['username']."',
                  sektion = '"
                .$_POST['sektion']."',
                  titel = '"
                .$_POST['titel']."',
                  suchwort = '"
                .$_POST['suchwort']."',
                  inhalt = '"
                .$_POST['inhalt']."',
                  deutsch = '"
                .$_POST['deutsch']."',
                  english = '"
                .$_POST['english']."',
                  time_create = NOW()
                "
                ;

                $my mysql_query($sql);

                    
                $sql "UPDATE  
                                lex_user                
                            SET                 
                                writetitel = '"
                .$_POST['titel']."'
                            WHERE             
                                userid = '"
                .$_SESSION['userid']."';";
                                
                $my mysql_query($sql);

                 
                mysql_query$sql$db_link )
                         or die ( 
                "Konnte Datensatz zu \"php\"-Tabelle".
                         
                " nicht hinzufügen: ".mysql_error() );
                         
                         
                mysql_close$db_link );
                         
                }
                        
                // Datensatz in Ordnung öffne die Weiterleitung    
                ?>


                <?php

                    error_reporting
                (E_ALL);
                    
                        require 
                'libs/Smarty.class.php';
                        
                        
                $smarty = new Smarty;
                    
                    
                $smarty->display('eintrag_erfolgreich.tpl');

                ?>
                Zuletzt geändert von escape; 29.05.2006, 19:22.

                Kommentar


                • #9
                  Der Fehler liegt nicht in den Schnipseln welche du hier gepostet hast. Er liegt also ausserhalb.

                  Kommentar


                  • #10
                    Danke für die Info, das habe ich selbst auch herraus gefunden ,... würde ich sonst fragen

                    Kommentar


                    • #11
                      Im oberen Schnipsel machst Du effektiv gar nichts, dh du setzt $sql=BLI oder $sql=BLA und sonst passiert nichts. Das untere Schipsel läuft ja.

                      und ausserdem fehlt im oberen Schnipsel das schliessende ?> .

                      Kommentar


                      • #12
                        ...er will nicht nicht unterscheiden was wozu gehört mal schreibt er es dort rein, mal da, mal 2 oder gar dreifach mit einem simplen Klick. Ich habe gehört, dass firefox manchmal eine Seite 2x aufruft. Selber habe ich das schon in meinem Serverlog gesehen.

                        Kommentar


                        • #13
                          Das obere Schnipsel war nur ein Beispiel wie ich es nicht machen kann Mein Kopf brummt enorm ich brauch für Heute ne pause ich häng mich morgen da nochmal rein.

                          Kommentar

                          Lädt...
                          X