Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Variable im Link übergeben

Hallo Zusammen,

Ich habe eine Liste mit News-überschriften. Die Details zu den News sollen sichtbar sein wenn man auf den Link nebendran drückt. Also nach folgendem Beispiel:

$datum || $headline || link: Details
$datum || $headline || link: Details
$datum || $headline || link: Details

Wenn ich auf den Link klicke soll es mir naturlich die Details zur jeweiligen News geben.

Wie stelle ich das aber an? Wie kann ich in einem Link eine Variable (beispielsweise $newsID) mit übergeben?

Hier gehts zum Orginal Eintrag "Variable im Link übergeben" im Forum

Antworten

Mittels GET oder POST.
Wobei GET das Mittel der Wahl ist.

[color="orange"]schau mal hier hier![/color]

MFG
Rex


2.

news.php?ID=1

dann über $_GET abholen und anzeigen


3.

Code:                   In Zwischenablage kopieren (nur IE)
1">

*** Nobody ***


4.

Da würde ich auf JavaScript bauen, sprich den Inhalt der News schon mit laden, und beim Klick auf den Link "Details" ein zusätzlichen DIV Container öffnen, der standardmäßig unsichtbar ist.


5.

OK ich war zu langsam :).


6.

Oder siehe den Linke eines Tutorials dafür in der ersten Antwort, um es Dir näher beschreiben zu lassen.

MFG
Rex

EDIT: Ich auch...


7.

[quote]Nobody postete
Code:                   In Zwischenablage kopieren (nur IE)
2">

*** Nobody ***[/quote] also so wie ich das verstehe würde der link dann ja zum Beispiel www.domain.ch/news.php?id=2 lauten.

Wie kann ich aber jetzt die ID in details.php ermitteln? Was muss ich da für einen Befehl nehmen?


8.

Liest du auch, was dir gepostet wurde ? Es steht dann in $_GET['id'] ... Alles andere entnimmst du dann bitte den Tutorials & dem Handbuch !


9.

Hallo Leute,

Das Problem hab ich immernoch. Habe zwar den Text bim Link gelesen, leider weiss ich aber immer noch nicht, wie ich bei den Details die ID dann schlussendlich im Skript hervorrufen kann?

news.php:

Code:                   In Zwischenablage kopieren (nur IE)
3">

newsdetails.php

Code:                   In Zwischenablage kopieren (nur IE)
4">




10.

Zitat:
leider weiss ich aber immer noch nicht, wie ich bei den Details die ID dann schlussendlich im Skript hervorrufen kann?
Ähm, was bitte?

*** Nobody ***


11.

Der Code bei newsdetails.php funktioniert nicht. Die Ausgabe ist einfach "newsid: " aber die ID wird nicht ausgegeben. Also nehme ich an, dass irgendwo der Wurm drin ist. Beim Link der neu geöffnet wird steht im übrigen auch keine ID drin. Also statt www.domain.ch/newsdetails.php?id=7 steht schlichtweg nur www.domain.ch/newsdetails.php?id=


12.

Tja, dann liegt der Fehler dort !!


13.

Zitat:
johnpatcher postete
Tja, dann liegt der Fehler dort !!
Ja, aber was habe ich falsch gemacht?


14.

Woher kommt deine Variabele $newsid? Vom Mond? Aus der Luft? Du musst prüfen, wie die gesetzt wird. Dafür gilt:
Standard-Antwort:
Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An den Anfang des Scriptes schreibt man die Zeile: error_reporting(E_ALL);
4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
5. Schritt 4 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt.


15.

@all: Also ich bin noch ein blutiger Anfänger! Falls ich etwas nicht auf anhieb verstehe und ihr euch darüber endlos aufregt: Es tut mir ja wirklich leid, aber dadurch ändert sich halt leider die Tatsache nicht, dass ich nicht nachkomme! Danke für euer Verständnis!

@Gary: Nein die kommt nicht aus der Luft oder vom Mond! Sondern übers Get.

Das ganze Problem dreht sich ja gerade darum, dass ich nicht drauf komme wieso es nicht klappt!

Meine Überlegung: mit dem Get müsste doch bewirkt werden, dass ich dann die Variable aus der URL rauslesen kann, oder sehe ich das falsch?

$newsid = $_GET['id']; müsste doch also quasi klappen. Sehe aber nicht ein wieso es nicht klappt....


16.

1. Hast Du das Script selbst geschrieben?
Dieses Forum ist in erster Linie dazu da, Leuten zu helfen die php Programmieren
oder es lernen wollen. Wenn mach sich irgendwo ein Script besorgt, dann lernt man wenig bis nichts.

2. Die GET-Parameter werden über die URL übergeben: index.php?var=irgendwas
Ob die Variable überhaupt vorhanden ist kann mit if (isset($_GET['var'])) { ... geprüft werden
Der Inhalt befindet sich in $_GET['var'].

3. Was spricht dagegen als Anfänger zuerst ein Tutorial zu machen.
Dort lernt man auch Fehlersuche(Debugging).


17.

Über $_GET kommt die ID erst, wenn du sie über den Link übergibst. Vorher kommt sie wohl woanders her. Und da du hier geschrieben hast:
Zitat:
Beim Link der neu geöffnet wird steht im übrigen auch keine ID drin.

musst du also prüfen, wo $newsid ursprünglich mal herkommt (aus der Tabelle, Variable irgendwo her o.ä.)... Also nicht schauen, warum die Anzeige des Einzelsatzes nicht funktioniert, sondern erstmal rausfinden, warum keine ID übergeben wird. Woher kommen denn beispielsweise $datum und $headline? An der Stelle wirst du wohl auch eine ID finden (sofern es die bei dir überhaupt gibt)...


18.

@ Bernd456

Zitat:
1. Hast Du das Script selbst geschrieben?
Ja das Skript wird von mir selber gecodet. Wenn nicht, hätte ich wahrscheinlich nicht so viele Probleme damit...

Zitat:
2. Die GET-Parameter werden über die URL übergeben: index.php?var=irgendwas
Ob die Variable überhaupt vorhanden ist kann mit if (isset($_GET['var'])) { ... geprüft werden
Der Inhalt befindet sich in $_GET['var'].
Danke, ich werd mich noch mal dahinter setzten.

Zitat:
3. Was spricht dagegen als Anfänger zuerst ein Tutorial zu machen.
Dort lernt man auch Fehlersuche(Debugging).
Habe auch gar nix gegen ein Tutorial einzuwenden. Hab es ja aucch versucht, bin dann aber gescheitert. Mit Debugging im allgemeinen habe ich schon einige Erfahrungen. Dies scheint mir aber irgendwie nicht ein offensichtlicher Fehler zu sein. Oder ich stehe völlig auf der Leitung... weshalb ich mich ja auch an euch gewandt habe...

@Gary:

Zitat:
musst du also prüfen, wo $newsid ursprünglich mal herkommt (aus der Tabelle, Variable irgendwo her o.ä.)... Also nicht schauen, warum die Anzeige des Einzelsatzes nicht funktioniert, sondern erstmal rausfinden, warum keine ID übergeben wird. Woher kommen denn beispielsweise $datum und $headline? An der Stelle wirst du wohl auch eine ID finden (sofern es die bei dir überhaupt gibt)...
Vielleicht drücke ich mich nicht gut genug aus, aber eben gerade das ist ja das Problem! Die Headline und das Datum sind zum jeweiligen News bzw zur jeweiligen newsID. Die NewsID im einzelnen ist auch vorhanden. Nur im Link nicht oder auf der übergebenen Seite. Deshalb habe ich angenommen die Syntax sei falsch oder es sei irgend ein Fehler wie: statt "Link" muss man 'Link' verwenden....


19.

Du solltest uns vielleicht einfach mal zeigen, wo du die Daten herbekommst. Ansonsten wird das jetzt ein Stochern im Nebel und Befragung der Glaskugeln....


20.

Zitat:
Die NewsID im einzelnen ist auch vorhanden.
Gut, dann kannst du doch damit den Link basteln:
Code:                   In Zwischenablage kopieren (nur IE)
5">

Wenn an dieser Stelle nur id= rauskommt, hast du die ID eben doch nicht. Und warum das so ist, kannst nur du wissen, weil wir das Script nicht kennen.

Beachte die Punkte in "Richtig debuggen", dann hast du wenigsten die Möglichkeit, den Fehler einzukreisen.

*** Nobody ***


21.

ich glaub Du hast hier irgeneinen grundsätzlichen Fehler:

Code:                   In Zwischenablage kopieren (nur IE)
6">

Du übergibst hier die Daten des Formulars per GET - wieso eigentlich???

Dann verlinkst Du auf die selbe Seite und übergibst GET-Daten.

Poste mal bitte die Auswertung von GET in der newsdetails.php.

Und schau dir mal im Browser den erzeugten source an - wie sieht dort Dein Link aus?

Gewöhn Dir mal an bei den echo-Ausgaben Variablen und den Rest zu trennen,
außerdem html-Attribute in doppelte Anführungszeichen:

Code:                   In Zwischenablage kopieren (nur IE)
7">




22.

Zitat:
Gary postete
Du solltest uns vielleicht einfach mal zeigen, wo du die Daten herbekommst. Ansonsten wird das jetzt ein Stochern im Nebel und Befragung der Glaskugeln....
Wie meinst du zeigen? Einfach die DB-Struktur?

newsID int(255) UNSIGNED No auto_increment
newsdate datetime No 0000-00-00 00:00:00
newsheadline varchar(255) latin1_german1_ci No
newsdetails longtext latin1_german1_ci No

News.php:

Hier lasse ich alle News aus der DB abfragen und dann in einer Tabelle ausgeben...

Die Zeile echo "<td>$newsid</td>"; ist "normal". Hier ist die ID sichtbar.

Code:                   In Zwischenablage kopieren (nur IE)
8">

Dann in der zweiten php-datei:

[color="red"]$newsid hat keinen Wert zugeordnet bekommen [/color]

Code:                   In Zwischenablage kopieren (nur IE)
9">




23.

Ähm, du hast nicht rein zufällig eine uralte PHP-Version, oder?

*** Nobody ***


24.

Versuch mal $HTTP_GET_VARS['id'] <= war doch so oder? Hab erst mit $POST und GET gelernt *gg*

Wenns damit klappt solltest du dir Sorgen um die aktualität deiner Version machen :)


25.

Ich habe folgende Angabe bei meinem Host gefunden PHP [Version]: 4.3.10 / 5.0.3
Weiss nicht, ob das jetzt eine uralte Version ist? :$
Ich habe jetzt einfach Testhalber auch $HTTP_GET_VARS['id'] probiert. Das hat leider nicht geklappt.


26.

Ausprobieren:
Code:                   In Zwischenablage kopieren (nur IE)
10">

Code:                   In Zwischenablage kopieren (nur IE)
11">

*** Nobody ***


27.

Okay keine Ahnung woran das liegt, aber jetzt klappt es. Also nicht nur so wie Nobody gesagt hat mit der direkten Eingabe der Zahl, sondern auch so wie ich es zuvor hatte...

Jedenfalls @all: Danke für eure Hilfe & Geduld!


Hier gehts zum Orginal Eintrag "Variable im Link übergeben" im Forum
 
phpforum.de | Impressum