Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-09-2010, 08:21   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 35
Forum um ein Feld erweitern

Hallo bin schlich weg am verzweifeln. Ich möchte ein Forum Program um ein Feld "Betreff" erweitern. Die Beiträge sollen in eine Textdatei geschrieben werden. Wenn kein Betreff angegeben wird soll die Zeile auch nicht in der Textdatei erscheinen. Habe schon etwas hingebastellt, nur leider wird der Beitrag nicht angezeigt wenn ich z.b "Betreff" leer lasse. Kann mir bitte jemand helfen? Hänge meinen Code mal mit an.
Danke!!!

<?php
$beitraege = array();
beitrag_schreiben();
beitraege_einlesen();

function beitrag_schreiben($datei = "beitraege.txt")
{
if (!empty($_REQUEST['text']))
if (!empty($_REQUEST['betreff']))
{
$dh = fopen($datei, "a");
if (!$dh)
{
print "Kann Datei nicht erstellen!\n";
}
else
{
fputs($dh, $_REQUEST['betreff']."\n");
fputs($dh, $_REQUEST['text']."\n");
if (!empty($_REQUEST['autor']))
{
fputs ($dh, $_REQUEST['autor']."\n");
}
else
{
fputs ($dh, "unbekannt\n");
}
fclose ($dh);
}
}
}

function beitraege_einlesen($datei = "beitraege.txt")
{
global $beitraege;

$dh = fopen($datei, "r");
if(!$dh)
{
print "Kann Datei \"$datei\" nicht &ouml;ffnen!\n";
}
else
{
for ($i = 0; !feof($dh); $i++)
{
$zeile = fgets($dh);
if ($zeile != "")
{
$beitraege[$i]['betreff'] = $zeile;
$beitraege[$i]['text'] = $zeile;
$beitraege[$i]['autor'] = fgets($dh);
}
}
fclose($dh);
}
}
$text_ohne_nl = trim (str_replace("\n", "", $_REQUEST['betreff']));
$text_ohne_nl = trim (str_replace("\n", "", $_REQUEST['text']));
$text_ohne_nl = trim (str_replace("\n", "", $_REQUEST['autor']));
function beitrag_ausgeben($beitrag)
{
print "Betreff: ".$beitrag['betreff']."\n";
print "<br>";
print "Eintrag: ".$beitrag['text']."\n";
print "<br>";
print "Autor: ".$beitrag['autor']."\n";
}

function formular_ausgeben()
{
?>
<form method="POST" action="<?php print $_SERVER['PHP_SELF'] ?>">
<b>Betreff: </b><strong><input name="betreff" type="text" /></strong>
<br />
<b>Text: </b><textarea name="text" cols="50" rows="10" style="overflow:hidden" ></textarea>
<br />
<b>Autor: </b><input type="text" name="autor">
<br />
<input type="submit" value="absenden">
</form>
<?php
}
?>

-----------------------------------------------------------------------
<?php
require_once ("forumsfunktionen5.php");

?>
<html>
<head><title>Forum</title></head>
<body>
<h1>Willkommen beim Forum</h1>
<?php formular_ausgeben() ?>
<hr />
<?php
for ($i = count($beitraege)-1; $i >= 0; $i--)
{
beitrag_ausgeben($beitraege[$i]);
print "<hr>\n";
}
?>

</body>
</html>
karina06 ist offline   Mit Zitat antworten
Alt 06-09-2010, 08:45   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Ein ziemliches Chaos wenn ich das mal so sagen darf ( wird natürlich durch die unformatierte Darstellung hier im Forum noch unterstützt ). Daher erst mal die Frage ob du gewillt bist es richtig und sauber zu machen ( was dementsprechend noch etwas Arbeit erfordert ). Werde dir auch helfen.
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 06-09-2010, 08:57   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 35
Forum um ein Feld erweitern

Ja klar bin ich gerne bereit es klar und deutlich zu haben. Auch mit viel Arbeit
karina06 ist offline   Mit Zitat antworten
Alt 06-09-2010, 09:56   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Also, erst mal vorneweg, wenn du PHP-Code in diesem Forum postest, solltest du ihn zwischen [php ]Dein Code[/php ] - Tags klemmen damit er genausoschön formatiert dargestellt wird wie in deinem Editor.

Zu deinem Code:

- Schön wäre es wenn du aus deiner normalen Textdatei eine XML-Datei machst. Ist zwar schwieriger, aber danach besser erweiterbar. PHP hat hierfür bereits eine Bibliothek mit vielen Funktionen:
http://php.net/manual/de/book.simplexml.php

- Du schickst dein Formular per POST ab, empfängst die Daten aber per $_REQUEST anstelle von $_POST. Hier kein grosser Fehler, anderswo aber eine potentielle Sicherheitslücke.

