Frage zu replace oder so...

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

  • Frage zu replace oder so...

    Hallo zusammen
    Mein Problem:
    Ein User schreibt in ne Textarea irgend ein Text und möchte nun irgendwo eine Umfrage platzieren. Sagen wir mal, er macht dies mit einem Platzhalter (z.B. {UMFRAGEXY}). Nun wird dieser Text in der Datenbank abgelegt.

    Beim Aufrufen auf der Seite sollte nun {UMFRAGEXY} durch die Umfrage XY ersetzt werden.
    Ich hab nun schon fast alles versucht und überlegt, komme aber nicht auf eine gescheite lösung.
    Am einfachsten wäre es, wenn {UMFRAGEXY} einfach durch ein include-Befehl ersetzt wird, die schaff ich aber nicht.

    Wie macht man das? Ich bin überfordert!

    Danke schon jetzt
    Gruss

  • #2
    str_replace() kennst du sicher.

    Die Ausgabe der include-Datei kannst du mittels ob_start() in eine Variable Umleiten und dann halt in den Text einfügen.

    Fertig

    Kommentar


    • #3
      Ich verstehe nicht ganz, wo dein Problem ist!
      PHP-Code:
      $input getInputFromTextarea();
      $pattern '@.*\\{UMFRAGE=([0-9]+)\\}.*@is';
      if( !
      preg_match$pattern$input$subpattern ) ) {
        die( 
      "Passt net!" );
      }
      $umfrageId $subpattern[1];
      $umfrage createHtmlForUmfrage$umfrageId ); // z.B. per include und ob_start
      $out str_replace'{UMFRAGE='.$umfrageId.'}'$umfrage$input ); 
      Suchst du sowas?

      Kommentar


      • #4
        @tobiaz:
        Ich kenne ob_start nicht wirklich, versuchte mich ein wenig schlau zu machen...
        kam nicht gerade weit. Werds mal anschauen.

        @PHP-Desaster:
        Verstehe ehrlich gesagt deinen code nicht so recht, sorry, kanns also nicht wirklich beurteilen.

        Vieleicht nochmals zur erklärung:
        In einer Variable ($text) ist viel Inhalt und irgendwo noch der Platzhalter {UMFRAGEXY} geschrieben. Nun möchte ich bei der Ausgabe dieses Textes($text) {UMFRAGEXY} so ersetzten, dass anstelle die datei umfrage.php eingefügt/ausgeführt wird.
        Ich habs bis jetzt alleine mit str_replace versucht. Leider ergebnislos.

        Danke für eure Hilfe

        Gruss

        Kommentar


        • #5
          Vielleicht solltest du noch einmal versuchen, meinen Schnippsel zu verstehen. Die Funktion createHtmlForUmfrage() soll dir halt die Umfrage erzeugen. Wie sie das jetzt macht, ist dem Schnippsel egal. Beispielsweise wäre so etwas möglich:

          PHP-Code:
          function createHtmlForUmfrage$id ) {
            
          ob_start();
            include 
          "umfrage.php";
            
          $content ob_get_contents();
            
          ob_end_clean();
            return( 
          $content );

          Ich habe dein {UMFRAGEXY}-Platzhalter einfach mal um die Angabe einer Umfragen-ID erweitert, darum die Syntax {UMFRAGE=XY}. Diese ID wird der create-Funktion übergeben. Du könntest die Umfrage in der Funktion genauso gut aus der Datenbank laden oder whatever!

          Btw: Output Control Funktionen

          Kommentar


          • #6
            Ok, ich beginne zu verstehen...
            Folgender Code:
            PHP-Code:
            function createHtmlForUmfrage($umfrageId) {
              
            ob_start();
              include 
            "umfrage.php";
              
            $umfrage ob_get_contents();
              
            ob_end_clean();
              return( 
            $umfrage );

            schreibt die umfrage.php in die Variable $umfrage, richtig?
            Was mir bei folgendem code nicht klar ist, was die funktion getInputFromTextarea(); bewirken soll.
            PHP-Code:
            $input getInputFromTextarea();
            $pattern '@.*\{UMFRAGE=([0-9]+)\}.*@is';
            if( !
            preg_match$pattern$input$subpattern ) ) {
              die( 
            "Passt net!" );
            }
            $umfrageId $subpattern[1];
            $umfrage createHtmlForUmfrage$umfrageId ); // z.B. per include und ob_start
            $out str_replace'{UMFRAGE='.$umfrageId.'}'$umfrage$input ); 
            $out ist nun meine gewollte ausgabe, oder?

            Danke und gruss

            Kommentar


            • #7
              Original geschrieben von figugegu
              Ok, ich beginne zu verstehen...
              Folgender Code:
              schreibt die umfrage.php in die Variable $umfrage, richtig?
              Was mir bei folgendem code nicht klar ist, was die funktion getInputFromTextarea(); bewirken soll.
              Das getInputFromTextarea soll nur eine pseudo-funktion als Beispiel sein.

              PHP-Code:
              $input $_POST['name_der_textarea']; 
              sollte es dir wohl erleichtern.


              MfG
              Freedom is a state of mind. Not a state in which we live.

              troxdev.ch | animefieber

              Kommentar


              • #8
                Original geschrieben von figugegu

                Vieleicht nochmals zur erklärung:
                In einer Variable ($text) ist viel Inhalt und irgendwo noch der Platzhalter {UMFRAGEXY} geschrieben. Nun möchte ich bei der Ausgabe dieses Textes($text) {UMFRAGEXY} so ersetzten, dass anstelle die datei umfrage.php eingefügt/ausgeführt wird.
                Ich habs bis jetzt alleine mit str_replace versucht. Leider ergebnislos.

                Danke für eure Hilfe

                Gruss

                bin i heut morge a bissl bräsig?? wenn da schon steht, dass er den ganzen plumperquatsch schon in ner variablen hat, wat soll das ganze ob_geflushe und so? wird das n neuer trendsport???

                wenn das was da steht wahr ist, hat er lediglich n prob mit str_replace()...????!!!!!
                **********
                arkos
                **********

                Kommentar


                • #9
                  Ich packs nicht, hier mal mein Code:
                  PHP-Code:
                  function createHtmlForUmfrage($inhaltd) {
                    
                  ob_start();
                    include(
                  "umfrage.php");
                    
                  $umfrage ob_get_contents();
                    
                  ob_end_clean();
                    return(
                  $umfrage);
                  }

                  function 
                  repfunc($inhaltd) {

                  $pattern '@.*\{UMFRAGE=([0-9]+)\}.*@is';
                  preg_match($pattern$inhaltd$subpattern);
                  $umfrageId $subpattern[1];
                  $inhaltd str_replace('{UMFRAGE='.$umfrageId.'}',$umfrage,$inhaltd);

                  return(
                  $inhaltd);
                  }
                  echo 
                  repfunc($inhaltd); 
                  In $inhaltd ist der ganze Text

                  Der Platzhalter {UMFRAGE=2} wird zwar ersetzt, leider aber durch nichts... also $umfrage ist leer!

                  Sorry für die (hoffentlich nicht sehr zeitraubenden) Fragen
                  Gruss

                  Kommentar


                  • #10
                    Du musst die Funktion ja auch aufrufen...

                    $umfrage = createHtmlForUmfrage($inhaltd);

                    Original geschrieben von arkos
                    bin i heut morge a bissl bräsig?? wenn da schon steht, dass er den ganzen plumperquatsch schon in ner variablen hat, wat soll das ganze ob_geflushe und so? wird das n neuer trendsport???

                    wenn das was da steht wahr ist, hat er lediglich n prob mit str_replace()...????!!!!!
                    "umfrage.php" gibt eine Umfrage aus (anstatt einen Text zurück), das soll eingefangen und an die richtige Stelle gepackt werden. Wenn ich das so richtig verstanden habe.

                    Edit: @Topicstarter: Ein richtig eingestelltes error_reporting hätte sich über eine nicht existierende Variable beschwert...
                    ich glaube

                    Kommentar


                    • #11
                      Dann guck dir meinen Code nochmal an und vergleiche Zeile für Zeile. So wird dir auffallen, dass du der Variablen nichts zu weißt!
                      PHP-Code:
                      $umfrage createHtmlForUmfrage$umfrageId ); 
                      Du solltest dich erst einmal ausgiebig mit Grundlagen beschäftigen, bevor das ganze hier weiter ins Chaos verläuft!

                      @arkos:
                      Am einfachsten wäre es, wenn {UMFRAGEXY} einfach durch ein include-Befehl ersetzt wird, die schaff ich aber nicht.
                      Deswegen waren TobiaZ und ich bei den ob_*-Funktionen

                      Kommentar


                      • #12
                        Original geschrieben von PHP-Desaster
                        @arkos: Deswegen waren TobiaZ und ich bei den ob_*-Funktionen [/B]
                        ok, verstehe. um das zu klären, könnte der threadgeber ja mal die umfrage.php hier posten
                        **********
                        arkos
                        **********

                        Kommentar


                        • #13
                          Du musst die Funktion ja auch aufrufen...

                          $umfrage = createHtmlForUmfrage($inhaltd);
                          Sooorrry, hab ich nicht gesehen...
                          Aber es klappt nun mit folgendem code!!

                          PHP-Code:
                          function createHtmlForUmfrage($inhaltd) {
                            
                          ob_start();
                            include(
                          "umfrage.php");
                            
                          $umfrage ob_get_contents();
                            
                          ob_end_clean();
                            return(
                          $umfrage);
                          }

                          function 
                          repfunc($inhaltd) {

                          $umfrage createHtmlForUmfrage($inhaltd);
                          $pattern '@.*{UMFRAGE=([0-9]+)}.*@is';
                          preg_match($pattern$inhaltd$subpattern);
                          $umfrageId $subpattern[1];
                          $inhaltd str_replace('{UMFRAGE='.$umfrageId.'}',$umfrage,$inhaltd);

                          return(
                          $inhaltd);
                          }
                          echo 
                          repfunc($inhaltd); 
                          Vielenvielen Dank an alle für eure hilfe.

                          Gruss

                          Kommentar


                          • #14
                            Ähmmmm, sorry, aber doch noch ne kurze Frage...
                            Welches ist die beste lösung, um nun die UmfrageId an umfrage.php zu übergeben?
                            Dies sollte ja geschehen, bevor diese ausgeführt wird.

                            Gruss

                            Kommentar


                            • #15
                              PHP-Code:
                              function createHtmlForUmfrage($inhaltd) {
                                
                              ob_start();
                                include(
                              "umfrage.php");
                                
                              $umfrage ob_get_contents();
                                
                              ob_end_clean();
                                return(
                              $umfrage);
                              }

                              function 
                              repfunc($inhaltd,$umfrageId) {

                              $umfrage createHtmlForUmfrage($inhaltd);
                              $pattern '@.*{UMFRAGE=([0-9]+)}.*@is';
                              preg_match($pattern$inhaltd$subpattern);
                              $umfrageId $subpattern[1];
                              $inhaltd str_replace('{UMFRAGE='.$umfrageId.'}',$umfrage,$inhaltd);

                              return(
                              $inhaltd);
                              }

                              $umfrageId "7";
                              // sieben als beispiel fuer die umfrageid 

                              echo repfunc($inhaltd,$umfrageId); 
                              **********
                              arkos
                              **********

                              Kommentar

                              Lädt...
                              X