Probleme mit switch-Schleife
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
archiv
bestimmten versionen
break
buchstabe
datei
einfachen befehl
entchen
erste
fehler
gen
inhalt
mode
page
semikolon
syntax
variable
verstehe
wenigsten
zeile
-
Hi,
bei einer neuen Seite benutze ich die switch-Schleife zum includen der Inhalte. Soweit funktioniert auch alles und eigentlich m?sste es laufen, aber da ist ein Fehler drin, den ich 1. nicht verstehe und 2. deshalb auch nicht finden kann.
ich hab also meine startseite
http://sgehprh.xardas.lima-city.de/stephan/index.php
automatisch soll f?gt er inhalt.txt ein mit folgenden code
if (isset($page)) { switch ($page) { case "news": include "news.txt"; break; case "archiv": include "archiv.txt"; break; case "releases": include "releases.txt"; break; case "contact": include "contact.txt"; break; case "links": include "links.txt"; break; default: include "news.txt"; }} else {include "news.txt";}; ?>
wenn ich also index.php?page=news nehme, m?sste er news.txt einf?gen. oder bei gar nix halt auch news.txt, aber egal was ich mache, er will immer contact.txt einf?gen.
die datei contact.txt hab ich noch gar nicht erstellt, da das ganze bisher nur rohger?st sein sollte (wehalb es immer zur Fehlermeldung kommt "Failed to open stream etc."). in news.txt steht nur "bla bla bla" aber selbst das kommt nicht mehr.
ich hab mir den code (der ja nun wirklich was einfaches sein sollte...) bestimmt dreimal angeguckt, aber es klappt nicht.
bitte helft mir, meinen fehler zu finden!
entchen
Beitrag ge?ndert am 12.04.2006 22:36 von sgehprh -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich finde deine ganze Syntax ein bisschen komisch und au?erdem w?rde ich bei den Includes Klammern verwenden... >.<
So geht es auf jeden Fall:
<?php $page = $_GET["page"]; if (isset($page)) { switch ($page) { case "news": include ("news.txt"); break; case "archiv": include ("archiv.txt"); break; case "releases": include ("releases.txt"); break; case "contact": include ("contact.txt"); break; case "links": include ("links.txt"); break; default: include ("news.txt"); } } else include ("news.txt"); ?>
-
danke, es funktioniert wirklich. wobei ich meinen fehler immer noch nicht verstehe.
na die syntax ist im prinzip doch dieselbe nur dass du
$page = $_GET["page"];
noch eingef?gt hast, das zu case geh?rige einger?ckt hast (mir ist ziemlich wurscht, ob mein code h?bsch aussieht oder nicht) und die includes in klammern gesetzt hast.
zu dem was du eingef?gt hast: ?hm, wozu? also ich meine, entweder page ist gesetzt oder nicht und das pr?ft er ja mit isset, wozu also das get? naja, und au?erdem hat der code vorher mit zahlen funktioniert... aber dann pl?tzlich mit buchstaben nicht mehr. ich versteh das nicht...
das mit klammern... ich hab gelernt, dass ich das bei einem einfachen befehl nicht brauche. und ich will ja auch nur eine datei einf?gen.
aber trotzdem danke. -
Die Klammern verbessenr die Syntax. In bestimmten versionen wird es ohne glaube ich nciht einmal akzeptiert.
Das GET bedeutet, das die Varaible an die URL angehangen sit, woher soll PHP das sonst wissen? ;)
?birgens: Nochmal zu den klammern, die machen den Code auch ?bersichtlicher. ;) -
Das
$page = $_GET["page"];
ist insofern wichtig,dass wenn du index.php?page=news zum Bleistift bestimmen willst, welche Datei eingef?gt werden soll, du erstmal herausfinden solltest, was mit dem Link ?bergeben wurde.
Alternativ kann man auch if(isset($_GET["page"];)) etc machen, aber das sieht imho nicht so elegant aus. Und das mit dem Einr?cken solltest du dir schleunigst angew?hnen, da dir erstens so besser geholfen werden kann und du zweitens auch mehr ?berblick hast. Desweiteren sollte man einige Sachen auch kommentieren.
Der Fehler an deinem Script war eigentlich nur diese Zeile hier
else {include "news.txt";};
Bei else braucht man die Klammern nur, wenn man mehr als eine Zeile danach hat, aber dein Semikolon ist auch vollkommen falsch. So gesehen hat dein else nicht funktioniert und da dein switch nicht funktionieren konnte, da du die per Link ?bermittelte Variable nicht ausgelesen hast, ging dein ganzes Script nicht. ;)
Naja wenigstens willst du kein eienes Browsergame auf die Art schreiben...
-
Und das mit dem Einr?cken solltest du dir schleunigst angew?hnen, da dir erstens so besser geholfen werden kann und du zweitens auch mehr ?berblick hast
Problem: ICH hab dann keine ?bersicht mehr. Jedem das seine. Sieht vielleicht nicht h?bsch aus, aber ich sehe durch.
Das GET bedeutet, das die Varaible an die URL angehangen sit, woher soll PHP das sonst wissen? ;)
Keine Ahnung, woher hat PHP das mit den Zahlen bisher gewusst? Weil das ist jetzt echt mein gr??tes Problem. Liest PHP wenn ich page=1 die 1 alleine aus, wenn ich page=news habe das aber nicht?
Der Fehler an deinem Script war eigentlich nur diese Zeile hier
Kann nicht sein. Ich hab alles ausprobiert und diese Zeile schon ganz weggelassen. Frag mich jetzt nicht, was ich am Anfang alles hatte. Da war eigentlich alles wie in nem anderen Script, das funktionierte (! und noch funtkioniert), nur dass dort Zahlen ?bergeben wurden statt W?rter. -.- *nix mehr kapier*
ein switch nicht funktionieren konnte, da du die per Link ?bermittelte Variable nicht ausgelesen hast, ging dein ganzes Script nicht
aber warum wollte er denn immer contact.txt einf?gen, egal an welcher Stelle es stand?????????
Naja wenigstens willst du kein eienes Browsergame auf die Art schreiben...
N?h, bin ich denn verr?ckt? ^^ -
@Bondverschnitt
If ist aber viel zu langsam... Bei mehreren M?glichkeiten lohnt es sich einfach switch zu benutzen.
@Fragen
Ja, kA warum er contact.txt includieren wollte, aber erstens hast du die genaue Fehlermeldung nicht gepostet und zweitens kann des auch gut und gerne an den nicht vorhandenen Klammern liegen. Keine Ahnung ob es ?berhaupt ohne Klammern funktioniert. Habe ich selber noch nie probiert... >.<
Also wenn du mal mit anderen Sprachen zu tun haben wirst, dann wirst du feststellen, dass man Variablen eigentlich immer initialisieren muss, damit nicht irgendwelche komischen Zahlen drinstehen, weil die noch in dem reservierten Speicher drinstanden. Keine Ahnung wie es da so bei php ist, aber vielleicht stand da ja zuf?llig eine 1 drin. -.- -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage