| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: Include und Wertübergabe per Link im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Ich bin mit meinen Latein am Ende und suche eine Lösung auf mein Problem, was ich gleich schildern werde. ...
![]() |
| | #1 (permalink) | |
| Senior Member | Anzeige Ich bin mit meinen Latein am Ende und suche eine Lösung auf mein Problem, was ich gleich schildern werde. Ich versuche zur Zeit eine Webseite mit PHP zu gestalten und habe in meiner index.php folgenden Script angelegt: (Um das Script ist nur HTML) Code:
<?
//Speichern wir den Wert $_GET Variable in einer normalen Variable
$getpage = $_GET['getpage'];
// nun vergleichen wir den Inhalt der Variable mit hilfe einer "switch" anweisung
switch($getpage)
{
case 'news':
//Falls $seite == 'news' ist einbinden von news.php
include 'news/artikel.php';
// break anweisung damit der rest der case blöcke nicht auch noch dursucht wird
break;
case 'artikel':
include 'news/showarticle.php';
break;
//hier kann man noch was definieren was standard mässig ausgeführt wird, falls sonst nichts zutrifft
case 'newsmore':
include 'news/showarticle.php?aid=$row->id';
break;
default:
include 'news/artikel.php';
break;
}
?> Sinn des Scriptes soll sein, an der Stelle wo das oben aufgeführte PHP-Script steht, eine Seite per include eingefügt werden soll. Die Seiten werden dann entsprechend included, wenn der Wert $getpage einen entsprechenden Übergabewert über den Link bekommt. Also wenn ich den Link http://localhost/index.php?getpage=news aufrufe, dann wird wie gewollt die Seite artikel.php in die entsprechende Stelle eingefügt. Um zu meinen eigentlichen Problem zu kommen, muss ich noch einen Script von der Seite artikel.php posten: Code: <html>
<head>
<title>Artikel - Übersicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#1F2D32">
<?
include('admin/config.php');
$verbindung = mysql_connect ($dbhost, $dbuser, $dbpass) // Username und Passwort angeben
or die ("Leider kann das script keine Verbindung zu der Mysql Datenbank aufbauen ");
mysql_select_db($dbname) //hier name der Datenbank eingeben
or die ("Leider kann das script keine Verbindung zu der Datenbank aufbauen");
$getpage2 = a;
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Einträge pro Seite: Hier 5 pro Seite
$eintraege_pro_seite = 5;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$abfrage = "SELECT * FROM free_news ORDER BY `id` DESC LIMIT $start, $eintraege_pro_seite "; //abfrage
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) //while schleife solange bis alles ausgegeben ist
{
//=====[Hier kann evtl. etwas am Erscheinungsbild des Artikels geändert werden]=====//
echo "
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" class=\"table\">
<tr>
<td height=\"30\" colspan=\"2\" class=\"head\">$row->name</td>
</tr>
<tr>
<td colspan=\"2\" class=\"text\">$row->stext<br><a href=\"index.php?getpage=newsmore\"> mehr...</a></td>
</tr>
<tr>
<td class=\"bottom\">$row->datum</td>
<td width=\"200\" align=\"right\" class=\"bottom\"><a href=\"comments.php?nid=$row->id\">";
$abfrage = mysql_query("SELECT id FROM free_comments WHERE nid='$row->id'");
$mengec = mysql_num_rows($abfrage);
echo "($mengec) comments";
echo'</a></td>
</tr>
</table><br><br>';}
//=====[Hier nichts mehr editieren]=====//
//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
$result = mysql_query("SELECT id FROM free_news ORDER BY `id` DESC");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\"><br>";
echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo " <b>$b</b> ";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo " <a href=\"index.php?site=book/gb&seite=$b\">$b</a> ";
}
}
echo "</div>";
?>
</body>
</html> Den Link findet ihr im Script übrigens im echo. Die vielen "\" sind gewollt, sonst funktioniert das echo nicht wie es soll. Den Link den ich nun mit mehr.. aufrufe, lautet: index.php?getpage=newsmore Damit soll dann in der index.php folgender Link ausgeführt werden: news/showarticle.php?aid=$row->id Leider bekomme ich dann immer die Fehlermeldung: Zitat:
Leider bekomme ich aber damit den ungewollten Effekt, dass die aufgerufene Seite nicht included wird und im ganzen Fenster geladen wird. Wie bekomme ich nun Seiten included, die eine Wertübergabe in ihren Link durchführen? Z.B.: news/showarticle.php?aid=$row->id | |
| | |
| | #2 (permalink) |
| Member of Honour ![]() Registriert seit: 28.05.03 ![]() Likes: 1 | muss das nicht eigentlich include "news/showarticle.php?aid=$row->id"; anstatt include 'news/showarticle.php?aid=$row->id'; heißen (anführungszeichen statt apostroph). denn es soll doch bestimmt der wert von $row-id genutzt werden und nicht der string "$row-id", oder?! und wegen dem include mit parametern. benutze an diesen stellen mal den absoluten pfad bzw. die vollständige url. include "http://www.???.de/news/showarticle.php?aid=$row->id"; PHP-Code:
__________________ http://livehabo.hackerboard.de | http://livebb.sourceforge.net |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Registriert seit: 02.01.06 ![]() Likes: 0 | Geht nicht auf allen Server. Ich habe mir dein Code nicht angeschaut, aber ich glaube, Funktionen würden dir weiterhelfen. |
| | |
| | #4 (permalink) |
| wenn du das mit den ' machst wird die Variable nicht interpretiert das siehst du übrigens an der fehlermeldung wenn es richtig wäre würde da der wert eingetragen. entweder machst du es wie iavgotmail oder du machst es indem du 'url' . $var also mit dem punktoperator, sonst kannste es auch mal das mit include mit klammern machen (ich mach es so, find ich sinnreicher ist ja auch ne funktion^^) also include("datei.php"); @digi ich denke das dies nicht das Problem lösen wird (mein mit funktionen) und wenn dieser befehl verboten wäre würde die fehlermeldung anders aussehen | |
| | |
| | #5 (permalink) |
| Registriert seit: 02.01.06 ![]() Likes: 0 | Das eigentliche Problem ist nicht, dass die Variable nicht den Wert ausgibt, sondern dass die Datei nicht geöffnet werden kann. Wenn allow_url_fopen false gesetzt ist, dann geht das mit http:// nicht. (Ich bin mir nicht sicher, ob es an allow_url_fopen liegt oder an einer anderen Einstellung). Mit Funktionen würde das gehen! Beispiel: Funktion showarticle($aid) { ... } macht das selbe wie showarticle.php. Statt include benutzt man nun einfach showarticle($row->id); und in der neuen showarticle.php übergibt man den Wert $_GET[aid] einfach der Funktion. |
| | |
| | #6 (permalink) |
| Moderator ![]() | Eigentlich braucht man dafür auch keine Funktion. Es reicht ja, vor dem include() einfach die Variablen, die man sonst mit ?a=b&c=d übergeben würde mit $a = 'b'; $c = 'd' zu definieren. Die sind auch im includeten Teil zugänglich. Man sollte nur darauf achten, dass sie eben auch nach dem eingebundenen Abschnitt noch gültig sind, also keine Bezeichner nehmen, die später in anderem Sinne nochmal gebraucht werden. |
| | |
| | #7 (permalink) |
| Senior Member Themenstarter | Danke für eure Lösungsvorschläge, aber anscheinend hat nicht wirklich eine geholfen. Den Link ganz anzugeben, habe ich auch probiert. Genauso die Werte nochmal in der index.php zu deklarieren. Selbst mit der Funktion geht es anscheinend nicht so gut, obwohl ich hier jedoch keine Fehlermeldung bekommen habe und nur eine leere Seite. Aber es kann sein, ich habe da irgendetwas nicht verstanden bzw. falsch gemacht. Den geänderten Script + der showarticle.php, poste ich gleich. Vielleicht findet ihr eine Lösung, wenn ihr mehr seht: index.php Code: <?
function showarticle ($aid) {
include('news/admin/config.php');
$verbindung = mysql_connect ($dbhost, $dbuser, $dbpass) // Username und Passwort angeben
or die ("Leider kann das script keine Verbindung zu der Mysql Datenbank aufbauen ");
mysql_select_db($dbname) //hier name der Datenbank eingeben
or die ("Leider kann das script keine Verbindung zu der Datenbank aufbauen");
$aid = $_GET["aid"];
$abfrage = "SELECT * FROM free_news WHERE id='$aid' "; //abfrage
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) //while schleife solange bis alles ausgegeben ist
{
//=====[Hier kann evtl. etwas am Erscheinungsbild des Artikels geändert werden]=====//
echo "
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" class=\"table\">
<tr>
<td height=\"30\" colspan=\"2\" class=\"head\">$row->name</td>
</tr>
<tr>
<td colspan=\"2\" class=\"text\">$row->stext<br><br>$row->ltext</td>
</tr>
<tr>
<td class=\"bottom\">$row->datum</td>
<td width=\"200\" align=\"right\" class=\"bottom\"><a href=\"comments.php?nid=$row->id\">";
$abfrage = mysql_query("SELECT id FROM free_comments WHERE nid='$row->id'");
$mengec = mysql_num_rows($abfrage);
echo "($mengec) comments";
echo'</a></td>
</tr>
</table><br>';}
}
//Speichern wir den Wert $_GET Variable in einer normalen Variable
$getpage = $_GET['getpage'];
// nun vergleichen wir den Inhalt der Variable mit hilfe einer "switch" anweisung
switch($getpage)
{
case 'news':
//Falls $seite == 'news' ist einbinden von news.php
include 'news/artikel.php';
// break anweisung damit der rest der case blöcke nicht auch noch dursucht wird
break;
case 'artikel':
include 'news/showarticle.php';
break;
//hier kann man noch was definieren was standard mässig ausgeführt wird, falls sonst nichts zutrifft
case 'newsmore':
showarticle($row->id);
break;
default:
include 'news/artikel.php';
break;
}
?> Code: <html>
<head>
<title>Artikel - Übersicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#1F2D32">
<?
include('admin/config.php');
$verbindung = mysql_connect ($dbhost, $dbuser, $dbpass) // Username und Passwort angeben
or die ("Leider kann das script keine Verbindung zu der Mysql Datenbank aufbauen ");
mysql_select_db($dbname) //hier name der Datenbank eingeben
or die ("Leider kann das script keine Verbindung zu der Datenbank aufbauen");
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Einträge pro Seite: Hier 5 pro Seite
$eintraege_pro_seite = 5;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$abfrage = "SELECT * FROM free_news ORDER BY `id` DESC LIMIT $start, $eintraege_pro_seite "; //abfrage
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) //while schleife solange bis alles ausgegeben ist
{
//=====[Hier kann evtl. etwas am Erscheinungsbild des Artikels geändert werden]=====//
echo "
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" class=\"table\">
<tr>
<td height=\"30\" colspan=\"2\" class=\"head\">$row->name</td>
</tr>
<tr>
<td colspan=\"2\" class=\"text\">$row->stext<br><a href=\"index.php?getpage=newsmore\"> mehr...</a></td>
</tr>
<tr>
<td class=\"bottom\">$row->datum</td>
<td width=\"200\" align=\"right\" class=\"bottom\"><a href=\"comments.php?nid=$row->id\">";
$abfrage = mysql_query("SELECT id FROM free_comments WHERE nid='$row->id'");
$mengec = mysql_num_rows($abfrage);
echo "($mengec) comments";
echo'</a></td>
</tr>
</table><br><br>';}
//=====[Hier nichts mehr editieren]=====//
//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
$result = mysql_query("SELECT id FROM free_news ORDER BY `id` DESC");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\"><br>";
echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo " <b>$b</b> ";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo " <a href=\"index.php?site=book/gb&seite=$b\">$b</a> ";
}
}
echo "</div>";
?>
</body>
</html> Code: <html>
<head>
<title>Show article</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?
include('admin/config.php');
$verbindung = mysql_connect ($dbhost, $dbuser, $dbpass) // Username und Passwort angeben
or die ("Leider kann das script keine Verbindung zu der Mysql Datenbank aufbauen ");
mysql_select_db($dbname) //hier name der Datenbank eingeben
or die ("Leider kann das script keine Verbindung zu der Datenbank aufbauen");
$aid = $_GET["aid"];
$abfrage = "SELECT * FROM free_news WHERE id='$aid' "; //abfrage
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis)) //while schleife solange bis alles ausgegeben ist
{
//=====[Hier kann evtl. etwas am Erscheinungsbild des Artikels geändert werden]=====//
echo "
<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" class=\"table\">
<tr>
<td height=\"30\" colspan=\"2\" class=\"head\">$row->name</td>
</tr>
<tr>
<td colspan=\"2\" class=\"text\">$row->stext<br><br>$row->ltext</td>
</tr>
<tr>
<td class=\"bottom\">$row->datum</td>
<td width=\"200\" align=\"right\" class=\"bottom\"><a href=\"comments.php?nid=$row->id\">";
$abfrage = mysql_query("SELECT id FROM free_comments WHERE nid='$row->id'");
$mengec = mysql_num_rows($abfrage);
echo "($mengec) comments";
echo'</a></td>
</tr>
</table><br>';}
?>
<p align="center"><a href="artikel.php">zur Artikel-Übersicht </a></p>
</body>
</html> |
| | |
| | #8 (permalink) |
| Registriert seit: 18.03.05 ![]() Likes: 0 | Hallo, Also ich mach das immer so: Ich erstelle index.php dort ist das ganze Layout drinn, irgendwo in dem Layout möchte ich dann den ganzen inhalt includen, je nach übergebenen GET parameter include ich dann eine Seite, aber ich kann dann auch noch weitere GET Parameter übergeben: ?seite=newsdetails&id=10 In der index.php wird dann die Seite newsdetails.php includet und dort mache ich dann eine SQL Abfrage mit der übergebenen id, um eine einzelne News auszugeben. Wie du siehst kann man per GET (fast) unendlich Parameter übergeben. Includes sind nur dazu da deinen Code übersichtlicher und Strukturierter zu machen. teoretisch könntest du auch alles in eine einzige Datei speichern. Eine gute Beschreibung dazu findest du auch hier: http://tut.php-q.net/include.html http://tut.php-q.net/get.html http://tut.php-q.net/frames.html mfg |
| | |
| | #9 (permalink) | |
| Registriert seit: 02.01.06 ![]() Likes: 0 | Zitat:
Ich sehe Code: function showarticle ($aid) {
$aid = $_GET["aid"]; Tasmas, gute einfache Lösung, die das Problem von Prometheus gut löst. Ich dachte, das Problem wäre, dass er mehrere Aufrufe desselben Scriptes macht, weil man leicht auf die einfache Lösung kommt (dachte ich bisher). | |
| | |
| | #10 (permalink) |
| Senior Member Themenstarter | Danke für die Informationsreichen Links. Jedoch geht es in diesen Links nicht um mein eigentliches Problem, sondern schon um Dinge die ich mit den PHP-Script erfolgreich lösen konnte. Aber mein Problem ist noch der Link news/showarticle.php?aid=$row->id. Auch wenn ich die Werte in andere Dokumente übergeben möchte, bekomme ich immer eine Fehlermeldung. Es wäre mir wirklich eine Hilfe wenn du mir deine Lösung in meinen Beispiel zeigst, wie du es meinst, denn aus deinen Vorschlag werde ich nicht richtig schlau. |
| | |
| | #11 (permalink) |
| Registriert seit: 26.05.06 ![]() Likes: 0 | Ich hoffe ich habe dein Problem richtig verstanden: Du möchtest mit include GET-Parameter übergeben!? Die Stelle: Code: include('news/showarticle.php?aid=$row->id'); Code: include('news/showarticle.php'); Code: $aid = $_GET["aid"]; Code: $aid = $row->id; mfg coderinblack |
| | |
| | #12 (permalink) |
| Senior Member Themenstarter | @coderinblack Funktioniert leider nicht so. Die Seite showarticle.php benötigt noch den Parameter für aid, den kann sie nur durch Get bekommen, sonst weiß sie nciht was sie anzeigen muss, denn die AUsgabe hängt ganz von den Werten in der showarticle ab. Hat noch Jemand gute Vorschläge? |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| include bei C und C++ | DragonRPA | Code Kitchen | 7 | 15.08.09 11:06 |
| Bildergallerie include | Executor | (Web-) Design und webbasierte Sprachen | 0 | 30.10.08 20:18 |
| php include | haX | (Web-) Design und webbasierte Sprachen | 7 | 15.06.07 17:41 |
| php include | haX | Code Kitchen | 6 | 15.06.07 13:41 |
| Link aufrufen in einem Include... | TeeKayo2 | (Web-) Design und webbasierte Sprachen | 13 | 02.03.07 12:31 |