Nich immer ne Extra Datei

ah jetzt hab ichs glaub ich gecheckt! also was TheVirus meint ist glaube ich folgendes:
Code:
config.php (oder so...)

<?php

function header()
{
  echo "<html>\n";
  echo "<head>\n";
  echo "<title>...</title>\n";
  echo "<meta name=\"autor\" content=\"slimie\">\n";
  echo "...\n";
  echo "</head>\n";
}

function body()
{
  echo "<body bgcolor=\"#ffffff\" ...>\n";
  echo "...\n";
}

function footer()
{
  echo "</body>\n";
  echo "</html>\n";
}
?>

dann index.php:

<?php

include ("config.php");
header();
body();
include("navi.php");

if(!isset($link))
{
  include("news.php");
}

else
{
  include($link);
}

footer();
...
ich denke so in der art ist das gemeint?! ist auch gut das stimmt dann haste noch weniger zu schreiben ;) und praktisch sowieso! aber musste gucken wie du das machst... bei fragen immer her damit *ggg*

cu, slimie
 
Wenn du das ganze mit Funktionen schreibst brauchst du auch nur die jeweilige funktion zu ändern. Zu dem sparst du dir jede menge dateien.

Ich finds wesentlich praktischer Funktional zu programmieren aber vielleicht liegt's daran, dass ich ne echte Programmiersprache gelernt hab.

Beispiel:

functions.php
PHP:
function print_html_header ($title)
{
  echo ("<html>\n"."<head><title>".$title."</title></head>\n");
  echo ("<body mit parametern>");
}

function print_menu ()
{
  echo ("Bla bla bla");
}

usw...

Dann sieht meine eigentliche seite nur aus funktions aufrufen. Das prinzip ist ich stelle mir eine hauptdatei zusammen nur mit cases und in diesen Cases nur funktionsaufrufe. Das spart jede menge tipp arbeit. Vor allem wenn man so Tabellen abstrahiert und für table header, footer und reihe einfügen auch funktionen schreibt.
JavaScripte die man auch häufiger benötigt (häufger heisst mehr als einmal) gehören meines erachtens alle in eine eigene funktion.

Die Nachteile:
1. Man muss gucken dass man die Funktion so abstrahiert, dass sie mit bestimmten parametern für jede gebrauchte Situtation passen. Was unter umständen nicht immer leicht ist.

Die Vorteile:
1. Einfacheres schreiben
2. Einfacheres verändern bei updates
3. weeeesentlich übersichtlicher, da nur das eigentlich interessante in dem hauptfile steht und keine tausend <td>'s <tr>'s und weiss der geier was noch
4. Deutlich weniger files, was wiederum die Übersichtlichkeit erhöht.

Hoffe diesmal hab ich mich verständlicher ausgedrückt.

So Long
TheVirus


EDIT: Ups... War wohl was spät. Jo aber genau so meinte ich das. Bis auf die tastache dass ich alles nur aus funktionen bauen würde. Das einzige was ich includen würde wäre die datei mit den Funktionen, mehr nicht. Sprich navi hab ich als funktion in der functions.php die wiederum aus funktionen aus diesem file zusammen gesetzt ist. Dann nur der aufruf print_navi(); und voila. Alles schön modular aufgebaut.
 
Zuletzt bearbeitet:
achso ok ich hatte es doch noch nich ganz kapiert ;) aber ich war nah dran *ggg* das ist auch ne mögklichkeit...

cu, slimie

/edit:
ok ist ne maßname ;) das problem nur son crack bin ich auch noch nich *g* und ist noch früh am morgen *ggg* aber egal das ist natürlich das allerbesete dann...
 
Zuletzt bearbeitet:
Oha, jetzt hab ich aber fett viele möglichkeiten, wenn euch nochwas einfällt, postets einfach, dannn versuch ich alles mal durch :-) .


Mal so ne Frage, hab ihr ne empfelung für nen gutes PHP book, oder ne page, wo es gute Tutorials gibt??? Das wäre ma sehr wichtig!
 
