Antworten
Deine Problembeschreibung ist etwas schwach. Was meinst Du mit "in eine andere übergeben"? Da kann man sich jetzt 'ne Menge drunter vorstellen: per Formular, per Link oder sonstwas.
*** Nobody ***
2.
Sorry, werde es mal anders beschreiben.
Also ich gebe meine Daten in einer Tabelle aus. In der letzten Spalte habe ich einen Link eingefügt zum Löschen des Datensatzes. Durch betätigen dieses Links, soll der Datensatz durch eine andere php-Datei nochmal alleine angezeigt werden und dann durch betätigen des Submit Button aus der Mysql-Datenbank gelöscht werden.Leider wird die Variable nicht zur zweiten php-Datei übergeben, ich weiß nicht wie.
Ich hoffe dass das jetzt besser erklärt ist, wenn nicht frag nochmal nach.
3.
datei 1: <a href="datei2.php?show=DEINEID">show</a>
datei 2: echo $_GET['show'];
4.
Hallo...
also es gibt 2 Wege Variablen zu übergeben. Einmal kannst Du es über die URL machen oder Du machst es mit Sessions.
Methode 1: Übergabe von Variablen einer PHP-Datei an eine andere per URL
Wenn Du diese Methode benutzen willst, mußt Du einfach alles was Du an die neue Datei übergeben willst an den Link anhängen. Also wenn Du z.B. an die Datei 2.php die Variablen $name, $strasse und $plz übergeben willst müßte der Link so aussehen:
<a hef="2.php?name=Wert&strasse=Wert&plz=Wert">Link</a>
In deiner 2.php wären diese Variablen dann als $name, $strasse und $plz wieder bekannt. Der Nachteil dieser Methode ist das Du immer einen link auf die 2te Seite brauchst und diese Eingaben natürlich leicht gehackt werden können.
Methode 2: Übergabe von Variablen einer PHP-Datei an eine andere per Session
In PHP gibt es die großartige Sache der Sessions. Nähere Infos bekommst Du hier:
http://php3.globe.de/manual/de/ref.session.php
Das ganze funktioniert eigentlich so das die ganze Zeit in der jemand die Seite besucht im Hintergrund ein Container läuft der Variablen sammelt und diese für jede Datei in der er wieder eingefügt wird zur Verfügung stellt. Das ganze läuft so. Bevor Du irgendwas an den Browser sendest startest Du mit
session_start();
eine neue Session. Das muß auch passieren bevor irgendwelche HTML-Header gesendet werden. Sonst gibt es Fehlermeldungen. Optional kannst Du der Session einen Namen mitgeben. Der müßte dann in den Klammern stehen in "". Danach kannst Du dann mit
session_register($variable);
jede beliebige Variable in den Container reinpacken. Diese ist dann unter de mNamen in diesem Container verfügbar und Du kannst Sie auf allen anderen Seiten benutzen. Vorraussetzung dafür ist nur das Du auf jeder Seite i nder Du die Session benutzen willst als allererstes session_start(); angibst (eventuell, wenn Du deiner Session einen Namen gegeben hast, den in die eckigen Klammern in ""). Aber ließ um näheres zu erfahren bitte die Doku die ich oben angegeben habe.
Der von Dir angesprochene Befehl GLOBAL ist für etwas anderes gut.
Ich hoffe ich konnte Dir helfen.
5.
elvis die sessionvariante funktioniert in diesem beispiel aber nicht, da in o.g. beispiel mehrere datensätze pro seite ausgegeben werden, die halt immer noch einen "details"-link hintendran haben. da is nix mit sessions :)
6.
Stimmt wohl cmi. Aber ich habe die Antwort angefangen zu schreiben als noch keine Antwort da war und auch keine nähere Problembeschreibung :). Ich bin ja eh für Klassen seitdem ich die entdeckt habe :).
Aber sag mal cmi was ist wenn auf dem Server noch eine älter PHP-Version läuft? Dann ist mit $_GET nix, dann müßte man schon $HTTP_GET_VARS nehmen. Außerdem kann man die Variablen doch auch einfach so mit Namen referenzieren.
7.
Ich habe jetzt versucht die id nach der ersten Methode zu übergeben, hat aber glaube ich nicht geklappt. Also das Feld in der Datenbank heißt id und ist ein auto_increment Wert.
Wenn ich in der zweiten Datei die Variable $sqlbef ausgebe, steht da SELECT * FROM objekte WHERE id=
Code der ersten Datei
Code: In Zwischenablage kopieren (nur IE)
Code der zweiten Datei:
Code: In Zwischenablage kopieren (nur IE)
8.
Wie übergibst Du denn den Wert von WERT? Also den mußt Du ja vorher aus der Datenbank ausgelesen haben. Dan nmüßtest Du Ihn noch da einfügen. Deine Zeile müßte also
<?php
"<td><a href='abfLoeschen.php'?id=".$Variable_mit_ID.">X</a></td>".
?>
lauten. Dein Script muß ja wissen das es da eine Variable einsetzen soll.
9.
elvis: $_GET funzt imo ab php 4.1 und das ist bei php schon fast steinzeit ;) und den satz
Zitat:
Außerdem kann man die Variablen doch auch einfach so mit Namen referenzieren.
will ich überlesen haben ;)
c.
10.
Ich lese alle Werte der Datenbank aus und gebe sie in der Tabelle aus. Ich habe jetzt versucht die id zu übergeben, aber bei echo $sqlbef steht immer noch das selbe, ich vermute mal, dass er die Variable nicht ausliest.
Code: In Zwischenablage kopieren (nur IE)
11.
nicole:
dein problem sind wieder die abgeschalteten register_globals.
http://www.dclp-faq.de/q/q-formular-register-globals.html
daher enthält $id nix. $_GET['id'] liefert dann sicherlich einen wert.
c.
[edit]
das geht nicht
Code: In Zwischenablage kopieren (nur IE)
aus gründen von sauberem html würde ich dir folgendes empfehlen:
Zitat:
"<td><a href=\"abfLoeschen.php\"?id=$id>X</a></td>"
oder
Code: In Zwischenablage kopieren (nur IE)
12.
Nicole laß Dir doch mal deine phpinfo ausgeben. Dann siehst Du ja ob der register_globals Flag an oder aus ist.
13.
Zitat:
elvis_presley postete
Nicole laß Dir doch mal deine phpinfo ausgeben. Dann siehst Du ja ob der register_globals Flag an oder aus ist.
oder programmiere gleich sauber (s.o.) und verlasse dich nicht auf eingeschaltete register_globals, denn die sind idr deaktiviert und das ist auch gut so.
c.
14.
Und zum x-ten Male:
16.14. Warum soll ich nicht SELECT * schreiben?
http://www.dclp-faq.de/q/q-sql-select.html
*** Nobody ***
15.
Wahrscheinlich stelle ich mich total blöd an, aber habe jetzt das in die erste Datei eingefügt.
Code: In Zwischenablage kopieren (nur IE)
und nun gibt es die Fehlermeldung.
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\Ausgabe.php on line 57
Wie spreche ich die Variable dann in der zweiten Datei an?
16.
cmi was meinst Du hier denn mit sauber programmieren?
17.
@nicolediallo
Mit dieser aus dem Zusammenhang gerissen Zeile kann man keinen Parse-Error finden, da musst Du schon ein paar Zeilen mehr posten.
@elvis_presley
Damit ist gemeint, auf übergebene Variablen grundsätzlich mit $_GET, $_POST, $_SESSION oder $_COOKIE zuzugreifen.
*** Nobody ***
18.
@nobody: Ich dachte immer $_GET ist nur definiert wenn register_globals an ist. Oder werden in $_GET und $_POST einfach nur die per Post oder Get übergeben Variablen gespeichert und mit register_globals sage ich nur das dort auch die als global definierten Variablen abgelegt werden?
19.
Ich benutze php 4.3.4. register_global ist bei Master Value und Local Value auf on.
20.
@elvis_presley
Falsch gedacht, egal wie register_globals eingestellt ist, $_GET funktioniert trotzdem.
@nicoledallo
Das ist schlecht und sollte auf off geändert werden.
*** Nobody ***
21.
Hier der Code aus meiner ersten Datei:
Code: In Zwischenablage kopieren (nur IE)
22.
Wo kann ich die register_globals ändern?httpd.conf? Die waren bei der Installation schon so eingestellt.
23.
elvis: register_globals AN ermöglicht es, in einer datei einfach schlampig mittels $id auf _irgendein_ $id zugreifen zu können. da wird halt geguckt, ob's das als GET- oder POST- oder sonstwas-variable gibt und die wird dann verwendet. register_globals AUS zwingt zur "saubereren" programmierung mittels $_GET[],$_POST[],...
nicole: du hast das $_GET im falschen script eingefügt. in dem link musst du einfach die id aus der mysqlabfrage einfügen, im VERARBEITUNGSSCRIPT (also das was durch den klick auf den link aufgerufen wird), musst du dann mit dem $_GET arbeiten.
der parseerror ist durch das $ in '' gemeint. schau dir mal an was ich oben gepostet habe, wie der link aussehen muss.
c.
24.
Zitat:
nicolediallo postete
Wo kann ich die register_globals ändern?httpd.conf? Die waren bei der Installation schon so eingestellt.
In der php.ini mal nach register_globals suchen. Nach der Änderung dran denken, daß der Server neu gestartet werden muss.
*** Nobody ***
25.
danke cmi für dein etwas ausgewachseneren kommentar als der von nobody.
26.
Zitat:
elvis_presley postete
danke cmi für dein etwas ausgewachseneren kommentar als der von nobody.
Wenn Du mal die Suchfunktion benutzt hättest, dann hättest Du jede Menge ausführliche Kommentare zu dem Thema lesen können.
*** Nobody ***
27.
@nobody: ah ich merke schon das es hier auch nicht anders zu geht als in anderen boards. schade.
@nicole: hast Du dein Problem mittlerweile gelöst?
28.
elvis: ich glaube das ist nicht böse gemeint, aber mit der zeit nervt es einfach immer wieder die gleichen fragen beantworten zu müssen. ich bin jetzt hier seit gerade mal 2 tagen und hab schon x-mal gelesen, dass variablen auf der folgeseite nicht mehr vorhanden sind (thema: register_globals). das nervt schon ganz schön.
29.
Sorry, dass ich euch schon wider nerve, aber es geht nicht. Ich jetzt in der ersten Datei die Zeile mit dem Löschen-Link geändert .
Code: In Zwischenablage kopieren (nur IE)
Und in der zweiten hab ich die Variable so aufgerufen:
Code: In Zwischenablage kopieren (nur IE)
jetzt gibt es wieder die Fehlermeldung von vorhin.
30.
Zitat:
elvis_presley postete
@nobody: ah ich merke schon das es hier auch nicht anders zu geht als in anderen boards. schade.
Was erwartest Du? Das Thema register_globals mit allen Massnahmen und Änderungen ist hier schon hunderte Mal besprochen worden. Wenn Du regelmäßig immer wieder die gleichen Fragen liest und feststellst, daß leider viele User einfach nicht in der Lage sind, die Suchfunktion zu benutzen, dann nervt das irgendwann. Ich helfe, wo ich kann, aber bei Bequemlichkeit gibt's halt nur kurze Antworten. Das ist in diesem und in jedem anderen Forum nicht anders.
*** Nobody ***
31.
Das Syntaxhighlighting verrät Dir schon Dein problem, wenn Du mal genau hinsiehst:
Code: In Zwischenablage kopieren (nur IE)
Da fehlt ein "
Und schreibe es besser so:
Code: In Zwischenablage kopieren (nur IE)
Und bitte nicht "select *"
*** Nobody ***
32.
Danke für den Tip. Funktioniert trotz Einfügen der Zeile immer noch nicht. Es gibt keine Fehlermeldung mehr,aber bei echo $sqlbef gibt er nur das Select aus ohne die Variable id.
33.
Ahh, achte mal auf die Adresszeile Deines Browsers, die ID wird nicht übergeben, da hier der Fehler ist:
Code: In Zwischenablage kopieren (nur IE)
So sollte es gehen:
Code: In Zwischenablage kopieren (nur IE)
*** Nobody ***
34.
Das funktioniert, trotz der Codezeile von Nobody, nicht. Die Variable wird in der Adresszeile des Browsers nicht angezeigt.
35.
und du bist sicher, dass das id, welches du an den jeweiligen link anhängst, überhaupt etwas enthält? $id muss natürlich die id des datensatzes der jeweiligen zeile sein...?
c.