WinFuture-Forum.de: Wie Kann Ich Meinen Code Einfacher Und übersichtlicher Schreiben^^ - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 5 Seiten +
  • 1
  • 2
  • 3
  • 4
  • 5

Wie Kann Ich Meinen Code Einfacher Und übersichtlicher Schreiben^^ >>php

#31 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 16. Mai 2008 - 18:23

naja egal^^

aber es geht wieder um den selben teil^^

Zitat

switch ($top) {
case 'menu_oben':
switch ($sub) {
case 'home':
?>
<p>Ok this is the home page</p>
<?php
break;
default:
}
break;

case 'menu_unten':
switch ($sub) {
case 'gb':
?>
<p>Ok this is the guestbook</p>
<?php
break;
default:
}
switch ($sub) {
case 'news':
?>
<p>Ok this is the news page</p>
<?php
break;
default:
}
break;

default:
}
?>


Ich habe ein gästebuch welches mit act funktioniert (das Gästebuch: Gästebuch )

wenn ich des jetzt aber bei case 'gb' reinschreibe, dann springt es immer zur hauptseite
wieso?

MFG
0

Anzeige



#32 Mitglied ist offline   K050V4 

  • Gruppe: aktive Mitglieder
  • Beiträge: 787
  • Beigetreten: 13. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart
  • Interessen:(X)HTML<br />CSS2+<br />PHP 4/5<br />MySQL 5<br />Symfony 1.2+<br />JavaScript / AJAX<br />jQuery<br />C++<br />C#<br />Java<br />...

geschrieben 17. Mai 2008 - 08:32

Da das GB von mir ist, hättest du mich auch fragen können. :lol:

Auf deiner Seite verwendest du $_GET['act']; und das GB verwendet auch diese Variable.

Zitat

"In der Welt des Erkennbaren ist die Idee des Guten die höchste." - Platon

Spritify! Easy CSS-Sprite-Generator | Albanisch Deutsch Wörterbuch
0

#33 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 17. Mai 2008 - 10:08

Oh hab ich gar nicht gesehen;-)

aber wie müsste ich das dann ändern?
0

#34 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 17. Mai 2008 - 17:25

Beitrag anzeigenZitat (Dyon: 16.05.2008, 19:23)

naja egal^^

aber es geht wieder um den selben teil^^
...


Hast du meinen Post vor Gitarrenmanns Sinnlospost gelesen? ;) Wie Kann Ich Meinen Code Einfacher Und übersichtlicher Schreiben^^

Das Gästebuch kannst du ohne Probleme in das switch-Statement einbinden. Evtl. sind kleinere Anpassungen nötig, die aber keinesfalls sehr kompliziert sein sollten. Poste doch einfach mal deinen Code, dann können wir drüber sehen.

Gruß,
Stefan
0

#35 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 17. Mai 2008 - 18:00

also hier nochmal mein jetziger code^^
 <?php $top = trim($_GET['top']);
	$sub = trim($_GET['sub']);
	
	//$menu_top - Enthält die Überschriften der Menüs
	$menu_top = array('menu_main' => '.menu',
					'menu_login' => '.login');
	
	//$menu - hält die Elemente des Untermenüs

	$menu['menu_main'] = array('home' => 'home',
							'news' => 'news', 
							'gb' => 'guestbook',
							'chat' => 'chat',
							'impressum' => 'impressum');
							
	$menu['menu_login'] = array('pasword' => '<input class="login" type="password" name="password" value="password" />',
								'name' => '<input class="login" type="text" name="name" value="name" />',
								'login' => 'login');
	
	//.navigation - hauptseite ist Standardseite
	//$top = (strlen($top) <= 0)?'menu_oben':$top;
	//$sub = (strlen($sub) <= 0)?'home':$sub;
	
	$top = (strlen($top) <= 0)?'menu_unten':$top;
	$sub = (strlen($sub) <= 0)?'home':$sub;	

	include('include/counter.php');

	echo '<?xml version="1.0" ?>';
?>


<html xmlns="http://www.w3.org/1999/xhtml">

<head>

	<title>blabla.net - <? echo $menu_top[$top]; echo (isset($menu[$top][$sub]))?' - '.$menu[$top][$sub]:null; ?></title>

	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="Dyon" />
	<meta name="keywords" content="Dennis" />

	<link href="include/style.css" type="text/css" rel="stylesheet" />
	<link rel="shortcut icon" type="image/x-icon" href="include/favicon.ico" />

</head>
<body>
	<div id="all">
	<div id="top">
	<img src="include/top.jpg" alt="top" class="top" />
	</div>

	<div id="navi" class="klein">you are here: <a href="?">blabla.net</a> >> 

	<?php
		if (isset($menu_top[$top])) {
			echo '<a href="?top='.$top.'">'.$menu_top[$top].'</a>';
			
			if (isset($menu[$top][$sub])) {
				echo ' >> '.'<a href="?top='.$top.'&amp;sub='.$sub.'">'.$menu[$top][$sub].'</a>';
			}
		}
	?>

	</div>


	<ul id="menue">
		<li class="menuefeldueberschrift">.counter</li>
		<li class="menuefeldmain">
			total:
			<? include('counter.txt'); ?>
		</li>
		<?php
			/* Menü erstellen */
			foreach($menu as $topkey => $topvalue) {
				echo '<li class="menuefeldueberschrift">'.$menu_top[$topkey].'</li>';
				
				foreach($menu[$topkey] as $subkey => $subvalue) {
					echo '<li class="menuefeldmain"><a href="?top='.$topkey.'&amp;sub='.$subkey.'">'.$subvalue.'</a></li>';
				}	
			}

		?>

		<li class="menuefeldueberschrift">
			.chat
		</li>
	</ul>

	<div class="main">
	
	<?php
		/* So könnte die Ausgabe des Contents erfolgen */
		
		switch ($top) {
				
			case 'menu_main':
				switch ($sub) {
					case 'home':
						?>
							<p class="mainueberschrift">.home</p>
							<p class="mainfeldueberschrift">.herzlich willkommen</p>
							<p class="mainfeldmain">Hallo und herzlich willkommen,<br>schön dass sie den Weg
								auf meine Website gefunden haben.<br>Bitte beachten Sie, dass sich diese Seite
								noch in der Aufbauphase befindet.<br><br>Grüße, der Admin</p>
							<p class="mainfeldbottom">Eingetragen am: 16.05.08</p>
						<?php
						break;
					default:
				}
				switch ($sub) {
					case 'news':
						?>
							<p class="mainueberschrift">.news</p>
						<?php
						break;
					default:
				}
				switch ($sub) {
					case 'gb':
						?>
							<p class="mainueberschrift">.guestbook</p>
						<?php
						$action = $_GET['act'];
// Speichere die "act" in die Variable $action

/*
   Die Variable für die 3 Funktionen:
   show > Zeige alle Einträge (Startseite des GBs)
   comment > Einen Eintrag machen
   add > Eintrag hinzufügen
*/

  $filename = "gb.txt";
  // Die Datei mit den Eintraegen ...


if($action=="" | $action=="show") {
  // Wen $action gleich >nix< oder >show< dan zeige bzw mache dies:


  echo '<a href="?act=comment">Einen Eintrag machen</a>';
	// Ein Link zum Eintragsformular "?" steht dafür eine Anfrage an die Datei selbst
		// kannst auch XXX.php?act=comment machen - es wird noch zusaetzlich die variable
		// "act" mit den Wert "comment übermittelt" damit das script weiss was es zu tun hat;)


  $myarray = file($filename);
  // Lade den gesamten Inhalt zeilenweise von $filename in ein array

  if(count($myarray)>10) {
   // zaehle die zeilen von myarray; wen anzahl der zeilen groeßer als 10 ist
   // setzte die variable $anzeigen auf 10
   // ist eine beschrenkung- oder willst du mit einmal 10000 einträge in
   // dein gb anzeigen lassen?
	$anzeigen = 10;
  } else {
   // wen die anzahl der zeilen kleiner als 10 ist dan zeige die an
	$anzeigen = count($myarray);
  }


   for ($i = 0; $i < count($myarray); $i++) {
	// i ist 0; i ist kleiner als 10; erhöhe i immer um eins

	$teil = explode("|" , $myarray[$i]);

	echo '<p class="mainfeldueberschrift">'.$teil[0].' schreibt:</p>';
	echo '<p class="mainfeldmain"><a id="normal" href="mailto: '.$teil[1].'">' .$teil[1]. '</a></p>';
	$teil[2] = str_replace("[br]", "<br />", $teil[2]);
	echo '<p class="mainfeldmain">' .$teil[2].'</p>';
	echo '<p class=mainfeldbottom">Eingetragen am:'.$teil[3].'</p>';

  /* "Auf"klärung: ^^

  Jede Zeile im array wird einzeln bearbeitet, deswegen die for-schleife
  und jede zeile in der txt-datei sieht so aus: NAME|EMAIL|NACHRICHT
  mit der explode-Funktion teilen wir die zeilen ein - der trenner ist |
  so darf man sich das vorstellen:
  $teil[0] | $teil[1]   | $teil[2]  | $teil[3]
  NAME	 | EMAIL	  | NACHRICHT | ZEIT
  */
}
}



if($action=="comment") {
// wen $action gleich "comment" ist dan mache dies:
?>
<p class="mainfeldueberschrift">Eintragen</p>
<form method="POST" action="?act=add">
<p class="mainfeldmain">
Name:<br/> <input type="text" name="name" /><br />
Email:<br/> <input type="text" name="email" /><br />
Text:<br/> <textarea cols="50" rows="6" name="text"></textarea><br /><br />
Bitte schreiben Sie "OK" in das Feld. (Es sind beides Großbuchstaben)
<br /> <input type="text" value="" name="check" />
<input type="submit" name="Submit" value="Eintragen!"></p>
</form>
<!--<input type="submit" value="eintragen" />-->

</form>

<?
}


if($action=="add") {

  $name = $_POST['name'];
  $email = $_POST['email'];
  $text = $_POST['text'];
$text = str_replace("\n", "[br]", $text);

  if($name=="" | $email=="" | $text=="" | $_POST['check'] !== 'OK') {
  // wen $name, $email oder $text gleich nix sind dan zeige bzw. mache das:

  echo "Bitte alles ausfüllen!<br />";
  echo '<a" href="java script:history.back()">Zurück</a>';

  } else {
  // amsonsten das:

  $zeit = date("d.m.Y - H:i");
  // Zeit bestimmen mit date() - tag.monat.jahr - stunde:minute

  $new_text = $name."|".$email."|".$text."|".$zeit."\n";
  // Fasse alle teile(name, email, ...) zu einer variable zusammen

  $new_text = htmlentities($new_text);

  $x = 0;
  $datei = fopen($filename, "r");
  while (!feof($datei)) {
  $x++;
  $saved[$x] = fgets($datei, 1024);
  }
  /* "Auf"klärung: ^^
  datei wird erstmal nur zum lesen geöffnet
  x ist 0 in der while-schleife wird x dan immer erhöht
  so wird jede zeile ausgelesen und im $saved[] gespeichert
  mit feof wird der datenzeiger ans ende der datei gesetzt und
  das "!" davor bedeutet, das er das was in der if-schleife steht
  nur machen soll wen der datenzeige ans ende der datei positioniert
  wurde - WOZU? - ganz einfach: die datei wird von "unten" ausgelesen
  so wird die zeile, die ganz unten steht, jetrzt ganz oben stehen
  damit alle neuen eintraege nicht ganz unten sonder ganz oben stehn!;)
  */

  $datei=fopen($filename, "w");
  // oeffnet die datei im schreibmodus w
  fwrite($datei, $new_text);
  // Schreibt die neue Zeile in die datei

  for ($i=1;$i <= $x; $i++) {
  fwrite($datei, $saved[$i]);
  // haengt die alten eintraege einfach an
  // mithilfe der for-schleife
  }
  fclose($datei);
  //header("Location: ?act=show");
   echo "Ihr Eintrag wurde gespeichert!<hr>";
	   echo '<a class="navi" href="java script:history.go(-2)">Zum Gästebuch</a>';
  }
}

						break;
					default:
				}
				switch ($sub) {
					case 'chat':
						?>
							<p class="mainueberschrift">.chat</p>
						<?php
						break;
					default:
				}
				switch ($sub) {
					case 'impressum':
						?>
							<p class="mainueberschrift">.impressum</p>
							<p class="mainfeldueberschrift">.disclaimer</p>
							<p class="mainfeldmain">Mit dem Urteil vom 12. Mai 1998 hat das Landgericht Hamburg 
							entschiden, dass man durch die Ausbringung eines Links die Inhalte der gelinkten 
							Seite ggf. mit zu verantworten hat. Dies kann, so das LG nur dadurch verhindert 
							werden, dass man sich ausdrücklich von diesen Inhalten distanziert. Wir haben auf 
							unseren Seiten Links zu anderen Seiten im Internet gelegt. Für alle diese Links gilt:<br>
							"Wir erklären ausdrücklich, dass wir keinerlei Einfluss auf die Gestaltung und die 
							Inhalte der gelinkten Seiten haben. Deshalt distanzieren wir uns hiermit ausdrücklich 
							von allen Inhalten aller gelinkten Seiten."<br><br>

							Falls wir irgendwelche Copyrighthinweise auf dieser Seite verletzt haben, würden wir 
							Sie bitten, uns dies so schnell wie möglich zu melden.</p>
							
							<p class="mainfeldueberschrift">.webmaster</p>
							<p class="mainfeldmain">Inhaltlich Verantwortlicher gemäß § 10 Absatz 3 MDStV:<br><br>
							Dennis <br>D-78333 Stockach<br>Talstr. 12<br><a href="mailto:[email protected]">[email protected]
							</a></p>
							
						<?php
						break;
					default:
				}
				break;
			case 'menu_login':
				switch ($sub) {
					case 'login':
						?>
							<p class="mainueberschrift">.login</p>
						<?php
						break;
					default:
				}
				break;
			default:
		}
	?>
	</div>

	</div>


	<p id="footer">©2008 by Dennis </p>

</body>
</html>

Dieser Beitrag wurde von Dyon bearbeitet: 02. Juni 2008 - 21:01

0

#36 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 17. Mai 2008 - 21:25

Hat sonst niemand eine Idee was ich an dem Gästebuch script ändern muss dass das geht? Ich komm da ja immer wieder auf die startseite zurück. Hab halt noch nicht soviel Ahnung von php;-)

MFG
0

#37 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 761
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 17. Mai 2008 - 21:54

Schau dir bei php.net mal den Aufbau einer Switsch-Struktur an, da du sie doch extrem falsch verwendest.
0

#38 Mitglied ist offline   K050V4 

  • Gruppe: aktive Mitglieder
  • Beiträge: 787
  • Beigetreten: 13. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart
  • Interessen:(X)HTML<br />CSS2+<br />PHP 4/5<br />MySQL 5<br />Symfony 1.2+<br />JavaScript / AJAX<br />jQuery<br />C++<br />C#<br />Java<br />...

geschrieben 17. Mai 2008 - 22:15

@Dyon: Wie schon gesagt, du verwendest zwei mal die gleiche Variable. Wie wärs wenn du eine änderst? "act" bsw. zu "show" oder ähnliches.

Du verlangst doch nicht, dass wir dir alles machen? ;)
Du überblickst anscheinend deinen eigenen Code nicht mal. Du solltest dich mal damit intensiver auseinandersetzen.

Zitat

Hab halt noch nicht soviel Ahnung von php;)

Das merken wir ;)

Zitat

"In der Welt des Erkennbaren ist die Idee des Guten die höchste." - Platon

Spritify! Easy CSS-Sprite-Generator | Albanisch Deutsch Wörterbuch
0

#39 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 18. Mai 2008 - 15:09

Ich hab mir des mal bei php.net durchgelesen abe3r nich so ganz herausgefunden wieso ich die jetzt falsch benutze:-(

sollte ich bei dem Guestbook vllt. anstatt dem act auch mit switch arbeiten?
0

#40 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 761
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 18. Mai 2008 - 15:24

Vergleich das mal mit deinem Code:
				switch ($sub) {
					case 'home':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'news':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'gb':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'chat':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'impressum':
						[...]
						break;
					default:
				}

0

#41 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 18. Mai 2008 - 15:36

Das Datei öffnen zum lesen und dann nochmal oder wie das funktionieren soll, um das Gästebuch rückwärts anzuzeigen ist auch vielzu umständlich. Erstmal kann man sich das ganze fopen-Zeug sparen und einfach nur mit:

$daten = file("entsprechende_textdatei.txt");

den Textdateiinhalt zeilenweise in ein Array schreiben und dann kann man den Arrayinhalt entweder über eine entsprechende Funktion rückwärts sortieren oder man schreibt die Schleife einfach so, dass das Array rückwärts angezeigt wird.

rückwärtssortieren:

function ruecksortieren($a, $b)
{
	if ($a[0] == $b[0]) return 0;
	if ($a[0] < $b[0]) return 1;
	return -1;
}

usort($daten, ruecksortieren);

Dieser Beitrag wurde von Gitarremann bearbeitet: 18. Mai 2008 - 15:39

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#42 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 18. Mai 2008 - 16:21

@elite killer
meintest du des dass ich immer des switch wiederholt habe?
0

#43 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 18. Mai 2008 - 16:26

Beitrag anzeigenZitat (Dyon: 18.05.2008, 17:21)

@elite killer
meintest du des dass ich immer des switch wiederholt habe?


Für dich wäre wichtig, dich soweit mit php auseinanderzusetzen, dass du verstehst, was der Code an welcher Stelle überhaupt macht. Dann schreiben dir die Leute nicht den Code, sondern geben nur Beispiele. Der eine macht das so, der andere so und du kannst dann alleine entscheiden, welche Variante für den Script sinnvoller ist.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#44 Mitglied ist offline   Dyon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 125
  • Beigetreten: 04. April 08
  • Reputation: 0

geschrieben 18. Mai 2008 - 16:29

das mit dem switch habe ich eig verstanden
die switch gibt ja einen programmablauf an in dem fall der variable $sub , in dem fall z.b. home und gibt dann in meinem beispiel text aus
dürfte ich doch richtig verstanden haben?
0

#45 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 18. Mai 2008 - 16:54

Ja aber so wie du es angewendet hast, hast du es nicht wirklich verstanden:

Das

				switch ($sub) {
					case 'home':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'news':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'gb':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'chat':
						[...]
						break;
					default:
				}
				switch ($sub) {
					case 'impressum':
						[...]
						break;
					default:
				}



sieht normalerweise so aus:

				switch ($sub) {
					case 'home': [...] break;
					case 'news': [...] break;
					case 'gb':[...] break;
					case 'chat': [...] break;
					case 'impressum': [...] break;

					default:
				}

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

Thema verteilen:


  • 5 Seiten +
  • 1
  • 2
  • 3
  • 4
  • 5

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0