|
 |
|
| Autor |
Nachricht |
Wirrkopf Neuer [User]

Anmeldung: 23.02.06 Beiträge: 5
|
Verfasst am: 23.02.2006, 10:20 Titel: Weitergabe von Parametern im Link |
|
|
Hallo zusammen!
Ich bin gerade dabei, eine Website zu erstellen, die PHP und MySQL nutzt. Um die Anzahl der Seiten möglichst gering zu halten, habe ich die Idee, diese anhand der Informationen im angeklickten Link zu "generieren".
Ich nutze nur Tabellen und divs, keine Frames. Beim Aufruf der Seite wird anhand einer Datenbank-Abfrage ein vertikales Menu gebastelt. Diese Zusammenstellung habe ich mit While realisiert.
Die Idee ist nun, innerhalb der While-Schleife die aktuelle Zeilennummer den einzelnen Links mitzugeben und in der Zielseite zur Darstellung des Inhaltes einzusetzen, der mit dieser Zeilennummer übereinstimmt.
So weit, so gut. Das Anhängen des Links klappt einwandfrei. Die Übergabe des Parameters allerdings nicht. Es wird grundsätzlich der letzte Parameter aus der While-Schleife übergeben, weil dieser in dem Moment aktiv ist, wo die Seite aufgerufen wird.
Ich dreh mich gedanklich inzwischen im Kreis und finde keine passende Lösung. Hab auch schon an einen Einsatz von onclick als Event gedacht, bin aber in JavaScript weniger bewandert.
Hat jemand eine Idee? Wäre das eigentliche Ziel überhaupt umsetzbar?
|
|
| Nach oben |
|
 |
Campino Beliebter [User]


Anmeldung: 19.09.04 Beiträge: 451 Wohnort: Delmenhors ...
|
Verfasst am: 23.02.2006, 10:27 Titel: |
|
|
Am besten du postest mal, wie du es bis jetzt machst
gruß,
Campino _________________ d >_< b
|
|
| Nach oben |
|
 |
Wirrkopf Neuer [User]

Anmeldung: 23.02.06 Beiträge: 5
|
Verfasst am: 23.02.2006, 10:49 Titel: |
|
|
Okay, sieht im Moment folgendermaßen aus:
| Code: |
$sql_query = "select * from menu_vertical where menu_horiz_nr = '".$menu_horiz_nr."'";
// Der Parameter $menu_horiz_nr wird im Moment noch für jede Seite einzeln am
// Beginn der Datei vordefiniert und entspricht einem Eintrag in der Datenbank
$result = safe_query($sql_query, $vk)
or die (mysql_error());
// safe_query ist eine Funktion, die statt kryptischen Fehlercodes eine Angabe des Fehlers im Klartext liefert, $vk sind die Kennungsdaten der Verbindung zur Datenbank
while ($content_vert = mysql_fetch_array($result))
{
$content_name = $content_vert["menu_vert_name"];
// menu_vert_name ist der Eintrag, der im Menü erscheinen soll
$db_link = $content_vert[""menu_vert_nr"];
// menu_vert_nr ist der Autowert in der Tabelle und damit eindeutig
// menu_vert_link ist im Moment die Angabe der php-Datei, die aufgerufen werden soll
echo "<tr><td><a href='".$content_vert["menu_vert_link"]."'?db_link=".$db_link."'>".$content_name."</a></td></tr>";
}
// an einer anderen Stelle im Code der selben Seite (!) binde ich dann $db_link wieder ein, die Idee ist aber, diesen Parameter bereits am Anfang der gesamten Seite zu nutzen für $menu_horiz_nr! Auch die bisherigen Versuche, den Parameter am Anfang der Seite einzubinden, haben immer dasselbe Ergebnis gehabt
|
Es erscheint mir für den Rechenweg absolut logisch, dass ein Parameter ausgegeben wird, den ich nicht haben will...
Meine Idee würde grundsätzlich - so sie denn funktioniert - mit 2 Seiten auskommen: Eine index.php, die vordefiniert ist und damit immer Ergebnisse liefert, sowie eine content.php, die auf die Übergabe von $db_link angewiesen ist, um entsprechende Inhalte aufbauen zu können.
Hoffe, damit kommt etwas Licht in die Sache.
Schon mal besten Dank,
Wirrkopf
|
|
| Nach oben |
|
 |
Campino Beliebter [User]


Anmeldung: 19.09.04 Beiträge: 451 Wohnort: Delmenhors ...
|
Verfasst am: 23.02.2006, 11:20 Titel: |
|
|
$db_link = $content_vert[""menu_vert_nr"];
(...)
echo "<tr><td><a href='".$content_vert["menu_vert_link"]."'?db_link=".$db_link."'>".$content_name."</a></td></tr>";
hi,
erstmal ist da ein bischen viel im Source drin und dann versteh ich noch immer nicht den Sinn deines Seitenaufbaus
// Campino _________________ d >_< b
|
|
| Nach oben |
|
 |
Wirrkopf Neuer [User]

Anmeldung: 23.02.06 Beiträge: 5
|
Verfasst am: 23.02.2006, 11:47 Titel: |
|
|
Hallo Campino,
danke für Deine schnellen Reaktionen.
Die Kommentare im Source waren natürlich für Dich gedacht, bei mir sind die nicht drin
Der Source selbst hat ja nur die Datenbank-Abfrage und eine darzustellende Zeile.
Ja, wegen des Sinns hab ich so meine eigene Vorstellung, aber vielleich liegt da ja das Problem.
Nochmal ein Versuch der Erläuterung:
Ich setze mit Hilfe von Tabellen und divs eine Seite zusammen, die linksseitig ein vertikales Menü enthält.
Das Menü wird durch eine Abfrage an die Datenbank zusammengestellt. Die Anzahl der untereinander aufgelisteten Einträge im Menü hängt von der gewählten Hompage-Seite ab.
Wähle ich einen Link in diesem Menü, wird die neue Seite aufgerufen und nutzt erneut die selbe Source zum Aufbau ihres eigenen Menüs, nur das hier eine andere Seite aus der Datenbank gefragt ist.
Insofern ist in jeder Seite per include der Aufbau des Seitenmenüs enthalten. Dieser entspricht dem dargestellten Source (hinzu kommt nur die Ausrichtung des Menüs, die ich mit einem div vornehme).
Ganz am Anfang jeder einzelnen Homepage-Seite habe ich einen Parameter $menu_horiz_nr eingebunden und vergebe manuell eine Zahl.
Diese Zahl ist identisch mit dem Eintrag in der Datenbank zur aufgerufenen Seite.
D.h. für jeden Einträg in der Datenbank gäbe es eine Seite, die mit dieser Zahl eindeutig festgelegt wird. (Die Namen des Parameters und der Spalte in der Datenbank sind nur deshalb gleich, damit ich die Inhalte sofort wieder erkenne.)
Mein Ziel bestünde schlicht darin, diese manuell eingegebene Zahl durch einen Parameter zu ersetzen, der mit dem zuletzt geklickten Link festgelegt wird.
Somit bräuchte ich abgesehen von einer Startseite nur eine einzige weitere Seite, die ihre Inhalte immer anhand der am Anfang der Datei festgelegten Zahl aufbaut.
(Im Source als db_link eingebunden.)
Mit dem Source bekomme ich es hin, dass in jeder Zeile des Menüs (sehe ich in der Statuszeile) die richtige Zahl weitergegeben würde. Wenn ich aber auf den Link klicke, übermittelt PHP stets die Zahl, die im aktuell gültigen Menü (=while-Schleife) als letzter Eintrag vorhanden ist, NICHT die gewählte und geklickte Zeile.
Meine Einschätzung ist, das das Prinzip deshalb nicht funktioniert, weil alle Vorgänge in ein und derselben Seite stattfinden. Ich habe etwas ähnliches schon einmal in einer auf Frames basierenden Seite realisiert, wo ich keinerlei Probleme hatte... Frames haben mir aber für die aktuelle Seite einfach zu viele Nachteile.
Beispiel:
Das aktuelle Menü ruft 5 Einträge aus der Tabelle menu_vertical auf.
Diese haben die Nummern 1 bis 5 (=menu_horiz_nr).
Ich wähle die Nummer 2 als Link, die Statuszeile zeigt mir den Link mit z.B.
.../background.php?db_link=2
Beim Klicken wird background.php aufgerufen, aber das Menü, das erscheint ist nicht die Nummer 2, sondern die Nummer 5!
Immer noch kompliziert erklärt, oder?...
|
|
| Nach oben |
|
 |
Campino Beliebter [User]


Anmeldung: 19.09.04 Beiträge: 451 Wohnort: Delmenhors ...
|
Verfasst am: 23.02.2006, 12:45 Titel: |
|
|
Hi,
tjo - mal sehen. Also, wenn du oben die beiden Anführungsstriche weggemacht hast (siehe vorherigen Post), und dann die zähl-variable per get übergibst, dann setz doch einfach nen Link darauf
bsp:
<a href="seite1.php?link=1337">Seite 1</a>
Dann am Anfang der Seite1.php:
$menu_horiz_nr = (!isset($_GET['link']))? 'fehlerseitennummer' : $_GET['link'];
Dann wird geguckt, ob die Variable link (im hyperlink mitgegeben) existiert, wenn nicht, dann wird in der Var. eine Nummer gespeichert, hinter der sich eine Fehlermeldung verstecken könnte
gruß,
Campino _________________ d >_< b
|
|
| Nach oben |
|
 |
Metaman Power-Poster [User]


Anmeldung: 20.11.05 Beiträge: 635
|
Verfasst am: 23.02.2006, 12:58 Titel: |
|
|
| Zitat: | | Immer noch kompliziert erklärt, oder? | Ja
also ich verstehe nichts.
das einfachte wäre vielleicht wenn Du einfach mal an den verschiedenen Stellen im Script mit echo die Werte oder auch sql_query ausgeben läßt, vielleicht siehst du dann den Fehler selber, und mußt es nicht umständlich beschreiben
also einfach echos einbauen, und wenn das nicht ausreicht, einfach noch einige Stops in Script einbauen _________________
Webmaster Lexikon
Schnäppchensuche
Wenn Du einen Clan Sponsor suchst, schreibe mich NICHT an!!!
|
|
| Nach oben |
|
 |
Campino Beliebter [User]


Anmeldung: 19.09.04 Beiträge: 451 Wohnort: Delmenhors ...
|
Verfasst am: 23.02.2006, 15:43 Titel: |
|
|
ich vermute ja, dass wegen dem einem ' (siehe meinen ersten post) die variable garnicht erst übermittelt wurde - aber lasst uns mal warten, was der Wirre dazu sagt
gruß,
Campino _________________ d >_< b
|
|
| Nach oben |
|
 |
Wirrkopf Neuer [User]

Anmeldung: 23.02.06 Beiträge: 5
|
Verfasst am: 23.02.2006, 15:57 Titel: |
|
|
Ich komm dem Problem im Moment nicht auf die Spur (vielleicht sollte ich erstmal meine Erkältung überwinden ). Hab verschiedene Varianten probiert, einschließlich einer leeren Testseite. Kein Fortschritt. Muss das wohl noch einmal ganz neu durchdenken.
@Metaman:
Mit verschiedenen echos habe ich schon rumgespielt. Daher ja die Aussage, dass der falsche Parameter übermittelt wird. Mit den Stops muss ich auch noch mal schauen. Das wird meiner Meinung aber nur dann etwas bringen, wenn ich in die Schleife eingreife...
@Campino:
Dein Vorschlag entspricht dem, was ich mir überlegt hatte. Aber auch mit der vorgeschlagenen Variante erhalte ich nicht den Parameter, den ich möchte. Und da kein Fehler ausgegeben wird, aber das falsche Menü erscheint, muss ich davon ausgehen, dass der übergebene Parameter irgendwo zwischendrin verloren geht. - Da muss ich wohl eine detailliertere Suche starten.
Tatsache ist, dass ich einwandfreie Ergebnisse bekomme, wenn ich in jeder Seite den Parameter manuell festlege. Insofern kann der Aufbau an sich nicht der Fehler sein, oder?
Ich bin weiterhin der Meinung, dass egal, welchen Link ich anklicke (d.h. welche Nr übergeben würde) immer ein und dieselbe Nr, nämlich die letzte aus der Schleife weiter gegeben wird. Dadurch kann ich nicht auf den richtigen Parameter zugreifen und deshalb funktioniert das ganze auch dann erst richtig, wenn ich manuell die Zahlen vergebe.
Was ich dabei nicht verstehe ist, warum ich in der Statuszeile die richtigen Übergabewerte sehen kann...
|
|
| Nach oben |
|
 |
Metaman Power-Poster [User]


Anmeldung: 20.11.05 Beiträge: 635
|
Verfasst am: 23.02.2006, 16:35 Titel: |
|
|
nur mal zum Verständniss dieser Code den du oben gepostest hast, ist das deine
background.php???
wenn ja, dann rufst du diese für ein Untermenü ja mit
background.php?db_link=2
wäre es dann nicht besser wenn Du in der select Abfrage statt
... where menu_horiz_nr = '".$menu_horiz_nr."'";
mit
... where menu_horiz_nr = '".$db_link."'";
verwendest ???
oder liege ich da jetzt komplett daneben ? _________________
Webmaster Lexikon
Schnäppchensuche
Wenn Du einen Clan Sponsor suchst, schreibe mich NICHT an!!!
|
|
| Nach oben |
|
 |
Wirrkopf Neuer [User]

Anmeldung: 23.02.06 Beiträge: 5
|
Verfasst am: 02.03.2006, 15:41 Titel: |
|
|
Hallo nochmal!
Hab jetzt ein paar Tage lang meine Erkältung auskuriert und mich dann noch einmal an den Code gesetzt.
Es funktioniert jetzt!
Die Ursache lag offenbar nicht im geposteten Code selbst, sondern innerhalb des JavaScript, dass ich als Seitenmenue benutzt habe. Dies lässt offenbar nicht zu, dass interaktiv Ergänzungen vorgenommen werden, die sich aus einer Datenbank generieren.
Ich habe einfach den Teil, der dieses Menü betrifft ohne while-Schleife geschrieben und prompt klappt die Sache!
Aufgefallen ist mir der Fehler durch einen Cross-Browser-Test, wobei der MSIE auf einmal nur einen Teil des Seiteninhalts angezeigt hat...
Trotzdem besten Dank für die Hilfe-Versuche!
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde
|
| Seite 1 von 1 |
|  |