PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe: Tutorial mit SWITCH, ich komm nich klar.


x4ce
2003-05-18, 21:30:35
hallo,

ich hab da ein problem mit einem tutorial, das mir erlauben soll mit tabellen statt frames auszukommen. es läuft über den befehl SWITCH. ich komme da einfach nicht mit klar. brauch ich dafür eine datenbank? woher zieht sich der code die seiten, die er darstellen soll?

kann sich das mal einer angucken und mir helfen? BITTÖ :)

www.artplay.de (http://www.artplay.de/index.php?open=tuts&session=switch)

vielen dank

gruss x

Matthias2x
2003-05-18, 22:40:45
Dafür braucht es keine Datenbank, an der betreffenden stelle wird einfach nur die entspr. Datei eingefügt. ich glaube du solltest dich erstmal gründlich mit PHP beschäftigen, denn im dem Tutorial steht eigentlich alles recht gut verständlich da.

Bedman
2003-05-18, 23:44:27
Sehr gut Anlaufstellen für PHP sind:
www.selfphp.info
www.dynamic-webpages.de

und einen kostenlosen localhost Webserver mit PHP gibts unter:

www.omicron.ca

Much fun

Bedman

Aqualon
2003-05-19, 22:08:42
Ich empfehle als localhost Server für Windows WAMPP (http://www.apachefriends.org/wampp.html)

Das ist schnell installiert und man kann gleich mit dem ersten Programmieren anfangen ohne sich zu große Gedanken wegen der Konfiguration machen zu müssen.

x4ce
2003-05-19, 22:52:22
muss ich deswegen gleich php lernen? ;) einen anbieter mit php und allen schnickschnack habe ich ja. also, ich verstehe das so, das alles in der index.php stehe, wo wiederum die untergruppen wie news.php usw. als "textmarken" stehen, die dann aufgerufen werden, oder liege ich schon vom prinzip her falsch?

gruss maik

Wudu
2003-05-19, 22:58:37
Prinzipiell zu Switch:

mit switch unterscheidest du verschiedene "cases" (also fälle). Für den fall das die variable $var den wert x annimt tu dieses und jenes. Das ganze konstrukt kann auch mit if / else ausgedrückt werden, ist aber im "statischem" fall besser mit switch.


<?php

switch($action)
{
case "news":
// tu irgendwas
break;

case "login":
// tu irgendwas anderes
break;

default:
// keiner der Werte trifft zu, tu etwas anderes
break;
}

?>


Der Codeschnipsel macht genau sowas, wenn die Variable $action den wert (string) news hat, dann wird irgendwas gemacht, sollte sie aber den wert (string) login haben, dann tut dein Programm was anderes, sollte keiner der beiden Fälle zutreffen, dann passiert der Teil unter dem default.

Ich hoffe das erklärt die switch(){} anweisung etwas.

Wudu
2003-05-19, 23:01:58
aja, was dein tutorial betrifft, du kannst dann in den einzelnen bereichen vom switch einfach seiten teile reinholen, in PHP mit


<?php
include("Pfad zur datei\datei.htm");
?>


schon erscheint der gewünschte bereich, also kannst du mit hilfe der variable $action steuern was in den Bereich eingefügt werden soll.

rufst du nun die seite folgend auf:

http:://www.deinedomain.de/seite.php?action=news

dann passiert das im switch Teil unter news, wenn dort der oben gezeigte include befehl steht, wird genau diese html datei in die seite geholt.

Aqualon
2003-05-19, 23:04:39
@x4ce

Wenn du PHP einigermaßen sinnvoll anwenden möchtest, musst du es auch lernen. Nur Codeschnipsel zusammenpappen klappt da in den wenigsten Fällen wie gewünscht.

Aber PHP ist eh sehr leicht zu erlernen. Für komplexere Sachen musst dich dann zwar doch ein wenig mehr reinlesen, aber schnelle Anfangserfolge hat man in PHP auf jedenfall.

Wudu
2003-05-19, 23:06:05
Originally posted by Aqualon
@x4ce

Wenn du PHP einigermaßen sinnvoll anwenden möchtest, musst du es auch lernen. Nur Codeschnipsel zusammenpappen klappt da in den wenigsten Fällen wie gewünscht.

Aber PHP ist eh sehr leicht zu erlernen. Für komplexere Sachen musst dich dann zwar doch ein wenig mehr reinlesen, aber schnelle Anfangserfolge hat man in PHP auf jedenfall.

das kann ich nur bestätigen, ich habe auch so mit php begonnen, einfach schnippsel sammeln. die erfolge kommen recht schnell und man lernt immer schnell was dazu. php macht einfach spass :-)

