tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
969
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Don Stefano
    Don Stefano Don Stefano ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Beiträge
    112
    Hallo zusammen,

    ich habe ein Problem, von dem ich nicht mal weiß, ob es zu lösen ist:

    Ich habe in einer MySQL Datenbank eine Tabelle mit verschiedenen Texten, die unter bestimmten Bedingungen ausgelesen und am Bildschirm angezeigt werden.

    Nun soll dieser Text mittendrin auch den Wert einer Variable ausgeben:

    Bsp: Der Text könnte lauten:

    "Herzlichen Glückwunsch. Sie haben 8 Aufgaben richtig gelöst."

    Nur kennt der Datenbanktext den Wert "8" nicht, da dieser erst in einem Skript berechnet wird. Mal angenommen die Variable, die diesen Wert enthält lautet $wert.

    Nun hätte ich gerne den Text in der Datenbank etwa wie folgt:

    ""Herzlichen Glückwunsch. Sie haben $wert Aufgaben richtig gelöst."

    so dass dann beim auslesen und anzeigen auf dem Bildschirm

    "Herzlichen Glückwunsch. Sie haben 8 Aufgaben richtig gelöst."

    erscheint.

    Das Feld in der Datenbank ist als "text" definiert. Ausgelesen und ausgegeben wird der Text mit :

    PHP-Code:
    ...
        
    $row mysql_fetch_object($result);
            
    $text $row->$text;
         
          echo 
    '
           <div class="box3"> //CSS
           <p>'
    .$text.'</p>  
           </div>'

    Alle erdenklichen Arten die Variable $wert dabei zu berücksichtigen scheitern leider. Egal ob ich "Sie haben $wert Aufgaben", "Sie haben .$wert. Aufgaben" oder "Sie haben ':$wert.' Aufgaben" in die Tabelle schreibe, die Ausgabe lautet dann entsprechend:

    "Herzlichen Glückwunsch. Sie haben .$wert. Aufgaben richtig gelöst."

    Was mache ich falsch? Wie muss die Variable in der Datenbank stehen? Oder ist das Ganze etwa gar nicht möglich?

    Vielen Dank für jede Hilfe
     
    Viele Grüße
    Stefan
    www.profilingportal.de

  2. #2
    Avatar von kevkev
    kevkev kevkev ist offline Mitglied Platin
    Registriert seit
    Feb 2004
    Beiträge
    620
    Hi,

    Mhh, soweit Ich weiß geht das auch nicht.
    Aber du könntest z.b. bei der ausgabe mit str_replace() nach $wert im Text suchen, und den dann austauschen lassen.

    PHP-Code:
    ...
        
    $row mysql_fetch_object($result);
            
    $text $row->$text;
         
    $text str_replace("\$wert"$wert$text);

          echo 
    '
           <div class="box3"> //CSS
           <p>'
    .$text.'</p>  
           </div>'

    Natürlich könntest du auch den auszutauschenden Teil z.b. "{Wert}" nennen, und den dann eben austauschen.

    Sonst fällt mir dazu leider nix mehr ein !

    gruß kevin
     

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    818
    Hey!

    Dein Problem ist, das du falsch denkst. Du liest aus der Datenbank einen String (Datentyp) aus. Diesem kannst du nicht ohne weiteres sagen, das da noch ne Variable steht, die geändert werden soll.

    Deine Lösung ist ein Platzhalter und die Funktion str_replace() (-> siehe PHP Manual). Auch kannst du das Problem mit regulären ausdrücklen lösen!
    Hier ein Beispiel zur Erläuterung:

    PHP-Code:
      $deineVariable 8// Anzahl der richten Antworten (kann errechnet oder sonst was werden)
      
    $loesung "Sie haben %Platzhalter% Aufgaben richtig gelöst";
      
    $loesung str_replace("%Platzhalter%"$deineVariable$loesung); 
      echo 
    $loesung;
      
    // gibt "Sie haben 8 Aufgaben richtig gelöst" aus 
    So, bei Fragen, einfach posten, aber ich denke es sind keine mehr offen!
    Falls doch, werden dir hier sicherlich noch mehr Leute helfen können


    Gruß!

    // Edit: Huch, da war ich wohl zu langsam *g*
     
    man wird erwachsen ....

  4. #4
    Avatar von kevkev
    kevkev kevkev ist offline Mitglied Platin
    Registriert seit
    Feb 2004
    Beiträge
    620
    Hi,

    Naja, lieber langsamer aber dann besser erklärt .

    gruß kevin
     

  5. #5
    Avatar von Don Stefano
    Don Stefano Don Stefano ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Beiträge
    112
    Super!

    Vielen dank ihr beiden!

    Damit werde ich es nachher einmal ausprobieren. Sollte ich es nicht hinbekommen (wovon ich einmal nicht ausgehe) melde ich mich noch einmal zu Wort. Ansonsten markiere ich den Thread später als "beantwortet".

    Deine Lösung ist ein Platzhalter und die Funktion str_replace() (-> siehe PHP Manual). Auch kannst du das Problem mit regulären ausdrücklen lösen!
    Was genau da nun der Unterschied ist (Platzhalter vs. regulärer Ausdruck) habe ich allerdings noch nicht verstanden. Bzw. was genau ein regulärer Ausdruck ist.
     
    Viele Grüße
    Stefan
    www.profilingportal.de

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    818
    Reguläre Ausdrücke sind recht kryptische Suchmuster. Hier ein Tutorial: http://www.all-community.de/art277.htm

    Aber ich denke das geht zu weit für dein Problem. Ist auch nicht gerade einfach zu verstehen, wenn man noch nicht sooooooooo lange in der Materie steckt - nicht übel nehmen!

    Gruß!
     
    man wird erwachsen ....

  7. #7
    Avatar von Don Stefano
    Don Stefano Don Stefano ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Beiträge
    112
    Nochmals vielen Dank für die einfache Erklärung. Es hat genauso

    $deineVariable = 8; // Anzahl der richten Antworten (kann errechnet oder sonst was werden)
    $loesung = "Sie haben %Platzhalter% Aufgaben richtig gelöst";
    $loesung = str_replace("%Platzhalter%", $deineVariable, $loesung);
    echo
    $loesung;
    // gibt "Sie haben 8 Aufgaben richtig gelöst" aus
    auf Anhieb funktioniert.

    Ich hatte zwar schon mal von str_replace gehört und es vielleicht in anderem Kontext schon verwendet, aber in diesem Zusammenhang wäre ich nicht so schnell darauf gekommen.
     
    Viele Grüße
    Stefan
    www.profilingportal.de

  8. #8
    Avatar von dsturm
    dsturm dsturm ist offline Mitglied Gold
    Registriert seit
    May 2003
    Beiträge
    222
    Funktionieren würde das ganze auch gut mit der sprintf-Funktion...

    Das wäre dann in diesem Fall wie folgt:

    PHP-Code:
    $richtig 8// Anzahl der richten Antworten (kann errechnet oder sonst was werden)
    $gesamt 10// Anzahl der gesamt möglichen Antworten
    $loesung "Sie haben %d von %d Aufgaben richtig gelöst"

    echo sprintf($loesung$richtig$gesamt); 
    Sowas ist z.B. praktisch, wenn man mit definierten Strings arbeitet. Auf jeden Fall mal ein Augenwurf wert, für ähnliche Vorhaben!
     

Ähnliche Themen

  1. Datenbank auslesen und ausgeben mit Berechnung
    Von babuin im Forum Coders Talk
    Antworten: 2
    Letzter Beitrag: 04.05.10, 08:48
  2. JS-variable (text) dynamisch ausgeben ohne input-Feld
    Von Grille im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 04.02.08, 17:49
  3. Antworten: 1
    Letzter Beitrag: 28.01.06, 12:57
  4. Antworten: 5
    Letzter Beitrag: 27.04.05, 11:08
  5. Antworten: 5
    Letzter Beitrag: 27.01.02, 19:51