Text bearbeiten und downloaden als Textdatei

aero_eagle

Mitglied
Hi Leuts

Bin derzeitig an einem kleinen Projekt für die Schule...

Hierfür muss ich einen Text mit PHP bearbeiten resp. ein paar Werte neu reinschreiben und die Datei dann runterladen können. Der Text ist bereits vorhanden und muss, darf nicht eingegeben werden lediglich die paar Werte in diesem Text.

Ist es besser wenn ich die Datei auf dem Server speichere und dann mit fopen öffne und bearbeite... oder wäre es besser den Text direkt im PHP zu integrieren?

Kann mir jemand weiterhelfen? :confused:

Thanks
 
Am praktischsten wäre es, wenn du über ne Datenbank arbeitest...
Weil du dann den Text speichern, auslesen und ändern kannst, wie du willst...

Das hauptsächliche Problem liegt vermutlich in der Aufgabenstellung ^^

1. Wie bist du an den Auftrag ran gekommen? <-aus eigenem Interesse gefragt
2. Wie lautet die EXAKTE Aufgabenstellung? <-um genauere Hilfe leisten zu können
 
also die Oberfläche hätte ich schon ^^ schau mal unter http://zgrabler.it-scene.ch/order.php :eek: naja kein kommentar.

Die Textdatei ist eigentlich ein Rubyscript, dass aber mit den Werten mit den folgenden Tischmassen die eingegeben wurden abgeändert werden muss.

Hier ein Ausschnitt aus dem RubyCode der nachher bearbeitet werden muss...

# ********** Variablen ********** #

# Folgende Variabeln editieren!
# X = breite, Y = tiefe, Z = höhe
breite = 2000.mm
tiefe = 1000.mm
hoehe = 800.mm
staerke = 40.mm
tischbeinhoehe = 950.mm
durchmesser = 100.mm
abstand = 150.mm

Edit: Der Text muss nicht gespeichert werden, nur in der abgeänderten Version runtergeladen werden.
1. Aus eigenem Interesse bastle ich nicht freiwillig um Ruby und Sketchup rum =)
 
Zuletzt bearbeitet:
Dann Teil dir den "Text" einfach in mehrere Variablen ein...
Also
$var[1] = Alles bis zum ersten variablen Wert
$var[2] = Alles vom ersten variablen Wert bis zum 2ten variablen Wert
$var[3] = Alles vom 2ten variablen Wert bis zum 3ten
Und so weiter...

Die Variablen, die eingesetzt werden sollen holst du dir ja aus dem Formular, ich benutze daher der einfachheithalber NUR $_POST, als Indikator wo die Formularinhalte hin sollte...

$gesamttext = $var[1]
$gesamttxet .= $_POST
$gesamttext .= $var[2]
$gesamttext .= $:POST
$gesamttext .= $var[3]
und so weiter...

$gesamttext is dabei letztlich ein String...
Als erstes wird alles in der Variable entfernt und sie somit neu angefangen: $gesamttext = $var[1] <-Und der erste Teil des Textes wird eingefügt...
mit .= Wird an die Variable angehangen, also der Text weiter geschrieben...

Sollte soweit das sein, was du brauchst...

[EDIT]
PS: An der Formatierung der Seite solltest du noch nen bissl arbeiten ;)
 
Oke danke werds mal ausprobieren.

Das wegen der formatierung ist nicht mein Brot :S ich bin nur zuständig für die Funktionen usw. ... weiss schon dasses katastrophal aussieht, hehe
 
Das is natürlich besonders praktisch, wenn das Design die Sorge von nem anderen is xD
Den Luxus hab ich leider nich, ich krieg nur die Grafiken gemacht... Verarbeiten udn formatieren muss ich selber :lol:

An dieser Stelle noch nen relativ unschönen Kommentar zum Thema...
Wenn man keine Ahnung von PHP hat, dann sollte man solche Aufträge nicht annehmen...

Ich hab nu, nach nem Jahr, dass ich mich damit schon beschäftige, erst erste kleine Projekte in Auftrag genommen... Und ich hab immer noch Probleme beim Umsetzen und brauch Zeit dafür...
 
Wenn man den Auftrag von der Schule bekommt, hat man wohl keine andere Wahl... ein klein wenig Erfahrung habe ich schon.

PHP:
if(isset($_POST[hoehe]) || ($_POST[laenge]) || ($_POST[breite]) || ($_POST[b_laenge]) || ($_POST[b_durchmesser]) || ($_POST[vorschau]))
{
	$hoehe = $_POST[hoehe];
	$laenge = $_POST[laenge];
	$breite = $_POST[breite];
	$b_laenge = $_POST[b_laenge];
	$b_durchmesser = $_POST[b_durchmesser];
	$vorschau = $_POST[vorschau];
	}

$var[1] = "	require 'sketchup.rb'
	def createFace (points,height)
   	base = Sketchup.active_model.active_entities.add_face points
   	base.pushpull 0 - height
	end 
	def createtable

# ********** Variablen ********** #

	# Folgende Variabeln editieren!
	# X = breite,  Y = tiefe,  Z = höhe
	breite = ";
	$breite = "$breite";
	$var[2] = ".mm
	tiefe = ";
	$tiefe = "$länge";
	$var[3] = ".mm
	hoehe = ";
	$hoehe = "$hoehe";
	$var[4] = ".mm
	tischbeinhoehe = ";
	$b_laenge = "$b_laenge";
	$var[5] = ".mm
	durchmesser = ";
	$b_durchmesser = "$b_durchmesser";
	$var[6] = ".mm
	abstand = 150.mm
	staerke = 40.mm...";

$text = $var[1];
$text = $breite;
$text = $var[2];
$text = $tiefe;
$text = $var[3];
$text = $hoehe;
$text = $var[4];
$text = $b_laenge;
$text = $var[5];
$text = $b_durchmesser;
$text = $var[6];

