Text bearbeiten und downloaden als Textdatei

Da hab ich wohl nen bissl zu kompliziert gedacht Matthias ^^

t das mit <?= $breite ?> überhaupt?
Korrekter PHP-Syntax wäre doch <?php echo $breite; ?> oder nich!?
 
Also ich hab das ganze jetzt nochmals nach euren Tipps gemacht...

PHP:
<?php
header('Content-Type: application/x-ruby'); 
header('Content-Disposition: attachment; filename="tisch.rb"');

if (isset($_POST['hoehe']) &&
    isset($_POST['laenge']) &&
    isset($_POST['breite']) &&
    isset($_POST['b_laenge']) &&
    isset($_POST['b_durchmesser']) &&
    isset($_POST['vorschau']))
	{
	$hoehe = intval($_POST['hoehe']);
    $laenge = intval($_POST['laenge']);
    $breite = intval($_POST['breite']);
    $b_laenge = intval($_POST['b_laenge']);
    $b_durchmesser = intval($_POST['b_durchmesser']);
	}

$text = "
	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 = <?php echo $breite; ?>.mm
	tiefe = <?php echo $laenge; ?>.mm
	hoehe = <?php echo $hoehe; ?>.mm
	staerke = 40.mm
	tischbeinhoehe = <?php echo $b_laenge; ?>.mm
	durchmesser = <?php echo $b_durchmesser; ?>.mm
	abstand = 150.mm

	#Ab hier keine Code Veränderungen
	null = 0.mm
	tischbeinkanten = 200
	radius = (durchmesser / 2)
	beinhoehe = (hoehe - staerke)
	tischbein1 = [abstand,abstand,null]
	tischbein2 = [(breite - abstand),abstand,null]
	tischbein3 = [(breite - abstand),(tiefe - abstand),null]
	tischbein4 = [abstand,(tiefe - abstand),null]

# ********** Platte ********** #

	model = Sketchup.active_model
	entities = model.active_entities
	group = entities.add_group
	entities = group.entities

	pts = [[null,null,tischbeinhoehe], [breite,null,tischbeinhoehe], [breite,iefe,tischbeinhoehe], [null,tiefe,tischbeinhoehe]]
	
	table = entities.add_face pts
	table.pushpull tischstaerke


# ********** Beine ********** #

	# 1. Bein #
	model = Sketchup.active_model
	entities = model.active_entities
	group = entities.add_group
	entities = group.entities

	beinkreis1 = entities.add_circle tischbein1, Z_AXIS, radius, tischbeinkanten
    	tischbein1 = entities.add_face beinkreis1
    	tischbein1.pushpull -tischbeinhoehe

	# 2. Bein #
	model = Sketchup.active_model
	entities = model.active_entities
	group = entities.add_group
	entities = group.entities

	beinkreis2 = entities.add_circle tischbein2, Z_AXIS, nradius, tischbeinkanten
    	tischbein2 = entities.add_face beinkreis2
    	tischbein2.pushpull -tischbeinhoehe

	# 3. Bein #
	model = Sketchup.active_model
	entities = model.active_entities
	group = entities.add_group
	entities = group.entities

	beinkreis3 = entities.add_circle tischbein3, Z_AXIS, radius, tischbeinkanten
    	tischbein3 = entities.add_face beinkreis3
    	tischbein3.pushpull -tischbeinhoehe

	# 4. Bein #
	model = Sketchup.active_model
	entities = model.active_entities
	group = entities.add_group
	entities = group.entities
        
         

	type = m.materialType     
	if (type)
	UI.messagebox type
	else
	UI.messagebox "Failure"
  
	beinkreis4 = entities.add_circle tischbein4, Z_AXIS, radius, tischbeinkanten
    	tischbein4 = entities.add_face beinkreis4
    	tischbein4.pushpull -tischbeinhoehe
	end
	createtable

# ********** EOF ********** #
";

$datei = $text;
readfile($datei);

?>

Frage 1. Die Stelle mit "Failure" ... wird das trotzdem funktionieren?

Frage 2. Ich hab im HTML Code 2 Submit knöpfe, wie kann ich die ausseinanderhalten? weill wenn ich onSubmit brauche spillt es eigentlich keine rolle welchen kopf ich drücke, kommt beide male aufs gleiche raus... und wie verlinke ich diesen button, damit dann dieses script durchgespielt wird?

thx für eure hilfe
 
So, download und darstellung funktioniert mittlerweile perfekt =)

Jetzt bleibt noch das mit dem "Failure", wenn ich 'Failure' mache funktioniert das mit Ruby nicht mehr ^^

Und ich dachte isset bedeutet er macht nur weiter wenn alle Felder ausgefüllt worden sind... Wenn jedoch im Formularfeld leer gelassen wird kommt nachher einfach der wert mit 0 hin. Wie kann ich den download erst starten lassen wenn in jedem feld etwas drin steht? - hab bei gidf nichts schlaues gefunden :S

@Matthias Vielen vielen dank für den tipp mit dem download, im text konnte ich sogar nur $breite setzten ohne <?php......?>, und am schluss hat es einfach noch ein echo gebraucht, das readfile was normalerweise zum download gehört macht nur probleme wenn ich es drin hab.


Edit: Hat sich alles erledigt, hab die Nacht durchgearbeitet :eek:
Aber nochmals vielen Dank vorallem an Chaosengel_Gabriel der mir so schnell geantwortet hat.

greez paddy

:offtopic:
 
Zuletzt bearbeitet:
Und ich dachte isset bedeutet er macht nur weiter wenn alle Felder ausgefüllt worden sind... Wenn jedoch im Formularfeld leer gelassen wird kommt nachher einfach der wert mit 0 hin. Wie kann ich den download erst starten lassen wenn in jedem feld etwas drin steht? - hab bei gidf nichts schlaues gefunden :S
Du solltest den if-Block bis zum Ende des Scripts erweitern (also die schließende geschweifte Klammer bis vor das ?> ziehen).

@Matthias Vielen vielen dank für den tipp mit dem download, im text konnte ich sogar nur $breite setzten ohne <?php......?>, und am schluss hat es einfach noch ein echo gebraucht, das readfile was normalerweise zum download gehört macht nur probleme wenn ich es drin hab.
Ich hab ja auch geschrieben, dass du den Ruby-Quellcode einfach außerhalb der PHP-Blöcke schreiben sollst und nicht in einen String. Dann hast du auch das Problem mit dem „Failure“ nicht mehr.

t das mit <?= $breite ?> überhaupt?
Korrekter PHP-Syntax wäre doch <?php echo $breite; ?> oder nich!?
Klarer Fall von „kommt drauf an“. Die Variante mit echo funktioniert immer, die Kurzversion nur, wenn die Direktive short_open_tag eingeschaltet ist (Standardeinstellung, aber nicht unbedingt empfehlenswert).

Grüße,
Matthias
 
Zitat:
Zitat von Chaosengel_Gabriel Beitrag anzeigen
t das mit <?= $breite ?> überhaupt?
Korrekter PHP-Syntax wäre doch <?php echo $breite; ?> oder nich!?
Klarer Fall von „kommt drauf an“. Die Variante mit echo funktioniert immer, die Kurzversion nur, wenn die Direktive short_open_tag eingeschaltet ist (Standardeinstellung, aber nicht unbedingt empfehlenswert).

Alles klar, wusste noch nich das es das gibt :D
Aber man lernt ja nie aus... Thx Matthias ;)
 
Ich hätte in die Datei einfach Platzhalter für die Variablen eingesetzt und dann später nach dem einfachen Prinzip eines Templateparser die Werte ersetzt. Wenn sich dann nämlich später die Datei ändert, lädst du nur die neue Datei mit den Platzhalter hoch ohne großartig im PHP-Script umzubasteln.
 
Zurück