Versuchs mal mit der XML und ich bin mir sicher dass sich dabei dein Problm von selbst lösen wird
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 06-09-2010, 10:15   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 35
Forum um ein Feld erweitern

Das hilft mir jetzt nicht wirklich weiter. Ich möchte wissen was für Fehler ich in meiner Datei gemacht habe. Vielleicht erleichtert es mir das Verstehen
karina06 ist offline   Mit Zitat antworten
Alt 06-09-2010, 14:40   #6 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Damit würdest du den Fehler zwar beseitigen, hättest aber immer noch ein messy-Script. Ich werd dir heut Abend ne Alternative programmieren, also hab etwas Geduld.
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 06-09-2010, 15:24   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 35
Forum um ein Feld erweitern

Danke Dir!!!!
karina06 ist offline   Mit Zitat antworten
Alt 06-09-2010, 21:49   #8 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Sooo, nach etwas Arbeit hab ichs nun auch.

PHP-Code:
<?php
error_reporting
E_ALL );

/*XML-Datei öffnen sofern vorhanden */

if (file_exists('test.xml')) {
    
    
$xml simplexml_load_file('test.xml');
    
    if( isset( 
$_POST['submit']) && isset( $_POST['betreff']) && isset( $_POST['text']) && isset( $_POST['autor']) ){
        
        
//Formular wurde abgeschickt. Neuer Knoten hinzufügen und speichern
        
        
$neuer_beitrag $xml->addChild'beitrag' );
        
$neuer_beitrag->addChild'betreff'trim (str_replace("\n"""$_POST['betreff']) ) );
        
$neuer_beitrag->addChild'text'trim (str_replace("\n"""$_POST['text']) ) );
        
$neuer_beitrag->addChild'autor'trim (str_replace("\n"""$_POST['autor']) ) );
        
$xml->asXML('test.xml');
        
    }
    
} else {
    
    exit(
'Konnte test.xml nicht öffnen.');
    
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
    </head>
    <body>
    
        <form method="POST" action="">
            <strong>Betreff:</strong> <input name="betreff" type="text" />
            <br />
            <strong>Text:</strong> <textarea name="text" cols="50" rows="10" style="overflow:hidden" ></textarea>
            <br />
            <strong>Autor:</strong> <input type="text" name="autor">
            <br />
            <input type="submit" name="submit" value="absenden">
            </form>
            <br />
            <br />
       
       <?
       
       
foreach( $xml->children() AS $beitrag ){
        
            
?>
            <strong>Betreff:</strong><?= $beitrag->betreff?>
            <br />
            <strong>Text:</strong> <?= $beitrag->text?>
            <br />
            <strong>Autor:</strong> <?= $beitrag->autor?>
            <br />
            <hr />
            <br />
            <?
        
       
}
       
       
?>
       
       
       </body>
</html>
Die dazugehörige XML hab ich angehängt, beachte dass sie UTF-8-codiert sein MUSS!
Angehängte Dateien
Dateityp: rar test.rar (1,1 KB, 17x aufgerufen)
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 07-09-2010, 06:39   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 35
Forum um ein Feld erweitern

Super 1000 Dank.

lieber Gruß Karina
karina06 ist offline   Mit Zitat antworten
Alt 07-09-2010, 07:46   #10 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Je nach Anwendung kannst du dein textarea mittels JS in ein"htmlarea" umwandeln. htmlArea - Turn any TEXTAREA into a WYSIWYG editor - CodeProject Damit gibst du deinen Nutzern die möglichkeit ihren Text noch zu formatieren oder beispielsweise Smilies einzufügen. Zudem würd ich wenn ich dich wäre noch eine Möglichkeit einbauen Beiträge wieder zu löschen.
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 08-09-2010, 09:44   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2009
Beiträge: 35
Du bist echt spitze. Danke für deine Mühe!!!!!
karina06 ist offline   Mit Zitat antworten
Alt 08-09-2010, 13:21   #12 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
bitte, bitte
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
feld und dazugehöriges feld aus einer tabeel holen kakktus PHP und MySQL 6 13-01-2010 15:50
Eingabefelder --> Sobald ein Buchstabe im Feld weiter zum nächsten Feld chris6680 Flash MX 7 08-09-2005 16:12
feld aust dem feld mit dem 1 als primaerer key mit php aus mysql ?? boreker PHP und MySQL 4 26-08-2004 17:18
Formular - Feld beschreibt weiteres Feld redman HTML und CSS 2 17-05-2003 10:55
PHP-Forum das selbe wie Flash-Forum böhseronkel Flash 4 und Flash 5 2 21-06-2002 08:57


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele