 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
13.03.2005, 19:40
|
#1
|
|
TP-Junior
Registriert seit: Dec 2003
Ort: Germany
|
switch/case link problem
Hallöchen!
Ich bin gerade dran ein bisser php zu lernen und hoffe auf ein paar nützliche Tips von den Profis hier lernen zu können.
Imo versuche ich eine html-Seite so umzustrukturieren, das ich sie dynamisch laden kann. Hierzu habe ich gelesen, das man per hyperlink elemente in eine site includen kann.
Hier mein erster versuch, der leider nicht hinhauen wollte 
Um den Fehler zu finden habe ich die include-Zeile durch eine echo-Ausgabe ersetzt und dabei festgestellt, das die switch-case anweisung nicht wie beabsichtigt ausgeführt wird.
meine index2.php:
PHP-Code:
<html>
<head>
<title>Testseite Include</title>
</head>
<body>
<?php
echo "Test zum includen von content innerhalb einer Site<br><br>";
echo "<a href=index2.php?site=1>include Site1</a><br>";
echo "<a href=index2.php?site=2>include Site2</a><br>";
switch ($site)
{
case 1: echo "Hier soll Site 1 includet werden"; break;
case 2: echo "Hier soll Site 2 includet werden"; break;
#case 1: include ("site1.php"); break;
#case 2: include ("site2.php"); break;
}
?>
</body>
</html>
Ich denke mal, dass das Prinzip richtig ist und es irgendwo am Syntax hapert?
|
|
|
13.03.2005, 19:59
|
#2
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
switch($_GET['site']) 
|
|
|
13.03.2005, 20:11
|
#3
|
|
TP-Junior
Registriert seit: Dec 2003
Ort: Germany
|
Hmmm kannst Du diese Anweisung mal erklären? Wenn ich switch ($site) mit switch($_GET['site']) ersetze gibbets nen Parse error: parse error, unexpected T_SWITCH, expecting ':' ....
Was ist denn an meinem Script falsch?
Hab mich da eigentlich genau an http://de.php.net/manual/de/control-...res.switch.php gehalten.
|
|
|
13.03.2005, 20:16
|
#4
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
also ich teste ja selten was bei mir auf dem localhost was ich hier poste, aber das hier geht auf jeden fall:
PHP-Code:
<html> <head> <title>Testseite Include</title> </head> <body> <?php echo "Test zum includen von content innerhalb einer Site<br><br>"; echo "<a href=index2.php?site=1>include Site1</a><br>"; echo "<a href=index2.php?site=2>include Site2</a><br>"; switch ($_GET['site']) { case 1: echo "Hier soll Site 1 includet werden"; break; case 2: echo "Hier soll Site 2 includet werden"; break; #case 1: include ("site1.php"); break; #case 2: include ("site2.php"); break; } ?> </body> </html>
Du hast nicht zufällig ein : nach case vergessen? oder ein ; ??
|
|
|
13.03.2005, 20:19
|
#5
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
ansonsten vorher GET auslesen
$site=(isset($_GET['site'])) ? $_GET['site'] : 1; // 1 als default
|
|
|
13.03.2005, 20:20
|
#6
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
ich weiß was jetzt für eine frage kommt steffen, du auch? 
|
|
|
13.03.2005, 20:21
|
#7
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
|
|
|
13.03.2005, 20:22
|
#8
|
|
TP-Junior
Registriert seit: Dec 2003
Ort: Germany
|
Okay - hatte vergessen meine switch-Anweisung auszukommentieren - tststs
Mit Deiner Anweisung klappt es nun, nur würde ich trotzdem gerne wissen, warum es mit meinem ersten Script nicht funktioniert hat und was der Syntax und die Variable $_GET['site'] genau bedeuten 
|
|
|
13.03.2005, 20:22
|
#9
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
na mal sehen 
|
|
|
13.03.2005, 20:24
|
#10
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
$_GET ist ein Superglobales Array in dem alle Übergabeparameter gespeichert sind die per GET (also sichtbar in der URL) mitgegeben werden. Mehr zu Superglobals findest Du in der Manual 
|
|
|
13.03.2005, 20:27
|
#11
|
|
TP-Junior
Registriert seit: Dec 2003
Ort: Germany
|
oki - das ist mal ne Aussage. *g*
Bleibt nur noch zu klären, warum mein erstes Script nicht funktionieren konnte. *fg*
|
|
|
13.03.2005, 20:32
|
#12
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Dein erstes Script funktioniert nur bei der PHP-Einstellung
register_globals=on
Da man aber immer sicherstellen will, das es überall klappt, wandelt man die benötigten Variabeln um ($_GET -> normalen Vars, $_POST -> normale Vars)
Manche arbeiten auch direkt mit den $_GET oder $_POST-Variabeln, man sollte aber vorher prüfen, ob da überhaupt was drin steht.
@architect - das hattest Du doch auch erwartet, oder ?
|
|
|
13.03.2005, 20:35
|
#13
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
DeinScript konnte nicht funktionieren weil die Variable "$site" unbekannt war. Sie war leer.
@steffen: Ich dachte eher an die Kurzschreibweise. 
|
|
|
13.03.2005, 20:36
|
#14
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Zitat:
|
Zitat von Cyberchriss
Bleibt nur noch zu klären, warum mein erstes Script nicht funktionieren konnte. *fg*
|
Ganz einfach: Du fragst bei Deinem switch eine Variable ab, die es gar nicht gibt.
Folglich ist der Wert NULL und keiner deiner case-Zweige greift.
Hättest Du eine default-Zeile eingefügt, dann hättest Du das gesehen.
Dir Variable $file gibt es nach deinem ersten Klick nur in der Get-Umgebung (da sie per GET übergeben wurde) und deshalb musst Du auch die Varianle $_GET['site'] abfragen und nicht $site.
Edit: zu langsam. Aber bei all den Erklärungen sollte es nun verständlich sein. :-)
|
|
|
13.03.2005, 20:44
|
#15
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
die Kurzschreibweise hat er verstanden, oder überlesen
trotzdem:
statt
if(Bedingung) {
$a=1;
} else {
$a=2;
}
kann man schreiben
$a=(Bedingung) ? 1 : 2;
also wenn die Bedingung zutrifft, dann den Wert hinter ?
sonst den Wert hinter :
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
|
 |