Aqualon
2003-05-19, 23:14:50
Originally posted by Wudu

die erfolge kommen recht schnell und man lernt immer schnell was dazu. php macht einfach spass :-)

Das stimmt. Heute hab ich z.B. rausgefunden, dass es vielleicht doch keine gute Idee ist beim Auslesen von 10 Werten aus ner Datenbank, die einzeln mit mysql_result abzufragen, wenn es mit mysql_fetch_array doch ein wenig schneller geht ;D

Mein Tip: Nur nicht aufgeben, wenn man mal festhängt, meistens kommt man ziemlich schnell weiter. Ein Blick in die Funktionsliste von PHP.net und die dort stehenden Kommentare haben bisher immer noch was bei Problemen gebracht.

Wudu
2003-05-19, 23:21:29
JA die Funktionsliste von php.net mit den Comments der user ist super, auf der war ich dauergast (und bins heute noch). dort findet man meist genau was man braucht.

Bedman
2003-05-20, 07:44:50
Naja, manche Dinge stehen auch dort leider nicht! Vorallem im Bereich XML basierender Datenbanken kam ich mir etwas verloren vor. Nach durch rödeln durch zig Tutorials funzts jetzt;-)
Aber PHP ist schon genial. Ist wie der Sprung von reiner Textdarstellungen auf HTML!!

Greetz Bedman:D

Aqualon
2003-05-20, 20:43:19
Originally posted by Bedman
Naja, manche Dinge stehen auch dort leider nicht! Vorallem im Bereich XML basierender Datenbanken kam ich mir etwas verloren vor. Nach durch rödeln durch zig Tutorials funzts jetzt;-)

Klar können die nicht alle Themen behandeln und die wenigsten PHP Nutzer werden sich wohl intensiv Gedanken um XML machen.

Aber für den leicht fortgeschrittenen, der schon eigene Skripts schreibt und abundzu Hilfe bei Befehlen braucht ist die Seite super.

x4ce
2003-05-23, 14:46:04
Originally posted by Wudu


rufst du nun die seite folgend auf:

http:://www.deinedomain.de/seite.php?action=news

dann passiert das im switch Teil unter news, wenn dort der oben gezeigte include befehl steht, wird genau diese html datei in die seite geholt.

so, ich mal wieder. ich hab mir mal mittlerweile php angeguckt, aber damit warte ich erstmal. ;)

hab ich das jetzt richtig verstanden? es gibt die datei seite.php und in dieser sind untergruppen wie z.b. NEWS, KONTAKT, PICS usw. die vorher alle mit include definiert werden. und dann spring switch in der seite.php hin und her und sucht sich die richtigen textmarken raus?

gruss maik

Matthias2x
2003-05-23, 17:15:18
Originally posted by x4ce


so, ich mal wieder. ich hab mir mal mittlerweile php angeguckt, aber damit warte ich erstmal. ;)

hab ich das jetzt richtig verstanden? es gibt die datei seite.php und in dieser sind untergruppen wie z.b. NEWS, KONTAKT, PICS usw. die vorher alle mit include definiert werden. und dann spring switch in der seite.php hin und her und sucht sich die richtigen textmarken raus?

gruss maik

vollkommen falsch verstanden, obwohl man es auch so machen kann wie du es beschreibst. das beispiel bezieht sich jedoch auf etwas anderes. als erstes legst du verschiedene Seiten an und benennst die so wie deine einzelnen Unterseiten heißen sollen. nehmen wie mal eine seite "news.htm" eine Seite "gaestebuch.htm", sowie eine Seite "default.htm" her. Es sind jetzt also insgesamt 4 Seiten da (news.htm,gaestebuch.htm,default.htm und index.php). Die Seite News soll angezeigt werden wenn der Besucher auf den Link "News" klickt. das sieht dann im PHP-Quelltext, den du in deine "index.php" an genau die Stelle schreibst wo später die Unterseiten angezeigt werden sollen, etwa so aus:

<?php

switch($action)
{
case "news":
include("news.htm");
break;

case "guest":
include("gaestebuch.htm");

default:
include("default.htm");
break;
}

?>

der Link zur Seite News müsste dann wie folgt aussehn: http://www.deine_url.de/index.php?action=news
das PHP-Script macht nichts anderes als die Variable $action auszuwerten. Im obigen Falle hat $action den Wert "news", wie im Link übergeben und das Script fügt dann an der betreffenden Stelle die Seite "news,htm" ein, wie im Script oben angegeben. Gleiches gilt wenn der Besucher z.b. zum Gästebuch wechseln will, dann lautet die URL http://www.deine_url.de/index.php?action=guest . Das Script holt dann laut Anweisung oben die Seite "gaestebuch.htm" rein. Wird die Variable $action nicht übergeben, oder hat keinen bzw. keinen gültigen Wert, dann holt das Script die Seite "default.htm" rein, weil hinter default: im Script halt beschrieben ist das es diese Seite dann reinholen soll. Das würde z.b. dann passieren wenn jemand deine Seite so aufruft: http://www.deine_url.de
Ich hoffe das war jetzt verständlich...trotzdem solltest du versuchen dir wenigstens ein paar PHP Grundkenntnisse anzueignen, das wird unumgänglich sein wenn du PHP in deinen Seiten verwenden willst!

Matthias2x
2003-05-23, 17:18:54
..

x4ce
2003-05-23, 19:19:54
hi,

danke matthias, das war wirklich ausführlich. :) wusste bisher nicht, das ich extra eine index.php schreiben musste, hatte mich schon gewundert, warum die im code mit drinn steht. allerdings, hab ich den php-code einfach in die html-tabelle eingefüght, wo es dargestellt werden sollte.

Matthias2x
2003-05-24, 02:21:24
Probier halt mal bissl mit dem Quellcode rum dann wird schon werden wie es soll... :D

x4ce
2003-05-25, 15:50:39
Originally posted by Matthias2x
Probier halt mal bissl mit dem Quellcode rum dann wird schon werden wie es soll... :D

*ggg* ich bekomms einfach nicht hin. ;) wie muss ich denn die index.php auf meiner html site einfügen? ich arbeite mit dreamweaver und weiss nicht wie. muss ich den php quellcode einfach in die tabelle(als code) schreiben, oder extra die index.php erstellen und dann irgendwie einfügen?

Matthias2x
2003-05-25, 16:14:09
ohje ich sehs schon kommen...also nochmal. du kannst PHP direkt in deinen HTML-Quelltext schreiben. Wenn dir also PHP wie oben beschrieben eine bestimmte Seite innerhalb einer Tabelle anzeigen soll, dan sieht das in etwa so aus:


<table>
<tr>
<td>
<?php
switch($action)
{
case "news":
include("news.htm");
break;

case "guest":
include("gaestebuch.htm");

default:
include("default.htm");
break;
}
?>
</td>
</tr>
</table>


Aber eins hast du anscheiend noch nicht so recht verstanden. Die Datei in die du den PHP-Code einfügst, darf nicht mit .htm oder .html im Namen enden. Die endung muß .php oder .php3 lauten, je nachdem welche PHP-Version zum einsatz kommt. Die Endung .php sollte aber funktionieren. Wenn du das nicht tust wird der PHP-Code im Klartext auf der Seite angezeigt, und nicht vom PHP-Parser verarbeitet.
Also nicht die index.php in irgendeine HTML Datei einfügen, sondern die index.php ist eine eigene Datei, innerhalb derer dann deine anderen Seiten angezeigt werden. Und nochmal meine Bitte, setze dich mit PHP auseinander, sollst es ja nicht perfekt können, aber Grundkenntnisse sind allemal sehr hilfreich...

Foxx
2003-05-27, 22:51:18
huhu leute!
echte coole tutorials, die ihr da geschrieben habt. Big Thx an euch.
Nun hab ich endlich den Sinn der Sache verstanden:)
Aber noch eine Frage, wie muss man es genau schreiben wenn sich zum Beispiel die Members.php in einem Ordner befindet, also z.B den Ordner Memberscript. Irgendwie scheint da bei mir was nit zu klappen :(
Schau euch das mal an auf http://mitglied.lycos.de/lordsofluckclan , also da beim Link Mitglieder :)
Schon ma vielen Dank und Cya

Foxx

Wudu
2003-05-27, 22:57:41
also das geht nicht so, ich verwende für includes immer den absoluten Serverpfad:


<?
// für deine Seite
switch($action)
{
case "members":
include($_SERVER['DOCUMENT_ROOT']."/Memberscript/members.php");
break;

case default:
include($_SERVER['DOCUMENT_ROOT']."default.php");
break;
}
?>


Also includest du absolut am Server, die Globale Variable $_SERVER['DOCUMENT_ROOT'] gitb dir den default Document Pfad deines Webservers, alles dahinter ist dann in deinen Verzeichnissen.

Was den link betrifft, musst du die Seite mit seite.php?action=members aufrufen, dann kommt die memberseite!

Wudu
2003-05-27, 23:00:16
aja, da springt mich immer ein JS Error an auf der seite!

Foxx
2003-05-27, 23:22:51
also ma ganz langsam für mich :)
das hier ist mein Code:



switch($action)
{
case "Mitglieder":
include("/Memberscript/members.php");
break;

case "Gaestebuch":
include("index.php");

default:
include("default.php");
break;
}

Ich soll statt include("/Memberscript/members.php");
nun include($_http//mitglied.lycos.de/lordsofluckclan/Memberscript/members.php");
hinschreiben oder versteh ich da wieder was falsch?

Matthias2x
2003-05-28, 00:38:40
Original geschrieben von Foxx
also ma ganz langsam für mich :)
das hier ist mein Code:



switch($action)
{
case "Mitglieder":
include("/Memberscript/members.php");
break;

case "Gaestebuch":
include("index.php");

default:
include("default.php");
break;
}

Ich soll statt include("/Memberscript/members.php");
nun include($_http//mitglied.lycos.de/lordsofluckclan/Memberscript/members.php");
hinschreiben oder versteh ich da wieder was falsch?

richtig, das haste ganz falsch verstanden. übrigens liegt dein Fehler hier:

case "Mitglieder":
include("/Memberscript/members.php");
break;

es muß heißen:

case "Mitglieder":
include("Memberscript/members.php");
break;

der Slash vor "Memberscript.." muß weg, dann wirds bestimmt auch gehn.
Du kannst natürlich auch den Code von Wudu verwenden, und zwar ganz genau so wie er ihn reingeschrieben hat!! Und nicht so wie du es oben hingeschrieben hast. Die Variable $_SERVER['DOCUMENT_ROOT'] ist eine vordefinierte PHP-Variable die den Pfad zu dem Verzeichnis beinhaltet wo der Webserver die HTML-Files abruft. Es ist also keine URL, wie du es oben hinschreibst sondern ein absoluter Pfad. Zum bessren Verständnis mal ein Beispiel:
Wenn du unter Windows einen Webserver einrichtest und alle deine HTML/PHP-Files im Verzeichnis c:\html\files abgelegt hast (entspr. Einträge in den Config-Files des Webservers bzw. des PHP-Interpreters vorausgesetzt!), dann liefert dir der Befehl "echo $_SERVER['DOCUMENT_ROOT'];" folgende Ausgabe: "c:/html/files" und nicht "htp://irgendwas".
Anstatt der Anweisung "include($_SERVER['DOCUMENT_ROOT'].'/Memberscript/members.php');" könnte man also auch schreiben "include('/pfad/zum/verzeichnis/Memberscript/members.php');" schreiben. Wenn man also den kompletten Pfad nicht weis, aber einen absoluten Pfad verwenden will, kann man eben auch $_SERVER['DOCUMENT_ROOT'] als ersatz verwenden.
Ich hoffe das war jetzt verständlich genug...:)

Foxx
2003-05-28, 15:13:19
hmm klappt noch immer nicht.
hab das / weggemacht aber scheint noch immer nicht zu klappen:
stimmt irgendwas mit dem link nicht ?
http://mitglied.lycos.de/lordsofluckclan/index.php?action=members

wudus methode hab ich auch mal versucht, aber mir werden dann andauernd pase errors in line xxx angezeigt ....

Matthias2x
2003-05-28, 21:19:21
Original geschrieben von Foxx
hmm klappt noch immer nicht.
hab das / weggemacht aber scheint noch immer nicht zu klappen:
stimmt irgendwas mit dem link nicht ?
http://mitglied.lycos.de/lordsofluckclan/index.php?action=members

wudus methode hab ich auch mal versucht, aber mir werden dann andauernd pase errors in line xxx angezeigt ....

na dann schau doch mal in die betreffende Zeile über die das Script meckert, meistens fehlt bei einem Parser-Error nur ein Semikolon am Schluß, oder eine Klammer ist falsch/zuwenig/zuviel gesetzt. Soweit ich sehn kann ist Wudu´s Code in Ordnung, dann haste bestimmt beim reinkopieren was übersehn oder falsch gemacht. Der Code, den ich dir gepostet habe, sollte aber auch funktionieren da die betreffende Datei über http://mitglied.lycos.de/lordsofluckclan/Memberscript/members.php auch abrufbar ist. Irgendwas haste da in deine index.php falsch eingefügt. vielleicht postest du mal den Quelltext deiner index.php hier, dann kann man mehr dazu sagen wo der Fehler steckt.

Foxx
2003-05-28, 22:03:28
<p><?php

switch($action)
{
case "Mitglieder":
include("Memberscript/members.php");
break;


case "Gaestebuch":
include("index.php");

default:
include("default.php");
break;
}

?>
</p>

also das ist der code,oder willst du den gesammten quelltext der index.php? wäre dann sehr viel *gg*

Matthias2x
2003-05-28, 23:13:17
Original geschrieben von Foxx
<p><?php

switch($action)
{
case "Mitglieder":
include("Memberscript/members.php");
break;


case "Gaestebuch":
include("index.php");

default:
include("default.php");
break;
}

?>
</p>

also das ist der code,oder willst du den gesammten quelltext der index.php? wäre dann sehr viel *gg*
tjo, da sind dann schon 2 Fehler auf den ersten Blick. erstens bei case "Mitglieder"; muß stehn case "members"; oder zweite Variante du lässt den Eintrag bei case so wie bisher und änderst nur die URL zur Memberseite ab, und zwar muß es dann heißen "...index.php?action=Mitglieder" und nicht "...index.php?action=members"

und zweitens muß hier:

case "Gaestebuch":
include("index.php");

nach dem include(); noch ein break; rein, so wie bei case("Mitglieder"), sonst wird das nix.
also so etwa:

case "Gaestebuch":
include("index.php");
break;


und schon funktioniert das ganze wie gewünscht. Denk dran, in der URL zur betreffenden Seite muß hinter "action=" immer genau der Wert stehn, den du bei case für die betr. Seite definiert hast, Groß-Kleinschreibung ist da auch von bedeutung! Und bitte eignet euch wenigstens PHP Grundkenntnisse an, wenn ihr sowas in euren Seiten verwenden wollt. das erspart viel ärger...:)

Foxx
2003-05-29, 00:34:07
juchuu, es geht jetzt :) danke, aber schau mal auf die page http://mitglied.lycos.de/lordsofluckclan/index.php
wenn man auf mitglieder geklickt hat und das script dann erscheint, ist die schriftart in der rechten und linken tabelle total verändert,
es erscheint eine 404 site wenn man auf adminstration klickt und das newsscript erscheint unter dem memberscript, loool? das sieht ja wohl zu lustig aus :) was isn da jez noch falsch?