@ TheVirus: ich code zwar z.Zt. auch einiges mit C++, aber deine ausführungen über die funktionen hab ich immer nochned ganz gerallt ... ich gehe mal davon aus, dass deine tabelle immer gleich aufgebaut - ist das korrekt ?
dann wäre dass schonmal schlecht auf meine site übertragbar -> je nach bedarf mehrere spalten
Nicht das ich doof wäre, aber ich ralle echt nicht wie du das meinst :(
Wäre nett, wenn du mir das nochmal kurz erläutern könntest - thx im vorraus
@ Slimie: *grml* genau isset war der begriff der mir net einfiel deshalb des include der var.inc.php ... naja ;)
@ mannita: für den anfang ist http://www.schattenbaum.net/php recht gut oder auch http://www.webmaster-resource.de/tutorials/php/php_lehrgang.php4
Nen buch (für noobs) kann ich dir leider nicht empfehlen, da ich nur 2 über php befehlsreferenzen hab ... sry

Grüße, Morph
 
Der Punkt ist die Abstraktion der funktionen. Am besten alles irgendwie per paramterübergaben handeln. Hier mal ein kleines Beispiel zu den tabellen:
PHP:
function table_header ($title,$width)
{
?>
<table width="<?php echo ($width) ?>" border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#C0C0C0" bordercolor="#336699">
<th colspan="3" bgcolor="#336699" align="left" valign="MIDDLE" bordercolor="#336699"> 
<div class="headline"><?php echo ($title); ?></div>
</th>
<?php
}

// Hier sind $arg die argumente $color die farbe (geht auch per Hex übergabe) und $cols die anzahl der columns. 
// Bei mir isses vielleicht ein wenig unübersichtlich (mein erstes Projekt in dieser Grösse) aber es löppt.
function insert_row ($arg1,$arg2,$arg3,$color,$cols)
	{
		if ($cols==2)
		{	if ($color==1)
			{
			echo("<tr bgcolor=\"#CCCCCC\">\n" . 
				"<td width=\"40%\" height=\"25\">" . $arg1 ."</td>\n" . 
				"<td width=\"60%\" height=\"25\" colspan=\"2\">" . $arg2 . "</td>\n" .
				"</tr>\n");
			
			}
			else
			{
			echo("<tr>\n" . 
				"<td width=\"40%\" height=\"25\">" . $arg1 ."</td>\n" . 
				"<td width=\"60%\" height=\"25\" colspan=\"2\">" . $arg2 . "</td>\n" .
				"</tr>\n");
			}
		}	
		elseif ($cols==3)
		{	if ($color==1)
			{
			echo("<tr bgcolor=#CCCCCC>\n" . 
				"<td width=\"40%\" height=\"30\" align=\"center\">" . 
					$arg1 .
				"</td>\n" . 
				"<td width=\"20%\" height=\"30\" align=\"center\">" . 
					$arg2 . 
				"</td>\n" .
				"<td width=\"40%\" height=\"30\" align=\"center\">" . 
					$arg3 . 
				"</td>\n".
				"</tr>\n");
			
			}
			elseif ($color==3)
			{
			echo("<tr bgcolor=#0099CC>\n" . 
				"<td width=\"40%\" height=\"30\" align=\"center\">" . 
					$arg1 .
				"</td>\n" . 
				"<td width=\"20%\" height=\"30\" align=\"center\">" . 
					$arg2 . 
				"</td>\n" .
				"<td width=\"40%\" height=\"30\" align=\"center\">" . 
					$arg3 . 
				"</td>\n".
				"</tr>\n");
				
			}
			else
			{
			echo("<tr>\n" . 
				"<td width=\"40%\" height=\"30\" align=\"center\">" . 
					$arg1 .
				"</td>\n" . 
				"<td width=\"20%\" height=\"30\" align=\"center\">" . 
					$arg2 . 
				"</td>\n" .
				"<td width=\"40%\" height=\"30\" align=\"center\">" . 
					$arg3 . 
				"</td>\n".
				"</tr>\n");
			}
		}
		else
		{	if ($color==1)
			{echo ("<tr bgcolor=#CCCCCC>\n".
				"<td width=\"100%\" height=\"25\" colspan=3 align=\"center\" valign=\"middle\">" . 
					$arg1 . 
				"</td>\n</tr>\n");}
			else
			{echo ("<tr>\n".
				"<td width=\"100%\" height=\"25\" colspan=3 align=\"center\" valign=\"middle\">" . 
					$arg1 .
				"</td>\n</tr>\n");}
		}
	}


