Kontrolle Wenn Falsch keine Weiterleitung zum insert query

hmmNaGut

Erfahrenes Mitglied
Hi, Liebe Community

Wieder habe ich mal eine Frage und zwar

Ich habe ein Formular das für das BACKEND ist.
In diesem Formular sind 1 Checkbox, Textboxen und ein submit button.

So nach dem ich die Daten eingeben habe
klick ich auf Abschicken.

In einer Funktion werden die Werte überprüft.

Szenario:
Ich habe jetzt z.B.: keinen Titel eingeben der ist, aber unbedingt erforderlich.
Jetzt gebe ich aus das der User keinen Titel eingeben hat.

Die Restliche Felder sind, aber dank dem neu laden durch den Seitenaufruf leer.

Gibt es irgendeine Möglichkeit die Daten einfach ohne überall die value Werte
mit den POST vars zu versehen.

Danke, ein einfaches Nein geht nicht würde mir auch schon genügen.

mfg Patrick
 
Was spricht gegen die value POST Lösung? Ist für mich immer noch am einfachsten. Alternativ könntest du die "guten" Werte in Session Variablen parken. Wahrscheinlich gibt es auch noch eine Lösung, über Javascript die Felder wieder belegen zu lassen.
Ersteres macht keinen Sinn, da der User meint, alle Eingaben wären verloren und gibt nochmal alles ein oder er bricht mit einem lmaa ab. Auch wenn ich keine große JS Leuchte bin, kommt mir Zweiteres zu kompliziert vor.
 
Dagegen sprechen tut ja im eigentlich nichts,
aber es ist halt mühsam. Die eingaben durch zu checken und gerade
bei radio buttons.

Da freut es mich besonders :)

Danke jedenfalls...

Und ich habe keine schimmer von Java-Script.

aber ich arbeite gerade, eh an der POST Value Methode.

Für Eventuelle Lösungsvorschläge lasse ich den Thread noch offen..

Nach 15 Formularen z.B.: wird es einfach nur mühsam.
 
Zuletzt bearbeitet:
An dem Ausfüllen der value Attribute in den HTML Tags führt kein Weg vorbei.

Was Dir allerdings helfen könnte, wären "Helfer-Funktionen" zu bauen. Zum Aufwärmen und Üben schreib Dir einfach mal eine Funktion die einen String mit einem HTML input Tag (einfaches Textfeld) zurück gibt.

Dazu schau Dir einfach mal in einer (X)HTML Referenz an, was ein solches Tag beinhalten kann und gib Deiner Funktion die notwendigen Informationen mit, damit das gewünschte Tag rauskommt, z.B. value, class, title, type, id ...

Ist am Anfang sicherlich mehr Arbeit als mittels

PHP:
echo '<input name="'.$name.'" type="'.$type.'" size="'.$size.'" maxlength="30" value="'.$value.'">';

einfach so ein <input> Tag rauszuhauen, aber bei sehr großen Formularen, wirst Du damit verrückt .. Die Funktion kannst Du dann z.B. auch in eine Schleife hängen etc.
 
Hey, okay das klingt schon ganz gut. Dann brauche ich die Values eigentlich nur übergeben.

Gibt es eine kleine Lib. schon vorgefertigt

Mit checkbox, radio usw..

Zu dem hätte ich den ganzen ... nicht in die Klassen stehen..
 
Danke danke ich euch für eure Meinung und Vorschläge

mfg Patrick

Edit Upps, ich wollte eigentlich Daumen hoch beim Titel
 
Zuletzt bearbeitet:
Level 2 wäre in der Tat das HTML vom PHP zu trennen - such hierzu mal nach den Schlagwörten "Model View Controller"

http://de.wikipedia.org/wiki/Model_View_Controller

ich für meinen Teil verwende eine Template Klasse. Diese Klasse lädt die jeweilgen Templates und setzt an definierten Punkten die Werte ein.

Ein Beispiel von Dennis, wie man sowas umsetzen kann:

http://www.tutorials.de/blog/dem-dennis-sein-blogdingen-da-6278/neue-klasse-template-769/

Keine Ahnung ob das was taugt:

http://www.tutorials.de/forum/php/230753-formwizard-klasse-zum-einfachen-formulare-generieren.html

Hier noch was von PEAR:

http://pear.php.net/package/HTML_QuickForm/redirected
 
Das lustige ist ja das, das ich das für ein Content Managment System schreibe.
Es werden von Index.php der Datei die nichts mit meinem Problem zu tun hat
3 php funktionen aufgerufen und das Template eingebunden.

Nur bei den Modulen kommen Konfigurationen, die man Mittels Formular eingibt.
dies dann das Backend weiterverarbeitet. Hat im eigentlich nichts mit dem Frontend
zum tun.

Nur möchte ich keine grossen Bibliotheken wie PEAR einbinden und SMARTY oder phptemplate ist auch nicht wirklich das ideale.

Ein Formular Creator wie wir das besprochen haben ist eigentlich schon recht interessant.
 
Hier, meine kleinen Helfer funktionen
PHP:
<?php

	class Chtml
	{ 
		public static function open_form($method, $action,$enctype="application/x-www-form-urlencoded", $name="")
		{
			if ($name!="")
			{
				$name="name=\"".$name . "\"";
			}
			
			
			
			return "
			<form method=\"$method\" action=\"$action\" enctype=\"$enctype\" $name>
			";
		}
		
		public static function open_fieldset($style="")
		{
			if($style!=="")
			{
				$style=" style=\"" . $style ."\"";
			}
			
			return "
				<fieldset$style>
			";
		}
		
		public static function close_fieldset()
		{
			return "</fieldset>";
		}
		
		public static function close_form()
		{
			return "</form>";
		}
		
		public static function create_legend($text)
		{
			return "<legend>$text</legend>";
		}

		public static function create_label($id, $text)
		{
			return "<label for=\"$id\">$text</label>";
		}
		
		public static function create_textbox($name, $id, $value="",  $size="50", $maxlength="90")
		{
			return "<input type=\"text\" name=\"$name\" id=\"$id\" size=\"$size\" maxlength=\"$maxlength\"  value=\"$value\"/> ";
		}
		
		public static function create_field_buttons()
		{
			return "<input type=\"submit\"> <input type=\"reset\">";
		}
		
		public static function create_selectbox($name, $id, $selected_key, &$array_to_show)
		{
			$temp="<select name=\"$name\" id=\"$id\">";
			
			foreach($array_to_show as $key=>$opt)
			{
				if ($key==$selected_key)
				{
					$temp.="<option value=\"$key\" selected=\"selected\">$opt</option>";
					continue;
				}
				$temp.="<option value=\"$key\">$opt</option>";
			}
			
			return $temp.="</select>";
		}
		
		public static function create_textarea($name, $id, $value="", $cols=50, $rows=10)
		{
		    return "<textarea cols=\"$cols\" rows=\"$rows\" name=\"$name\" id=\"$id\">$value</textarea>";
		}
		
		public static function create_hiddenfield($name, $value)
		{
			return "<input type=\"hidden\" name=\"$name\" value=\"$value\" />";
		}
		
		public static function create_radiobuttons ($name, $id, $selected, $array_to_show)
		{
			foreach($array_to_show as $key=>$radio)
			{
				if ($key==$selected)
				{
					$temp.="<input type=\"radio\" value=\"$key\" name=\"$name\" checked=\"checked\" /> $radio<br />";
					continue;
				}
				$temp.="<input type=\"radio\" value=\"$key\" name=\"$name\" /> $radio<br />";
			}
			
			return $temp;
		} 
		
		public static function create_checkbox($name, $id,$title, $value, $checked=false)
		{
			if ($checked)
			{
				return "<input type=\"checkbox\" name=\"$name\" value=\"$value\" checked=\"checked\" /> $title <br>";
			}
			
			return "<input type=\"checkbox\" name=\"$name\" value=\"$value\" /> $title <br>";
		}
		
	}
	
	$country=array(
		'austria'=> "&Ouml;sterreich",
		'germany'=> "Deutschland",
		'spanish'=> "Spanisch",
		'greek'  => "Griechenland",
	);	
	
	$radio=array(
	 '1'=>'eins',
	 '2'=>'zwei',
	 '3'=>'drei',
	 '4'=>'vier'
	);
	
	/*
		Zum Testen
	*/
	print Chtml::open_form("POST", $_SERVER['PHP_SELF'] );
	print Chtml::open_fieldset();
	print Chtml::create_legend("");
	print Chtml::create_label('vorname' , 'Vorname') . '<br />';
	print Chtml::create_textbox('txt_vorname', 'vorname', $_POST['txt_vorname']). '<br />';
	print Chtml::create_label('nachname' , 'Nachname') . '<br />';
	print Chtml::create_textbox('txt_name', 'name', $_POST['txt_name']) .'<br />';
	print Chtml::create_label('land', 'Land') . '<br />';
	print Chtml::create_selectbox('land', 'land',$_POST['land'], $country) .'<br />';
	print Chtml::create_label('beschreibung', "Beschreibung") . '<br>';
	print Chtml::create_textarea('txt_beschreibung', 'beschreibung', $_POST['txt_beschreibung']).'<br>';
	print Chtml::create_radiobuttons("radiobtn", "radiobtn", '3', $radio);
	print Chtml::create_checkbox("bla1", "bla1","bla1 Aktivieren", true, true);
	print Chtml::create_checkbox("bla2", "bla2","bla2 Aktivieren", true, false);
	print Chtml::create_checkbox("bla3", "bla3","bla3 Aktivieren", true, false);

	print '<br />'.Chtml::create_field_buttons();
		
	print Chtml::close_fieldset();
	print Chtml::close_form();

?>

für die Nachwelt.
 
Zurück