Matthias2x
2003-05-29, 01:18:00
also wenn ich so in den quelltext deiner seite schaue muß ich meinen Tip PHP zu lernen zurücknehmen. du solltest erstmal HTML lernen bevor du was andres anfängst. da stecken soviele Fehler drin, da könnte ich die komplette Seite sicher schneller neu erstellen als die Fehler darin zu beseitigen....

Foxx
2003-05-29, 01:31:39
argh also meinst du das diese fehldarstellungen an den fehlern liegen? und dass ich die ganze seite nochmal neu machen soll?

Matthias2x
2003-05-29, 02:23:38
das meine ich. und nochwas, bei allen seiten die du per include(); reinholst muß alles vom einleitenden Tag <html> bis einschließlich <body> im Quelltext entfernt werden. am ende gilt selbiges von </body> bis </html>. diese Tags dürfern nur in deiner index.php vorkommen. zur zeit findet sich beispielsweise der Tag <html> insgesamt 3 mal im Quelltext deiner Seite. er darf aber nur 1mal vorkommen, und zwar am Anfang der Seite!

Foxx
2003-05-29, 03:38:54
nunja, ich habe nun die seite neu gemacht und auf http://mitglied.lycos.de/rtzzrew gelegt.
Aber wenn ich auf Mitglieder klicke und das Memberscript erscheint, ist bei mir immer noch diese stark veränderte Schrift in der linken und rechten Tabelle. Außerdem kann ich mich so nicht in den Adminbereich einloggen.
Argh, was ist denn da faul? ich krieg hier bald noch ne Krise :(

Matthias2x
2003-05-29, 14:49:15
Original geschrieben von Foxx
nunja, ich habe nun die seite neu gemacht und auf http://mitglied.lycos.de/rtzzrew gelegt.
Aber wenn ich auf Mitglieder klicke und das Memberscript erscheint, ist bei mir immer noch diese stark veränderte Schrift in der linken und rechten Tabelle. Außerdem kann ich mich so nicht in den Adminbereich einloggen.
Argh, was ist denn da faul? ich krieg hier bald noch ne Krise :(
fehler sind immernoch eine menge drin, der Tag <html> findet sich z.b. auch noch insges. 2mal im Quelltext. Das mit den Links liegt am Stylesheet für die links "a { font-family: Arial, Helvetica, Sans-serif; color:#000000; text-decoration:none; }" dort ist Schwarz als Linkfarbe definiert. Das wirst du aber im Memberscript bzw. dessen Templates abändern müssen.

Foxx
2003-05-29, 20:09:28
ok dann noch eine kleine frage, dann werd ich nicht mehr nerven (hoffe ich doch)
Wie krieg ich das Newsscript aus der Memberscriptseite raus? ich kanns doch nit einfach aus dem Quelltext löschen ?

Matthias2x
2003-05-30, 09:29:57
Original geschrieben von Foxx
ok dann noch eine kleine frage, dann werd ich nicht mehr nerven (hoffe ich doch)
Wie krieg ich das Newsscript aus der Memberscriptseite raus? ich kanns doch nit einfach aus dem Quelltext löschen ?

Ich nehme mal an das du das Newsscript permanent eingebunden hast. Es gibt ja auch keinen entspr. Eintrag in deiner switch Anweisung. Du mußt es also aus dem Quelltext deiner index.php rausnehmen, und in deine switch Anweisung reinpacken,genauso wie du es mit den anderen Seiten gemacht hast.

Foxx
2003-05-31, 04:06:09
ok ich habs nun geschafft ! BIG THX ;)
visit www.lordsofluckclan.de.vu

MadMan2k
2003-06-21, 01:45:37
Original geschrieben von Matthias2x

<?php

switch($action)
{
case "news":
include("news.htm");
break;

case "guest":
include("gaestebuch.htm");

default:
include("default.htm");
break;
}

?>



nur mal so als Frage, würde das ganze nicht auch einfacher, nämlich so gehen:

<?php
if($seite == "")$seite = "standard";
include($seite+".html");
?>

ich hab zwar erst heut mit php angefangen, aber in Java ginge es so...

Matthias2x
2003-06-21, 07:47:12
klar,das funktioniert natürlich auch