So Long
TheVirus

Edit Ich seh gerade wie blöd das von mir gemacht ist. Das geht auch wesentlich einfacher und mit weniger ifs wenn man die Farbe beispielsweise per Hex code übergibt. Da lässt sich noch so einiges vereinfachen. Bitte nicht das beispiel hier als referenz nehmen. Is nur ein Beispiel.
 
Zuletzt bearbeitet:
Hier noch ein paare weitere Beispiel zur verdeutlichung:
PHP:
// Gibt ein dropdown menu züruck wenn man sowas häufiger braucht
function insert_dropbar ($varname,$result,$id,$name,$title,$selected)
	{
		$drop_bar = ("<p>\n");
		$drop_bar .=  ("<br>");
		$drop_bar .=  ("<span class=\"standard\">");
		$drop_bar .= ($title);
		$drop_bar .=  ("</span>");
		$drop_bar .= ("<select name=\"". $varname ."\">\n");
			while ($list = mysql_fetch_array ($result))
			{
				if (isset($selected) AND $selected == $list["$id"])
				{
					$drop_bar .=  ("<option value=" . $list[$id] . 
						" selected><span class=\"standard\">" . 
							$list[$name] . 
						"</span></option>\n");
				}
				else
				{	$drop_bar .=  ("<option value=" . $list[$id] . "><span class=\"standard\">" . 
						$list[$name] . 
						"</span></option>\n");
				}
			}
		$drop_bar .= ("</select>\n");
		$drop_bar .= ("</p>\n");

		return ($drop_bar);
		
	}
// Generiert nen Backbutton mit $destination als adresse wo es hingehen soll
	function back_button ($destination) //Only to use within a table
	{
		global $dark,$light;
		$arg=("<p align=\"right\"><a href=\"". $destination ."\">Back</a></p>\n");
		return ($arg);
	}
//generiert nen JavaScript back button. Entspricht einem Back klick im browser
	function js_back ()
	{
		return("<p align=\"right\">".
				"<a href=\"javascript:history.go(-1)\" onMouseOver=\"self.status=document.referrer;return true\">Back</a>".
			"</p>\n");
	}

// Ne allgemeine Text Box
	function text_box ($type,$name,$size,$value,$align,$dir)
	{
		$part1 = ("<input type=\"". $type ."\" name=\"". $name ."\" 
				size=\"". $size ."\" align=\"". $align ."\" ");
		if ($dir=="rtl"){
			$part2 = ("dir=\"". $dir ."\" ");
		}
		else{
			$part2 = ("");
		}
		if ($value != "none")
		{
			$part3 = ("value=\"". $value ."\" ");
		}
		else{
			$part3 = ("");
		}
		$part4 = (">");
		return ($part1 . $part2 . $part3 . $part4);
	}

	function gen_button ($type,$name,$value)
	{
		return ("<input type=\"". $type ."\" name=\"". $name ."\" 
			value=\"". $value ."\">\n");
	}

So kann ich dann ganze HTML seiten schreiben ohne ein einziges HTML-Tag zu setzen. Alles nur funktionsaufrufe mit Paramteren. Wenn man so will ne eigene funktions library für ein spezielles projekt.

So Long
TheVirus
 
Ahhhhsoooo meintest du das *versteh*
SO dachte ich mir das ehrich gesagt auch ... möglichst alles was gleich ist in eine var oder function packen und die dann per z.b. require_once aufrufen (die datei in der die ganzen functionen stehen)

Dann ist klar ;)
Thx

Grüße, Morph
 
Zurück