Ist das richtig so? Wie funktioniert jetzt das mit dem runterladen? Vielen Dank für die bisherigen schnellen Antworten, und um diese Zeit :D
 
Bin eh Nachtschwärmer ^^
PHP:
$var[1] = "    require 'sketchup.rb'
    def createFace (points,height)
       base = Sketchup.active_model.active_entities.add_face points
       base.pushpull 0 - height
    end 
    def createtable

# ********** Variablen ********** #

    # Folgende Variabeln editieren!
    # X = breite,  Y = tiefe,  Z = höhe
    breite = ";
//    $breite = "$breite";
    $var[2] = ".mm
    tiefe = ";
//    $tiefe = "$länge";
    $var[3] = ".mm
    hoehe = ";
//    $hoehe = "$hoehe";
    $var[4] = ".mm
    tischbeinhoehe = ";
//    $b_laenge = "$b_laenge";
    $var[5] = ".mm
    durchmesser = ";
//    $b_durchmesser = "$b_durchmesser";
    $var[6] = ".mm
    abstand = 150.mm
    staerke = 40.mm...";

Die Kommentierten Teile kannst du dir sparen, weil du die Variablen ja vorher schon definiert hast...
Im Endeffekt machst du da nur $breite=$breite; <doppelt gemoppelt hält zwar länger, sind aber nur unnötige bytes im Skript...

PHP:
$text = $var[1];
$text .= $breite;
$text .= $var[2];
$text .= $tiefe;
$text .= $var[3];
$text .= $hoehe;
$text .= $var[4];
$text .= $b_laenge;
$text .= $var[5];
$text .= $b_durchmesser;
$text .= $var[6];

Den "." vorm "=" nicht vergessen, sonst überschreibst du die Variable, aber du musst ja nur was dahinter schreiben ;)

echo $text;

Müsste dir dann den Text korrekt ausgeben...
Evtl wird die Formatierung nich ganz passen, musste mal schaun...

Damit hast du jedenfalls den Text komplett mit den Variablen schonmal in $text stehen...

Mit
PHP:
# Funktion zum Schreiben in eine Datei 
        function sl_writeFile($file, $data, $mode = 'a'){ 
            fopen($file, $mode); 
            fwrite($fp, $data); 
            fclose($fp); 
        } 

sl_writeFile(Dateiname.Endung, $text)
schreibst du das dann in eine Datei...

Wie du dann die Datei letztlich richtig zum downloaden anweist musste ma ->http://www.gidf.de fragen ^^
 
PHP:
if(isset($_POST[hoehe]) || ($_POST[laenge]) || ($_POST[breite]) || ($_POST[b_laenge]) || ($_POST[b_durchmesser]) || ($_POST[vorschau]))
Ich denke mal, du willst eher das hier:
PHP:
if (isset($_POST['hoehe']) &&
    isset($_POST['laenge']) &&
    isset($_POST['breite']) &&
    isset($_POST['b_laenge']) &&
    isset($_POST['b_durchmesser']) &&
    isset($_POST['vorschau']))
Das isset musst du jedes mal ausschreiben. Die || habe ich durch && ersetzt, denn es sollen ja alle Felder ausgefüllt sein und nicht nur irgendeines. (Oder?) Schlussendlich sollte man die Apostrophe nicht vergessen, wenn man auf ein assoziatives Array zugreift.

PHP:
	$hoehe = $_POST[hoehe];
	$laenge = $_POST[laenge];
	$breite = $_POST[breite];
	$b_laenge = $_POST[b_laenge];
	$b_durchmesser = $_POST[b_durchmesser];
Hier würde ich eher das hier schreiben:
PHP:
	$hoehe = intval($_POST['hoehe']);
	$laenge = intval($_POST['laenge']);
	$breite = intval($_POST['breite']);
	$b_laenge = intval($_POST['b_laenge']);
	$b_durchmesser = intval($_POST['b_durchmesser']);
Damit wird sichergestellt, dass in den Variablen wirklich Ganzzahlen stehen und im Anschluss ein korrektes Skript generiert wird.

Um einen Dateidownload zu starten, sollte man entsprechende Header senden:
PHP:
header('Content-Type: application/x-ruby');
header('Content-Disposition: attachment; filename="tisch.rb"');

Und die eigentliche Ausgabe des Skripts würde ich nicht so umständlich über einen String machen, sondern es einfach außerhalb der PHP-Blöcke notieren und an den passenden Stellen die Variablen ausgeben lassen:
PHP:
<?php
// Hier die if-Abfrage, die Befüllung der Variablen
// und das Setzen der Header
?>
require 'sketchup.rb'

def createFace (points,height)
  base = Sketchup.active_model.active_entities.add_face points
  base.pushpull 0 - height
end 

def createtable
  # ********** Variablen ********** #
  # Folgende Variabeln editieren!
  # X = breite,  Y = tiefe,  Z = höhe
  breite = <?= $breite ?>.mm
  tiefe = <?= $tiefe ?>.mm
  hoehe = <?= $hoehe ?>.mm
  tischbeinhoehe = <?= $b_laenge ?>.mm
  durchmesser = <?= $b_durchmesser ?>.mm
  abstand = 150.mm
  staerke 40.mm
…

<?php
}
?>

Grüße,
Matthias
 
Hi Matthias

Erstmal vielen Dank für die Tipps. Das Ruby-Script muss gar nicht auf die Homepage ausgegeben werden (also nur im Hintergrund), lediglich die Werte abgeändert und dann als tisch.rb runtergeladen werden.

Kann ich die <?= $breite ?> ... trotzdem anwenden auch wenn sie im php sind?

greez
 
Zurück