myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Webmaster Talk > Entwicklung & Programmierung
Seite neu laden

Textarea Übergabe

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 25.06.12, 21:54   #1
ludwiger
Anfänger
 
Registriert seit: Mar 2009
Beiträge: 4
Bedankt: 5
ludwiger ist noch neu hier! | 0 Respekt Punkte
Standard Textarea Übergabe

hallo,
ich würde gerne jede zahl wo in meiner textarea in einer spalte steht in
einer Rechenformel fügen und die Ergebnisse wie bei der Eingabe auch genau
Untereinader ausgeben...

Mein Problem besteht im explode() bzw es nach der Rechnung wieder in einen String zusammenzusetzen...

<form action="index.php" method="POST">
<textarea name="cell_ntsc" type="text" cols="50" rows="10"></textarea><br /> <br />

<?php
$celltime_ntsc = $_POST["cell_ntsc"];

...

$celltime_pal = $celltime_ntsc / 29.97 * 23.976;
$celltime_pal = ceil($celltime_pal);

...

$celltime_pal = nl2br($celltime_pal);
echo $celltime_pal;
?>

<br /><br />

<input type="Submit" value="Ausrechnen">
</form>
ludwiger ist offline   Mit Zitat antworten
Ungelesen 26.06.12, 17:17   #2
d34fdumbbl1nd
Erfahrener Newbie
 
Benutzerbild von d34fdumbbl1nd
 
Registriert seit: Dec 2010
Beiträge: 104
Bedankt: 52
d34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkte
Standard

Zitat:
Zitat von ludwiger Beitrag anzeigen
Mein Problem besteht im explode() bzw es nach der Rechnung wieder in einen String zusammenzusetzen...
vom explode ist im quelltext gar nichts zu sehen. explode gibt eine array liste zurück. somit musst du entweder jedes element einzeln behandeln oder im anschluss zusammen rechnen.

wie auch immer, kurze erläuterung.

ein textarea enthält somit zeilenumbrüche. später kann jeder string allerdings immer noch leerzeilen und der gleichen enthalten. die evtle fehler produzieren oder sich unerwartet verhalten. hier drei möglichkeiten wie du die zeichenketten wieder verbinden kannst.
also
Code:
<?php

$new_line_separator = "\n";

$input = '15
20
25
30
35
40';

$array = explode( $new_line_separator, $input );
$output_array = array();
$output_array_push = array();
$output_string = (string) '';
$output_string_2 = (string) '';

foreach( $array as $k => $v )
{
	$math = trim( $v ) / 29.97 * 23.976;
	
	$output_string .= $math; // string anhängen
	$output_string .= ( $k < count( $array ) -1 ) ? $new_line_separator : ''; // zeilenumbruch anhängen
	
	$output_string_2 = $output_string_2 . $math; // so wäre es beispielsweise auch in	javas*****
	if( $k < count( $array ) -1 )
	{
		$output_string_2 = $output_string_2 . $new_line_separator;
	}
	
	$output_array[] = $math; // wert einer liste hinzufügen
	
	$output_array_push_count = array_push( $output_array_push, $math ); // wert einer liste hinzufügen
}
$output_array_string = (string) implode( $new_line_separator, $output_array ); // das array zu einem string zusammenführen

$output = array
(
	'output_string' , 
	'output_string_2' , 
	'output_array_string' , 
	'output_array' , 
	'output_array_push' , 
	'output_array_push_count' , 
);

// ausgabe

print ( '<pre>' );
foreach( $output as $out_var )
{
	if( !empty( $$out_var ) ) // $$ variable variablen
	{
		print ( '<b>' . $out_var . '</b>' );
		if( is_array( $$out_var ) )
		{
			print ( ' Array(' . count( $$out_var ) . ')' );
		}
		else if( is_string( $$out_var ) )
		{
			print ( ' String(' . strlen( $$out_var ) . ')' );
		}
		print ( $new_line_separator );
		print_r( $$out_var );
		print ( str_repeat( $new_line_separator, 2 ) );
	}
}
print ( '</pre>' );

?>
der oben stehende code gibt folgendes an den browser
Code:
output_string String(17)
12
16
20
24
28
32

output_string_2 String(17)
12
16
20
24
28
32

output_array_string String(17)
12
16
20
24
28
32

output_array Array(6)
Array
(
    [0] => 12
    [1] => 16
    [2] => 20
    [3] => 24
    [4] => 28
    [5] => 32
)


output_array_push Array(6)
Array
(
    [0] => 12
    [1] => 16
    [2] => 20
    [3] => 24
    [4] => 28
    [5] => 32
)


output_array_push_count
6

das zu deiner frage.

hier mein vorschlag. die php datei sieht dann wie folgt im browser aus (inklusive stylesheet, javas***** zur zentrierung, pfeil grafik -base64 encodiert). getest im firefox 13.0.1 und chrome 19.0.1084.56 m
das input feld habe is per css ausgeblendet, da der ie bei javas***** forumal manipulation sonst rum machen könnte.

du kannst es wie folgt aufrufen
entweder per get übermittelung in einer List
// .php?input[]=10&input[]=20&input[]=30&input[]=40&input[]=50&input[]=60&input[]=70&input[]=80&input[]=90

in einem komma separiertem string
// .php?input=10,20,30,40,50,60,70,80,90,100

nur eine zahl
// .php?input=100

oder in einem string nach frei verwendbarem separator
// .php?input=100;60&separator=;

wenn man jetzt noch lustig wäre könnte man das ganze auch noch komplett mit javas***** zum laufen kriegen. sprich: php falls javas***** aus ist und ansonsten nur per javas*****.

[IMG]http://i1122.photobucket.com/albums/l524/deafdumpblind/screenshots/php_html_javas*****_umberechnung_von_ntsc_zu_pal.p ng[/IMG]

Code:
<?php

// ÜTF-8 ÉNCÖDÈD
error_reporting(E_ALL);

$input_content = (string) '';
$calc_content = (string) '';
$output_content = (string) '';

$search_replace_table = array
	(
		'__body_background_color__'	=>	'silver' ,
		'__body_font_family__'		=>	'monospace' , 
		
		'__container_id__'			=> 'container' , 
		'__container_height__'		=> '550' , 
		'__container_width__'		=> '470' ,
		'__container_padding_top__'	=> '2em' , 
		
		'__textarea_height__'	=> '500' ,
		'__textarea_width__'	=> '100' , 
		'__textarea_border__'	=> '1px solid gray' , 
		
		'__label_font_color__'	=>	'white' , 
		
		'__form_name__' 	=> 'ntsc2pal' ,
		'__form_action__'	=> basename( __FILE__ ) , 
		'__form_method__'	=> 'POST' , 
		
		'__input_id__'								=> 'cell_ntsc' , 
		'__input_headline__'						=> 'ntsc' , 
		'__input_title__'							=> 'input' , 
		'__input_submit_id__'						=> 'submit_berechnen' , 
		'__input_submit_value__'					=> 'berechnen &gt;' ,
		'__input_submit_button_width__'				=> '162' ,
		'__input_submit_button_background_color__'	=> 'rgba( 0, 255, 0, 0.5 )' , 
		'__input_submit_button_border__'			=> '1px solid black' , 
		'__input_submit_button_color__'				=> 'gray' , 
		'__input_submit_button_font_weight__'		=> 'bold' , 
		'__input_content__'							=> $input_content , 
		'__input_style__'							=> 'cursor: text;' , // with ending semicolon
		
		'__calc_id__'					=> 'cell_calculation' , 
		'__calc_headline__'				=> 'calculation' , 
		'__calc_height__'				=> '471' , 
		'__calc_width__'				=> '140' , 
		'__calc_title__'				=> 'start' , 
		'__calc_background_color__'		=> 'rgba( 0, 255, 0, 0.5 )' , 
		'__calc_background_image__'		=> 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHkAAABXCAYAAAAgXOoPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTAyMzk2RjdCRjgwMTFFMUJEQTNEN0QwNkIxQUM1MjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTAyMzk2RjhCRjgwMTFFMUJEQTNEN0QwNkIxQUM1MjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMDIzOTZGNUJGODAxMUUxQkRBM0Q3RDA2QjFBQzUyNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMDIzOTZGNkJGODAxMUUxQkRBM0Q3RDA2QjFBQzUyNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgFdILgAAAcKSURBVHja7F1NaF1F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)' , 
		'__calc_background_position__'	=> 'center center' , 
		'__calc_background_repeat__'	=> 'no-repeat' , 
		// to exchange the calculation modifier - at least one more line must be modified
		'__calc_content__'				=> '/ 29.97 * 23.976' , // search for calculation
		'__calc_style__'				=> 'cursor: default;' , // with ending semicolon
		'__calc_cursor_js__'			=> 'pointer' , 
		
		'__output_id__'			=> 'cell_output' ,
		'__output_headline__'	=> 'pal' , 
		'__output_title__'		=> 'output' ,
		'__output_content__'	=> $output_content , 
		'__output_style__'		=> 'cursor: default;' , // with ending semicolon
		
	);

// call
// .php?input[]=10&input[]=20&input[]=30&input[]=40&input[]=50&input[]=60&input[]=70&input[]=80&input[]=90
// .php?input=10,20,30,40,50,60,70,80,90,100
// .php?input=100
// .php?input=100;60&separator=;

// $_POST user input if given
$cell_key = $search_replace_table['__input_id__']; // 'cell_ntsc';

// $_GET to override $_POST id given
$input_key = 'input'; // for get method
$input_separator_key = 'separator'; // for get method
$input_separator = ','; // for get method

$headline_input = $search_replace_table['__input_headline__']; // 'ntsc';
$headline_calc = $search_replace_table['__calc_headline__']; // 'calculation';
$headline_output = $search_replace_table['__output_headline__']; // 'pal';

$titles = array();
$title_input = $search_replace_table['__input_title__']; // 'input';
$title_calc = $search_replace_table['__calc_title__']; // 'start';
$title_output = $search_replace_table['__output_title__']; // 'output';

if( !array_key_exists( $cell_key, $_POST ) )
{
	if( array_key_exists( $input_key, $_GET ) )
	{
		$post_array = array();
		if( is_array( $_GET[$input_key] ) )
		{
			$input_array = $_GET[$input_key];
		}
		if( is_string( $_GET[$input_key] ) )
		{
			if( array_key_exists( $input_separator_key, $_GET ) )
			{
				$input_separator = $_GET[$input_separator_key];
			}
			$input_separator_found = strpos( $_GET[$input_key], $input_separator );
			if( $input_separator_found !== false )
			{
				$input_array = explode( $input_separator, $_GET[$input_key] );
			}
			else
			{
				$input_array = array( trim( $_GET[$input_key] ) );
			}
		}
		if( is_array( $input_array ) )
		{
			foreach( $input_array as $get_input_key => $get_input_value )
			{
				$post_array[] = trim( $get_input_value );
			}
		}
		if( count( $post_array ) > 0 )
		{
			$_POST[$cell_key] = implode( "\n", $post_array );
		}
	}
	else
	{
		$_POST[$cell_key] = implode(
									"\n",
									array(
											'25' , 
											'50' , 
											'75' ,
											'100' ,
											'125' ,
											'150'
										)
									);
	}
}
if( array_key_exists( $cell_key, $_POST ) )
{
	$line_separator = "\n";
	$celltime_ntsc = array();
	$celltime_ntsc = explode( $line_separator, $_POST[$cell_key] );
	$result_string = (string) '';
	$result_array = array();
	if( count( $celltime_ntsc ) > 0 ) // expecting at least one element in the array
	{
		foreach( $celltime_ntsc as $celltime_key => $celltime_value ) // 
		{
			$celltime_value = trim( $celltime_value ); // remove spaces and new lines
			if( is_numeric( $celltime_value ) ) //
			{
				$result_array[] = ceil( $celltime_value / 29.97 * 23.976 ); // calculation
			}
		}
	}
	if( count( $result_array ) > 0 )
	{
		$result_string = implode( "\n", $result_array );
	}
}
$search_replace_table['__input_content__'] = $_POST[$cell_key];
$search_replace_table['__output_content__'] = $result_string;



// HTML MINI TEMPLATE START
// $search_replace_table on top of this document
	
ob_start( 'ob_output' );
?><!DOCTYPE html>
<html>
	<head>
		<title>umrechnung von ntsc auf pal</title>
		<meta charset="UTF-8" />
		<style type="text/css">
			body
			{
				height:           100%;
				width:            100%;
				margin:           0;
				padding:          0;
				background-color: __body_background_color__;
				font-family:      __body_font_family__;
			}
			textarea
			{
				margin:  0;
				padding: 10px;
				border:  __textarea_border__;
				width:   __textarea_width__px;
				height:  __textarea_height__px;
			}
			input#__input_submit_id__ /* submit button */
			{
				width:            __input_submit_button_width__px;
				display:          block;
				background-color: __input_submit_button_background_color__;
				border:           __input_submit_button_border__;
				color:            __input_submit_button_color__;
				font-weight:      __input_submit_button_font_weight__;
				cursor:           pointer;
			}
			textarea#__calc_id__ 
			{
				width:      __calc_width__px;
				height:     __calc_height__px;
				margin-top: 5px;
			}
			label
			{
				font-size:   1.5em;
				font-weight: bold;
				text-align:  center;
				display:     block;
				color:       __label_font_color__;
			}
			.float-left
			{
				float: left;
			}
			.left-space
			{
				margin-left: 2em;
			}
			.pointer , 
			label
			{
				cursor: pointer;
			}
			#__container_id__
			{
				width:  __container_width__px;
				margin: auto;
				padding-top: __container_padding_top__;
			}
		</style>
		<s*****>
		
			function recalibrate( id, width, height )
			{				
				if( document.getElementById( id ) )
				{
					var rootElement     = ( document.documentElement && document.compatMode == 'CSS1Compat' ) ? document.documentElement : document.body;
					var viewport_width  = self.innerWidth ? self.innerWidth : rootElement.clientWidth; // viewport width
					var viewport_height = self.innerHeight ? self.innerHeight : rootElement.clientHeight; // viewport height
					var element = document.getElementById( id );
					var element_width  = width;
					var element_height = height;
					element.style.position = 'absolute';
					element.style.left     = ( ( viewport_width - element_width ) / 2 ) + 'px';
					element.style.top      = ( rootElement.scrollTop + ( viewport_height - element_height ) /2 ) + 'px';
				}
				return
			}
			
			/*
			functions addEvent & removeEvent from
			http://ejohn.org/projects/flexible-javas*****-events/
			oncload call of addeven
			http://www.webmonkey.com/2010/02/javas*****_events/
			*/
			function addEvent( obj, type, fn )
			{
				if ( obj.attachEvent )
				{
					obj['e'+type+fn] = fn;
					obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
					obj.attachEvent( 'on'+type, obj[type+fn] );
				}
				else
				{
					obj.addEventListener( type, fn, false );
				}
				return
			}
			
			function removeEvent( obj, type, fn )
			{				
				if ( obj.detachEvent )
				{
					obj.detachEvent( 'on'+type, obj[type+fn] );
					obj[type+fn] = null;
				}
				else
				{
					obj.removeEventListener( type, fn, false );
				}
				return
			}
			
			function activate()
			{
				document.getElementById( '__container_id__' ).style.paddingTop = '0px';
				document.getElementById( '__input_submit_id__' ).style.display = 'none';
				document.getElementById( '__calc_id__' ).style.height          = '__textarea_height__'+'px';
				document.getElementById( '__calc_id__' ).style.marginTop       = '0'+'px';
				document.getElementById( '__calc_id__' ).style.cursor       = '__calc_cursor_js__';
				// recalibrate( id, width, heigth )
				// also modify css
				// container-width
				// container-height
				addEvent
				(
					window, 'resize',
					function( event )
					{
						recalibrate( '__container_id__', __container_width__, __container_height__ );
					}
				);
				recalibrate( '__container_id__', __container_width__, __container_height__ );
				
				document.getElementById( '__calc_id__' ).style.backgroundColor    = '__calc_background_color__';
				document.getElementById( '__calc_id__' ).style.backgroundImage    = '__calc_background_image__';
				document.getElementById( '__calc_id__' ).style.backgroundPosition = '__calc_background_position__';
				document.getElementById( '__calc_id__' ).style.backgroundRepeat   = '__calc_background_repeat__';
				return
			}
		</s*****>
	</head>
	<body onload="activate();">
		<div id="__container_id__">
			<form name="__form_name__" action="__form_action__" method="__form_method__">
				<div class="float-left">
					<label for="__input_id__" title="__input_title__">__input_headline__</label>
					<textarea name="__input_id__" id="__input_id__" title="__input_title__" style="__input_style__">__input_content__</textarea>
				</div>

				<div class="float-left left-space pointer" onclick="document.ntsc2pal.submit();" style="cursor: pointer;">
					<label for="__calc_id__" title="__calc_title__">__calc_headline__</label>
					<input type="submit" value="__input_submit_value__" id="__input_submit_id__">
					<textarea id="__calc_id__" readonly="readonly" title="__calc_title__" style="__calc_style__">__calc_content__</textarea>
				</div>
			</form>
		
			<div class="float-left left-space">
				<label for="__output_id__" title="__output_title__">__output_headline__</label>
				<textarea id="__output_id__" readonly="readonly" title="__output_title__" style="__output_style__">__output_content__</textarea>
			</div>
			
		</div>
	</body>
</html><?php
ob_end_flush();
// HTML MINI TEMPLATE STOP

function ob_output( $buffer )
{
	global $search_replace_table; // on top of this document

	return
	(
		str_replace
		(
			array_keys( $search_replace_table ) , 
			array_values( $search_replace_table ) , 
			$buffer 
		) 
	);
}
?>
d34fdumbbl1nd ist offline   Mit Zitat antworten
Ungelesen 29.06.12, 01:13   #3
ludwiger
Anfänger
 
Registriert seit: Mar 2009
Beiträge: 4
Bedankt: 5
ludwiger ist noch neu hier! | 0 Respekt Punkte
Standard

vielen dank für die schnelle und supererklärte hilfestellung

ich wollt dich fragen ob du mir mal kurz das ohne javas***** zeigen kannst,
also die ausgabe per formular mit einen submit button.
ludwiger ist offline   Mit Zitat antworten
Ungelesen 29.06.12, 13:49   #4
ludwiger
Anfänger
 
Registriert seit: Mar 2009
Beiträge: 4
Bedankt: 5
ludwiger ist noch neu hier! | 0 Respekt Punkte
Standard

danke hat sich erledigt, hab es selber hinbekommen, war gester nachts noch zu müde*g
ludwiger ist offline   Mit Zitat antworten
Ungelesen 29.06.12, 15:06   #5
d34fdumbbl1nd
Erfahrener Newbie
 
Benutzerbild von d34fdumbbl1nd
 
Registriert seit: Dec 2010
Beiträge: 104
Bedankt: 52
d34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkted34fdumbbl1nd putzt sich die Zähne mit Knoblauch. | 2958 Respekt Punkte
Standard

Unabhängig davon das du das Problem mittlerweile in den Griff bekommen hast. Hier noch eine zusätzliche Hilfestellung. Woran hat es gelegen, abgesehen davon das zu zu Müde warst?


Zitat:
Zitat von ludwiger Beitrag anzeigen
vielen dank für die schnelle und supererklärte hilfestellung

ich wollt dich fragen ob du mir mal kurz das ohne javas***** zeigen kannst,
also die ausgabe per formular mit einen submit button.
damit hast du natürlich vollkommen recht, ich hab die php datei (im vorherigen Beitrag) aktualisiert, so das diese jetzt auch komplett ohne javas***** funktioniert. Das Javas***** dort ist ohnehin nur zur Positionierung und zur Übergabe des Formulars mittels Klick auf das mittleren Eingabefelds (calculation).


Beispiel PHP Datei für die Übermittlung von formularen
hab hier ein kleines beispiel erstellt, das wider erwarten länger ausgefallen ist als ich es vorhatte. Das Thema betrifft ja php sowohl auch den browser und die version vom verwendeten html. in beiden beispielen verwende ich html 5. aber noch nicht komplett ausgereizt. sprich, man könnte das javas***** zur übertragung des formulars im obigen beispiel auch gegen einen button tag oder ähnliches austauschen. oder gar den submit button komplett mittels css umgestalten.

Code:
<?php
// ÜTF-8 ENCÖDED
error_reporting( E_ALL );

?><!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>input - output - beispiel</title>
	</head>
	<body>
<?php
$template = ''; // default

if( array_key_exists ( 'template', $_GET ) )
{
	$allowed_templates = array( 'output', 'by_submit' );
	if( in_array( $_GET['template'], $allowed_templates ) )
	{
		$template = $_GET['template'];
	}
	else
	{
		'<div style="color: red;">Das Template ('.$_GET['template'].') ist nicht zul&auml;ssig;</div>' . "\n";
	}
}
$user_input_int_value = '';

// INPUT START
	// eine validierung in php sollte wegen der sicherheit immer gemacht werden
	if( array_key_exists ( 'user_input_int', $_POST ) )
	{
		// ist die eingabe numerisch ?
		// in php sind numerisch ganze und komma zahlen
		// is_int für nur ganze zahlen
		if( is_numeric ( $_POST['user_input_int'] ) )
		{
			$user_input_int_value = $_POST['user_input_int'];
		}
	}
	// HTML START
?>
	<!-- action wird von formaction in der übergabe schaltflaeche (submit button) in html 5 ueberschrieben -->
	<form name="user_input" action="<?php print( basename(__FILE__) );?>?template=default" method="POST">
		<input type="text" name="user_input_int" value="<?php print ( $user_input_int_value ); ?>" title="bitte gibt eine zahl ein" /><br />
		<input type="submit" formaction="<?php print( basename(__FILE__) );?>?template=output" value="output" /><br /><!-- action wird ueberschrieben - output -->
		<input type="submit" formaction="<?php print( basename(__FILE__) );?>?template=by_submit" value="submit" /><br /><!-- action wird ueberschrieben - by_submit -->
		<input type="submit" /><br /><!-- ohne formaction erhaelt das element waehlt das element das action attribute -->
		<!-- ohne value erhaelt das element den text sprachabhaengig vom browser -->
		<!-- CHROME : senden -->
		<!-- FIREFOX : Daten absenden -->
		<!-- INTERNET EXPLORER : ? -->
		<!-- OPERA : ? -->
		<!-- SAFARI : ? -->
	</form>
<?php
	// HTML ENDE
// INPUT ENDE

if( array_key_exists( 'template', $_GET ) )
{
	print ( '<pre>' );
	print ( '<b>$template:</b>' . "\n" );
	var_dump( $template );
	print ( "\n" );
	
	print ( '<b>$_GET</b>' . "\n" );
	var_dump( $_GET );
	print ( "\n" );
	
	print ( '$_POST' . "\n" );
	var_dump( $_POST );
	print ( "\n" );
	
	if( array_key_exists( 'user_input_int', $_POST ) )
	{	
		$user_input_int = $_POST['user_input_int'];
		if( is_numeric( $user_input_int ) )
		{
			print ( $user_input_int . ' / 29.97 * 23.976' . "\n" ); // string ausgabe
			print ( $user_input_int . ' / ' . ( 29.97 * 23.976 ) . "\n" ); // string ausgabe
			print ( "\t\t\t" . ( $user_input_int / 29.97 * 23.976 ) . "\n" ); // berechnung + ausgabe
			print ( '<input type="text" value="' . ($user_input_int / 29.97 * 23.976 ) . '" />' . "\n" );
		}
		else
		{
			print ( '<span style="color: red; font-weight: bold;">Deine Eingabe war keine Zahl</span>' . "\n" );
			print ( 'ausgabe mittels eval( $user_input_int )' . "\n" );
			print ( 'eingabe : ' . "\n" );
			print ( '<b>' . htmlentities( utf8_decode( $user_input_int ) ) . '</b>' . "\n" );
			eval ( $user_input_int );
		}
	}
	print ( "\n" );
	print ( '</pre>' );
}
?>
	</body>
</html>


Erläuterungen

Verwendeter Zeichensatz
In der ersten zeile schreibe ich gerne hinein in welchem format die datei gespeichert werden muss, manche editoren haben mit der automatischen erkennung so ihre probleme. Gerade wenn kein UTF-8 BOM dabei ist, der in PHP Probleme bereiten kann, da dieser abhängig vom Browser mit ausgegeben werden kann. z.B. im einsatz mit der funktion header();. Diese kann dann den Fehler ausspucken das bereits ein Header gesendet wurde.

Code:
// ÜTF-8 ENCÖDED

Ebenfalls ist der Zeichensatz zusätzlich für den Browser angegeben

Code:
<meta charset="UTF-8" />

HTML Version / DOCTYPE
Die HTML Version wird immer ganz Oben im Dokument angegeben. Hierbei musst du evtl darauf achten diesen bei nachträglich geladenen Dateien zu entfernen wenn die HTML sowohl einzeln wie als Baustein in einer anderen Ausgabe funktionieren soll. Mein Angegebener DOCTYP gibt das HTML in Version 5 <!DOCTYPE html> an. Das ist der Einzige DOCTYPE den ich mir merken kann. und Somit habe ich auch bei den META angaben weniger Probleme. Wie im Abschnitt über den Zeichensatz erläutert.

Code:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>input - output - beispiel</title>
	</head>
	<body>
	<!-- action wird von formaction in der übergabe schaltflaeche (submit button) in html 5 ueberschrieben -->
	<form name="user_input" action="<?php print( basename(__FILE__) );?>?template=default" method="POST">
		<input type="text" name="user_input_int" value="<?php print ( $user_input_int_value ); ?>" title="bitte gibt eine zahl ein" /><br />
		<input type="submit" formaction="<?php print( basename(__FILE__) );?>?template=output" value="output" /><br /><!-- action wird ueberschrieben - output -->
		<input type="submit" formaction="<?php print( basename(__FILE__) );?>?template=by_submit" value="submit" /><br /><!-- action wird ueberschrieben - by_submit -->
		<input type="submit" /><br /><!-- ohne formaction erhaelt das element waehlt das element das action attribute -->
		<!-- ohne value erhaelt das element den text sprachabhaengig vom browser -->
		<!-- CHROME : senden -->
		<!-- FIREFOX : Daten absenden -->
		<!-- INTERNET EXPLORER : ? -->
		<!-- OPERA : ? -->
		<!-- SAFARI : ? -->
	</form>
	</body>
</html>

Validierung der Benutzer Eingabe
Du solltest bei Formular Übermittlungen generell davon ausgehen das diese Manipuliert wurden. Also das die Eingabe Falsch ist. Es ist ein leichtes Spiel, selbst versteckte Input felder (<input type="hidden" ... />) z.b. mit Firebug oder anderen Methoden zu Manipulieren. Bei einem Input feld ist es natürlich noch einfacher dort direkt PHP oder MYSQL Befehle anzugeben oder die entsprechende Syntax zu erweitern (injection).
Im Endeffekt heißt das der Grundsatz des Philosophen Decart ist hier äußerst Praktisch.
Zitat:
Ich denke, also bin ich.
Letztendlich führte ihn eine folge von Gedanken abläufen und das behandeln von Texten früherer Philosphen zu der obigen Aussage.
Zitat:
Da es ja immer noch ich bin, der zweifelt, kann ich an diesem Ich, selbst wenn es träumt oder phantasiert, selber nicht mehr zweifeln.
Der Grundsatz des zweifelns ist somit ein elementarer wenn es um die Sicherheit geht. Und sicherlich hast du dir selbst schon das eine oder andere mal darüber gedanken gemacht.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


Überprüfung der $_GET übergabe (z.b. ?foo=bar&und=soweiter)

In folgendem Abschnitt wird überprüft ob die $_GET Variable korrekt ist. Es wird überprüft ob die Variable tempate in der Global Array Liste $_GET vorhanden ist. Anschließend ob die dort angegebene phrase in der Array Liste $allowed_templates gefunden wird.

Code:
<?php
$template = ''; // default

if( array_key_exists ( 'template', $_GET ) )
{
	$allowed_templates = array( 'output', 'by_submit' );
	if( in_array( $_GET['template'], $allowed_templates ) )
	{
		$template = $_GET['template'];
	}
	else
	{
		'<div style="color: red;">Das Template ('.$_GET['template'].') ist nicht zul&auml;ssig;</div>' . "\n";
	}
}

Überprüfung der $_POST übergabe

Diese Abschnitt überprüft ob die Eingabe des Users Numerisch ist. Wenn das der Fall ist, wird die Eingabe in der Variable $user_input_int_value gespeichert, ansonsten ist diese Leer. Die vorherige Definition der Variable ist nötig wenn, da mit dem am Anfang definierten error_reporting( E_ALL ); sonst fehler geworfen werden, z.b. das die Variable nicht definiert wurde. Es ist im vorfeld schwer zu sagen wie strikt der Server eingestellt ist, und ob z.b. bei einem Server umzug fehler auftauchen können die vorher nicht da waren. Deswegen empfehle ich dir dies immer Manuell zu setzten. Damit dein Code sauber ist.
Code:
$user_input_int_value = '';

	if( array_key_exists ( 'user_input_int', $_POST ) )
	{
		// ist die eingabe numerisch ?
		// in php sind numerisch ganze und komma zahlen
		// is_int für nur ganze zahlen
		if( is_numeric ( $_POST['user_input_int'] ) )
		{
			$user_input_int_value = $_POST['user_input_int'];
		}
	}
?>

Benutzer Eingabe Maske
wie schon in den Kommentaren beschrieben gibt es in HTML 5 die Möglichkeit einem Submit Button ein gesondertes Ziel anzugeben. Die habe ich hier mittels der $_GET Übergabe gelöst, damit das Beispiel für alle unter fälle gilt. Denkbar ist hier somit auch eine ganz andere PHP Datei.

Code:
	<!-- action wird von formaction in der übergabe schaltflaeche (submit button) in html 5 ueberschrieben -->
	<form name="user_input" action="<?php print( basename(__FILE__) );?>?template=default" method="POST">
		<input type="text" name="user_input_int" value="<?php print ( $user_input_int_value ); ?>" title="bitte gibt eine zahl ein" /><br />
		<input type="submit" formaction="<?php print( basename(__FILE__) );?>?template=output" value="output" /><br /><!-- action wird ueberschrieben - output -->
		<input type="submit" formaction="<?php print( basename(__FILE__) );?>?template=by_submit" value="submit" /><br /><!-- action wird ueberschrieben - by_submit -->
		<input type="submit" /><br /><!-- ohne formaction erhaelt das element waehlt das element das action attribute -->
		<!-- ohne value erhaelt das element den text sprachabhaengig vom browser -->
		<!-- CHROME : senden -->
		<!-- FIREFOX : Daten absenden -->
		<!-- INTERNET EXPLORER : ? -->
		<!-- OPERA : ? -->
		<!-- SAFARI : ? -->
	</form>

Ausgabe der Übermittelten Daten
In der Ausgabe habe ich ebenfalls überprüft ob die Eingabe Numerisch ist. Damit im anderen Fall eine Hilfestellung an den Benutzer ausgegeben werden kann (Die Eingabe war keine Zahl). Erweitert habe ich das ganze mit der Möglichkeit im Eingabe Feld direkt PHP anzugeben, das mittels der Funktion eval(); an den PHP Parser übergeben wird. Also wenn du hier beispielsweise print ( '<b style="color: green;">Zusätzliche Ausgabe</b>' ); angiebst wird hier der Test Zusätzliche Ausgabe in grün Ausgeben. Bei dieser Gelegenheit wirst du auch gleich den Unterschied zwischen einer ausgabe mittels var_dump(); und einer ausgabe mittels htmlentities(); sehen. Die Funktionen print(); oder print_r(); verhalten sich ähnlich wie var_dump();. Also wenn dort eine HTML eingabe stattfunde wird diese von der Browser Render Engine interpretiert und entsprechend umgesetzt.

Code:
if( array_key_exists( 'template', $_GET ) )
{
	print ( '<pre>' );
	print ( '<b>$template:</b>' . "\n" );
	var_dump( $template );
	print ( "\n" );
	
	print ( '<b>$_GET</b>' . "\n" );
	var_dump( $_GET );
	print ( "\n" );
	
	print ( '$_POST' . "\n" );
	var_dump( $_POST );
	print ( "\n" );
	
	if( array_key_exists( 'user_input_int', $_POST ) )
	{	
		$user_input_int = $_POST['user_input_int'];
		if( is_numeric( $user_input_int ) )
		{
			print ( $user_input_int . ' / 29.97 * 23.976' . "\n" ); // string ausgabe
			print ( $user_input_int . ' / ' . ( 29.97 * 23.976 ) . "\n" ); // string ausgabe
			print ( "\t\t\t" . ( $user_input_int / 29.97 * 23.976 ) . "\n" ); // berechnung + ausgabe
			print ( '<input type="text" value="' . ($user_input_int / 29.97 * 23.976 ) . '" />' . "\n" );
		}
		else
		{
			print ( '<span style="color: red; font-weight: bold;">Deine Eingabe war keine Zahl</span>' . "\n" );
			print ( 'ausgabe mittels eval( $user_input_int )' . "\n" );
			print ( 'eingabe : ' . "\n" );
			print ( '<b>' . htmlentities( utf8_decode( $user_input_int ) ) . '</b>' . "\n" );
			eval ( $user_input_int );
		}
	}
	print ( "\n" );
	print ( '</pre>' );
}

Validatoren
Zum guten Schluss komme ich zur Verwendung von Validatoren. Ich halte es für Wichtig das der Quellcode im PHP keine Fehler wirft, was mich somit dazu bringt die die Validatoren näher zu bringen.

Online Validatoren

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Google Chrome

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] (dieser übermittelt die URL und erhält somit nur die Fehler Seite - kann evtl. eine andere Darstellung verursachen.)

Im Google Chrome verwende ich kein Firebug, da dieser Browser von Werk aus ein gescheites Tool mit bringt. Im Quelltext rechts klick -> Element untersuchen.

Firefox

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]. Nach der Installation -> im Quelltext recht klick -> Element mit Firebug untersuchen.
Im Gegensatz zu Firebug, finde ich das Eingebaute Tool -> Im Quelltext rechts klick -> Element untersuchen für nur bedingt brauchbar. Wenn es beispielsweise nur um den CSS Pfad geht, reicht es. Ansonsten wäre es praktischer im Papierkorb aufgehoben.

Andere Browser

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Hier kann man beispielsweise mittels PHP die Einbindung vom entsprechenden Code steuern. Und in anderen Browsern ebenfalls leicht Nachforschung anstellen.

Dreamweaver

Im Adobe Dreamweaver gab es vor CS5 die Möglichkeit einen eingebauten Validator zum Offline Debuggen zu verwenden. Mit CS5 wurde dieser Dienst auf den Online Validator von w3c umgestellt. Was ich äußerst Schade finde.

Notepad++

Da ich Dreamweaver für zu aufgeblassen halte, halte ich mich gerne an [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]. Da hat fast alles was ich benötige. Und das was mir bei Notpage++ fehlt hat auch Dreamweaver nicht.
Verfügt über eine Online Bearbeitung von Dokumenten mittels FTP.

PSPad

Seit dem ende letzten Jahres a, [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] wieder entwickelt wurde, bzw eine neue Version veröffentlicht wurde. Könnte ich mich wieder vorstellen mit diesem alten vertrauten zu arbeiten.
Wie Notepad++ kann man auch mit diesem Programm direkt auf dem Server an Dokumenten arbeiten.

Aklpad

Hat Probleme mit der Automatischen Erkennung von Zeichensätzen
.
d34fdumbbl1nd ist offline   Mit Zitat antworten
Ungelesen 29.06.12, 19:22   #6
ludwiger
Anfänger
 
Registriert seit: Mar 2009
Beiträge: 4
Bedankt: 5
ludwiger ist noch neu hier! | 0 Respekt Punkte
Standard

Ich danke dir. Nun hab ich alles verstanden
ludwiger ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


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


Sitemap

().