php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.12.2011, 20:15  
Erfahrener Benutzer
 
Registriert seit: 08.10.2010
Beiträge: 200
PHP-Kenntnisse:
Anfänger
djsky01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Frage bezüglich Herangehensweise einer Briefschreibfunktion

Hallo ihr Lieben,
ich möchte gerne so eine Art Briefvorlagenfunktion erstellen.
Dafür kann der Benutzer so wie hier im Forum einen Brief erstellen, das alles formatieren....
Is ja auch kein Problem mit tinymce.
Allerdings soll das ja eine Vorlage werden, die dann mit x-beliebigen Daten aus der Datenbank automatisch gefüllt werden soll.
Hab mir nun gedacht, dass ich eigene tags zum einfügen zur Verfügung stelle, also so in die Richtung [[adressen;name]]
fügt also jemand das ein, weiß ich ja, dass ich in der datenbank die tabelle adressen und das feld name durchsuchen muss.
Nur wie kann ich diese Tags nun rausfinden und die benötigten abfragen machen?

Hier mal ein Beispiel:
Code:
Hallo  [[adressen;name]],
ich wohne in  [[adressen;ort]] und bin  [[adressen;alter]] Jahre alt.
Ich bin am  [[adressen;geburtsdatum]] geboren.
Tja, da ich ja nicht weiß wieviele und welche Tags gesetzt wurden, weiß ich jetzt nicht so genau, wie ich das ganze angehen soll, also erstens rausfinde, wieviele und welche Tags gesetzt wurden und wie ich dann dementsprechend die Abfragen dazu ausführe.
Vielleicht hat da jemand einen Denkansatz für mich.
djsky01 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.12.2011, 21:13  
Erfahrener Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 226
DirkHo befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

mit preg_match_all kannst du Strings nach einem regulären Ausdruck durchsuchen, der bei dir dann wohl nach den Zeichen Strings zwischen "[(" und ")]" suchen würde. Als Verfeinerung des RegEx könntest du dann noch angeben, dass der String zwischen dem Start- und End-Ausdruck einen ";" enthalten muss.

Zurück bekommst du ein Array über das du dann iterierst und eben die entsprechenden Stellen im Text damit ersetzt.

Hier die API dazu:

http://php.net/manual/de/function.preg-match-all.php

Grüße,

Dirk
DirkHo ist offline   Mit Zitat antworten
Alt 29.12.2011, 21:31  
Erfahrener Benutzer
 
Registriert seit: 08.10.2010
Beiträge: 200
PHP-Kenntnisse:
Anfänger
djsky01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke für die Hilfe, aber irgendwie check ich diese Funktion nicht so ganz.
Hab nun mal folgendes probiert, das klappt aber überhaupt nicht.
PHP-Code:
$test="Hallo  [[adressen;name]], ich wohne in  [[adressen;ort]] und bin  [[adressen;alter]] Jahre alt. Ich bin am  [[adressen;geburtsdatum]] geboren.";
preg_match_all("[[;]]",$test$ausgabe);
echo 
$ausgabe[0]; 
djsky01 ist offline   Mit Zitat antworten
Alt 29.12.2011, 21:35  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Mach doch simple Stringersetzung für alle bekannten Variablen.
Was nicht im Text vorhanden ist, wird auch nicht ersetzt - es muss aber versucht werden.

Zitat:
das klappt aber überhaupt nicht.
Das ist keine sinnvolle Problembeschreibung.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 29.12.2011, 21:39  
Erfahrener Benutzer
 
Registriert seit: 08.10.2010
Beiträge: 200
PHP-Kenntnisse:
Anfänger
djsky01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sorry:
Sinnvolle Problembeschreibung=echo $ausgabe[0] liefert nichts zurück

An die simple stringersetzung hatte ich auch schon gedacht nur wäre das alles in einem Array einfacher zu handhaben, da es am Schluss rund 100 oder mehr Tags(Möglichkeiten zum Einfügen) geben wird und wenn ich da jeden einzeln durchsuchen muss wird das ne mühsame Geschichte. Ein Array könnte ich in einer schleife durchlaufen.
djsky01 ist offline   Mit Zitat antworten
Alt 29.12.2011, 22:25  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von djsky01 Beitrag anzeigen
danke für die Hilfe, aber irgendwie check ich diese Funktion nicht so ganz.
Schon mal mit Handbuchlesen probiert?
http://www.php.net/manual/de/referen...ern.syntax.php
Zitat:
Hab nun mal folgendes probiert, das klappt aber überhaupt nicht.
Das klappt nicht, weil es falsch ist.
http://www.php.net/manual/de/regexp.reference.meta.php
  Mit Zitat antworten
Alt 29.12.2011, 22:48  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard

Es wird sich ja pro Brief nicht um tausende Tags handeln, oder?! Insofern dürfte es nicht allzu sehr ins Gewicht fallen, wenn Du halt alle möglichen Tags durchgehst. Ungefähr so. Ist kein fertiges Skript. Ein bischen ergänzen musst Du da noch.
PHP-Code:
//Ein Array, das die Beziehung von Feldnamen und Tags beschreibt
$felder_und_tags = array();
$felder_und_tags['ort'] = '[[adressen;ort]]';
$felder_und_tags['geb_dat'] = '[[adressen;geburtsdatum]]';
//usw.
/*Eine Datenbankabfrage, die alle relevanten Felder zurückliefert für einen Brief
Verbindungsaufbau, Abfrage, Datensatz auslesen: mußt Du selbst schreiben, wie es bei Dir passt
hier mal beispielhaft nur folgendes */
$datensatz mysql_fetch_assoc($abfrageergebnis);
//Der Brieftext hier mal undynamisch vorgegeben
$brief_text 'Hallo  [[adressen;name]],
ich wohne in  [[adressen;ort]] und bin  [[adressen;alter]] Jahre alt.
Ich bin am  [[adressen;geburtsdatum]] geboren.
'
;
foreach (
$felder_und_tags as $db_feldname => $tag) {
    
$brief_text str_replace($tag,$datensatz($db_feldname),$brief_text);
}
echo 
$brief_text
__________________
Es ist schon alles gesagt. Nur noch nicht von allen.
drsoong ist offline   Mit Zitat antworten
Alt 30.12.2011, 08:18  
Erfahrener Benutzer
 
Registriert seit: 08.10.2010
Beiträge: 200
PHP-Kenntnisse:
Anfänger
djsky01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@drsoong:
Danke schön, dass is ja schon mal ein Ansatz.
1000e werdens sicher nicht, aber es können schon so an die 100-150 werden.
Deshalb frag ich da lieber vorher nach, bevor ich mich da in was verstricke.
wird auf jeden Fall eine Herausforderung werden das ganze, da ja noch dazu kommt, dass es sich um rund 10 Tabellen handelt, aus denen der Benutzer auswählen und Daten einsetzen kann. Das werd ich aber hoffentlich hin bekommen.
djsky01 ist offline   Mit Zitat antworten
Alt 30.12.2011, 08:59  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 300
PHP-Kenntnisse:
Fortgeschritten
Asterixus sorgt für eine eindrucksvolle AtmosphäreAsterixus sorgt für eine eindrucksvolle Atmosphäre
Asterixus eine Nachricht über Skype™ schicken
Standard

Und was, wenn ein Benutzer so böse ist und sich zum Beispiel mit dem Namen "[[adressen;geburtsdatum]]" einträgt? Dann werden diese Daten überschrieben. Irgendwann könnte das nicht nur den Benutzer selbst treffen, aber vielleicht wird anhand dieser Daten ein öffentliches Profil erstellt mit derselben Logik.
Die Variablen würde ich erst durch lange zufallgenerierte Variablen ersetzen und erst dann durch die eigentlichen Daten ersetzen.
Asterixus ist offline   Mit Zitat antworten
Alt 30.12.2011, 09:35  
Erfahrener Benutzer
 
Registriert seit: 08.10.2010
Beiträge: 200
PHP-Kenntnisse:
Anfänger
djsky01 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da es sich um eine "Software" handeln wird, die in einer Firma laufen soll(Firma meines Vaters) und die Benutzernamen von meinem Vater vergeben werden, besteht diese Gefahr nicht.
djsky01 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Test Frage (Variablen) Bloodcell PHP Einsteiger 12 04.08.2011 20:01
Eine Frage zum guten Code-Layout SilentSight JavaScript, Ajax und mehr 3 14.07.2010 09:18
[Erledigt] Frage zu JOIN Befehl und dem Auslesen desselben apo PHP Tipps 2010 11 13.06.2010 19:32
Frage zu PHP und SimpleXML Ratto PHP Tipps 2010 2 31.03.2010 10:47
URL Frage Eclipse16V PHP Tipps 2009 8 23.02.2009 17:02
Hallo eine Frage in sachen Forensysteme spikytux HTML, Usability und Barrierefreiheit 11 03.01.2009 15:06
Dringende Frage odde PHP Tipps 2008 5 28.10.2008 19:03
Frage zu LDAP Frage (Active Directory) FRAD PHP Tipps 2008 0 01.10.2008 16:11
frage bezüglich seite neu laden... Sclot HTML, Usability und Barrierefreiheit 4 08.03.2005 23:26
Frage zu einer Liste? HTML, Usability und Barrierefreiheit 2 15.02.2005 16:56
Hallo und Frage zu dynamischer Veränderung in Textfeldern. PHP Tipps 2004-2 2 27.12.2004 22:29
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
[Erledigt] Frage! PHP Tipps 2004 4 27.07.2004 11:25
Frage bezüglich des logins PHP Tipps 2004 2 01.07.2004 15:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum