php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.08.2009, 19:00  
Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 30
PHP-Kenntnisse:
Anfänger
emasch befindet sich auf einem aufstrebenden Ast
Standard Text in textarea in anderer Datei einfügen

Hallo zusammen,

Ich schreibe grade an einem kleinen "Editor" in dem man den Text auf einer Internetseite bearbeiten kann. Da die meisten Personen, die dort Texte einstellen keine Ahnung von HTML haben, möchte ich Texte per klick auf einen Button einfügen. Das Funktioniert auch sehr gut.

Jetzt möchte ich gerne einen Butten zum einfügen von Bildern hinzufügen. Wenn man auf diesesn Button klickt, soll sich ein neues Fenster oder was auch immer öffnen, in der man den Alternativ Text eingeben kann, und die Datei hochlädt. Dann soll das Formular abgeschickt werden. Daraufhin erzeugt ein PHP Skript den Dateinamen und den Alternativtext. Im Prinzip erzeugt das Skript den Kompletten Code, der eingefügt werden soll.

Nun zu meinem Problem.
Wie bekomme ich den Code aus dem Skript in die Textarea eingefügt?

Ich hoffe ihr versteht mich. Wenn nicht einfach fragen.

Die Dateinamen sind (in der reihenfolge der codes) index.php upload.php und tools/textInsert.js


Hier meine Codes:

Das hier ist die index.php (also die Startseite)
HTML-Code:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title></title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="style.css">
<script language="JavaScript" type="text/javascript" src="tools/textInsert.js"></script>
</head>
<body>
<?php
$jaNein = false;

if ($jaNein == false)
{
	?>
	Liegt die Datei auf dem Server?
	<form action="" method="POST" name="formular">
		<input name = "ja" type="submit" value="JA">
		<input name = "nein" type="submit" value="NEIN">
	</form>
	<?php
	$jaNein = true;
}
?>

<?php
if (isset($_POST['ja']))
{
	// Dieser Zweig wird noch nicht benoetigt
}

if (isset($_POST['nein']))
{
	?>
	<form action="upload.php" method="post" enctype="multipart/form-data" name="upload">
	<br><input type="text" name="name">
	<br>gro&szlig;:<input type="file" name="gross">
	<br>klein:<input type="file" name="klein">
	<input type="submit" name="submit" value="Upload">
	</form> 	
	<?php
}
?>
</body>

</html> 

Das hier ist das Skript welches die hochgeladenen Dateien verwaltet und den Code für die Textarea Generiert.
PHP-Code:
<?php
session_start
();
    
$_SESSION['path'] = "./ordner/";

// Formular wurde abgeschickt
if($_POST["submit"] == "Upload"
{
    
filename();
    
upload("gross"$_SESSION['extension']);
    
upload("klein"$_SESSION['extension']);
}
else 
{
    echo 
"Bitte benutzen Sie das Upload Formular.";
}

function 
filename()
{
    
$extension pathinfo($_FILES["gross"]["name"]);
    
$_SESSION['extension'] = $extension $extension["extension"];
    
    
$name htmlentities ($_POST['name']);

    
$title $alt $name;
    
    
$name strtolower($name);
    
$name str_replace(" ","_",$name);
    
$name str_replace("&auml;""ae"$name);
    
$name str_replace("&uuml;""ue"$name);
    
$name str_replace("&ouml;""oe"$name);
    
$name str_replace("&szlig;""ss"$name);
    
    
$name preg_replace("/[^a-zA-Z0-9_]/" "" $name);
    
    
    
$_SESSION['title'] = $title;
    
$_SESSION['alt'] = $alt;
    
    
$filename $_SESSION['path'].$name;
    
    while (
file_exists($filename."_gross.".$extension) OR file_exists($filename."_klein.".$extension))
    {
        
$filename $filename."_".time()%10000;
    }
    
    
    
$_SESSION['filename'] = $filename;
    echo 
$filename."_gross.".$extension."<br>";
}

function 
upload($search$extension
{
    
// Variabeln festlegen
    
$max_byte_size 2097152;
    
$allowed_types "(jpg|jpeg|gif|bmp|png)";
    
$path $_SESSION['path'];
    
    
// Wurde wirklich eine Datei hochgeladen?
    
if(is_uploaded_file($_FILES[$search]["tmp_name"])) 
    {
        
// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
        
if(preg_match("/\." $allowed_types "$/i"$_FILES[$search]["name"])) 
        {
            
// Datei auch nicht zu groß
            
if($_FILES[$search]["size"] <= $max_byte_size
            {
                
// Alles OK -> Datei kopieren
                
if(copy($_FILES[$search]["tmp_name"], $_SESSION['filename']."_".$search.".".$extension))             // Hier Dateiname aendern
                
{
                    echo 
"Datei erfolgreich hochgeladen!<br>";
                    echo 
"Name: " $_FILES[$search]["name"] . "<br>";
                    echo 
"Gr&ouml;&szlig;e: " $_FILES[$search]["size"] . " Byte<br>";
                    echo 
"MIME-Type: " $_FILES[$search]["type"] . "<br>";
                    echo 
"Link: <a href=\"".$path.$_FILES[$search]["name"] . "\">".$path.$_FILES[$search]["name"] . "</a>";
                }
                else 
                {
                    echo 
"Datei konnte nicht hochgeladen werden.";
                }
            }
            else 
            {
                echo 
"Die Datei darf nur eine Gr&ouml;&szlig;e von " $max_byte_size " Byte besitzen.";
            }
        }
        else 
        {
            echo 
"Die Datei besitzt eine ung&uuml;ltige Endung.";
        }
    }
    else 
    {
        echo 
"Keine Datei zum Hochladen angegeben.";
    }
}
?>

Das hier ist die Javascript Datei (fragt mich nicht warum sie funktioniert, sie tut es einfach. Ich habe von Javascript nämlich keine Ahnung.
Code:
<!--
function insert(aTag, eTag) {
  var input = document.forms['formular'].elements['text'];
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);      
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}
//-->
emasch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.08.2009, 20:13  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von emasch Beitrag anzeigen
Nun zu meinem Problem.
Wie bekomme ich den Code aus dem Skript in die Textarea eingefügt?
Welchen Text denn, die Bildüber-/unterschrift? Ich sag mal blöd: So wie du den normalen Text auch hineinbekommst?

<textarea> ist halt als WYSIWYG wirklich schlecht geeignet, merkst du ja jetzt mit den Bildern oder überhaupt verschiedenen Formatierungen. Deshalb gehen WYS.. Editoren auch den weg über einen editierbaren IFrame. Ist allerdings auch ne Ecke komplexer. Reicht es nicht für den Anfang, wenn du eine Texteingabe/Bildereingabe ermöglichst, die ihren Inhalt jeweils als HTML in einen <div> Containter schreiben? Dann könntest du diesen neuen HTML-Knoten auch formatieren und Bilder einfügen, da es ja normales HTML ist.

Und wie immer der Hinweis: Es gibt bereits solche Editoren, und sie sind gut WYSIWYG Editoren ist so wie Mailheader bauen oder PDFs schreiben, eine der wenigen Sachen, für die man froh sein kann, dass es schon fertige Skripte dafür gibt und die auch nicht sonderlich geeignet zum Lernen sind.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 24.08.2009, 20:17  
Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 30
PHP-Kenntnisse:
Anfänger
emasch befindet sich auf einem aufstrebenden Ast
Standard

kennst du da einen guten, den ich auch leicht anpassen kann? so viel beispielsweise die Menüleisten oder auch das Menü, wo man bilder einfügen kann, so dass ich dann trotzdem die Bilder direkte damit hochladen kann?

Ich bin froh um jeden vorschlag...

Über ein schönes tutorial würde ich mich auch freuen
emasch ist offline   Mit Zitat antworten
Alt 24.08.2009, 20:36  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ne kenne keine, aber wahrscheinlich musst du den Uploadvorgang sowieso vom Editor abkoppeln. Sprich du kannst Bilder hochladen unabhängig vom Texteditor, der dann lediglich aus diesem Uploadpool Bilder einbinden kann. Ist aber nur ein Vorschlag.

Beim Googlen wysiwyg image upload scheinen mir die Ergebnisse aber etwas dubios zu sein, sei da also vorsichtig
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 24.08.2009, 20:42  
Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 30
PHP-Kenntnisse:
Anfänger
emasch befindet sich auf einem aufstrebenden Ast
Standard

hmm.... Dann bleibe ich dann doch lieber bei meinem Editor und bastel etwas daran herum. Gibt es denn nicht die möglichkeit, den Text aus einer Session Variable von PHP einzulesen. Also dass das einfügen des Textes durch javaskript erst dann erfolgt, wenn ein gewisses ereignis eingetreten ist, beispielsweise das Beednen eines PHP Skriptes, oder das Setzen einer Variable auf true? (ich kann ja den Submitbutton so einstellen, dass der ein solches ereignis sendet oder geht das nicht)

Ich habe leider keine Ahnung von JS lediglich von PHP
emasch ist offline   Mit Zitat antworten
Alt 24.08.2009, 21:10  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Bin nicht sicher wie du das meinst, aber natürlich kannst du im selben Formular ein <input type="file" /> einbauen, diese Datei dann bei submit hochladen und die zusätzliche Bildunterschrift einfach in deinen <textarea> schreiben. Nicht durch JS, sondern eben direkt durch PHP:
PHP-Code:
<textarea><?php echo $_POST["textareaName"] . "\n" $_POST["fileuploadSubtitle"?></textarea>
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 24.08.2009, 21:17  
Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 30
PHP-Kenntnisse:
Anfänger
emasch befindet sich auf einem aufstrebenden Ast
Standard

Ich habe ja einen Button, da steht beispielsweise Bild drauf. Wenn man da drauf klickt, wird ein php Skript ausgeführt. Wenn man dann in diesesm Skript, welches ein Formular enthält, wiederum abschickt, soll das erste JS welches den Text einfügt weiterlaufen und den Text in die Textarea einfügen.

Was auch gehen würde, nur leider weiss ich nur dass es geht, aber nicht wie, dass wenn ich auf bild klicke, dass dann in dem gleichen Fenster ein weiteres Formularfeld auftaucht, in den man dann die Daten eintragen kann. So eine Art dynamisches Formular. Einzige Problem ist, dass ich kein Reload machen darf, da sonst die Daten in der Textarea nicht gespeichert werden, oder kann ich die Daten in der Textarea bei einem Reload direkt irgendwo zischenspeichern und nachher wieder raus hohlen?
emasch ist offline   Mit Zitat antworten
Alt 25.08.2009, 10:47  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Sehe ich das richtig, daß Du lediglich ein weiteres Formular oder Formularfeld haben willst, wenn man auf Bild klickt?
Dann solltest Du mit createElement(), setAttribute() und appendChild() weiter kommen.

Alles zu finden in der JavaScript DOM Referenz
Arne Drews ist offline   Mit Zitat antworten
Alt 25.08.2009, 17:01  
Benutzer
 
Registriert seit: 24.08.2009
Beiträge: 30
PHP-Kenntnisse:
Anfänger
emasch befindet sich auf einem aufstrebenden Ast
Standard

naja, ich habe jetzt ein dynamisches Formular, welches aber keine Daten Sendet, da es nie abgeschickt wird, weil die Seite nicht neugeladen werden darf. Gibt es eine Möglichkeit, ein Formular abzuschicken ohne die Seite nuladen zu müssen? und kann man dann die Daten mit PHP weiter auswerten?

Mein Formular sieht momentan so aus:
HTML-Code:
<div id="bild" style="display:none;">
	<a href="#" onclick="javascript:switchlayer('nein');
	return false;">NEIN!</a>
	<a href="#" onclick="javascript:switchlayer('ja');
	return false;">JA!</a>
	<div id="nein" style="display:none;">
		<form action="upload.php" method="post" enctype="multipart/form-data" name="upload">
		<br><input type="text" name="name">
		<br>gro&szlig;:<input type="file" name="gross">
		<br>klein:<input type="file" name="klein"> <!-- Problem ist, dass das formular nie abgeschickt wird, wegen return false, und dass ich deswegen die Variablen nicht mit Post abfangen kann :-(
		<input type="button" value="Einf&uuml;gen" onClick="insert('<?php include('upload.php'); ?>', '')">
		</form> 
	</div>
	
	<div id="ja" style="display:none;">
		<br>option 1
		<br>option 2
	</div>
</div> 
emasch ist offline   Mit Zitat antworten
Alt 25.08.2009, 18:26  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ajax: XMLHttpRequest.
Findes Du genügend Erklärungen hier im Forum, einfach Suche benutzen.
Arne Drews 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
Text Ersetzen an anderer Stelle phpde Off-Topic Diskussionen 6 03.08.2009 20:12
Datei muss von anderer Datei aufgerufen werden? Ind3X PHP Tipps 2009 10 21.03.2009 13:53
Textarea soll text in text.txt Datei schreiben Clawhammer PHP Tipps 2008 3 26.11.2007 10:38
Text datei geordnet auslesen!! lindner PHP Tipps 2007 7 18.11.2005 09:52
Text aus der DB verteilen PHP Tipps 2007 17 16.11.2005 12:04
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
Text aus plain text datei filtern PHP-Fortgeschrittene 7 19.07.2005 15:59
text datei löschen bzw. überschreiben PHP Tipps 2005 7 11.04.2005 16:19
[Erledigt] Text oben bündig mit Textarea &quot;CSS&quot; HTML, Usability und Barrierefreiheit 3 08.03.2005 09:42
Text mitten in einer Datei Schreiben PHP Tipps 2005 14 28.02.2005 12:42
Problem bei Text Datei PHP Tipps 2005 7 24.01.2005 20:31
.txt Datei in Textarea laden und aktualisieren PHP Tipps 2005 12 12.01.2005 19:19
Javascript: Text einfügen geht nich über "javascript:BL HTML, Usability und Barrierefreiheit 14 19.10.2004 21:44
Text aus Datei lesen und einfügen PHP Tipps 2004 3 24.09.2004 12:26
In eine Neue Zeile gehen in einer Text datei socke PHP Tipps 2004 4 04.09.2004 02:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php text einer datei in eine andere einfuegen, javascript text in input einfügen, schrift in eine php datei einfügen, daten aus textarea in javascript datei, javascript upload textarea, php $_post text anhängen, ein php formular in andere php datei einfügen, upload text to textarea javascript, ajax datei hochladen textarea, var instext zusätzlich bild, php texteingabe in datei, textarea value = andere php datei, ajax text hochladen, text einfügen in textarea javascript, text von datei in datei einfügen javascript, php text eingeben methode, javascript text aus anderer datei, ajax text an anderen anfügen, textarea file hinzufügen, userscript text in textarea

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 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