Variable wird nicht übergeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variable wird nicht übergeben

    Hallo zusammen,

    nach drei Jahren beginne ich erstmals mich wieder mit PHP zu beschäftigen ... bin leider nach wie vor ein Anfänger ... also bitte etwas nachsicht.

    Das grundsätzliche Problem:
    (1) Ich lerne an einem vormals funktioniertendem Beispiel (hat unter PHP4x funktioniert).
    (2) Ich habe die aktuelle XAMPP version unter WINDOWS XP installiert.
    (3) Aus einer PHP-Datei (index.php) heraus übergebe ich eine Variable (der Inhalt ist der INDEX einer Datei die in einer MySQL-DB vor sich hin döst) an eine zweite PHP-Datei (datensatz_anzeigen.php).
    (3) Mit Hilfe dieser Datei und der übergebenen ID ($id) versuche ich nun, aus der DB einen bestimmten vom user im INDEX.PHP ausgesuchten datensatz nachzuladen und am Bildschirm anzuzeigen.
    (4) Leider scheint es so zu sein, dass schon in der datei "datensatz_anzeigen.php" die Variable $id überhaupt keinen Wert beinhaltet.

    Hier nun der Inhlat der beiden etwas Code-Bereinigten Dateien INDEX.PHP und DATENSATZ_ANZEIGEN.PHP.
    In der INDEX.PHP baue ich eine Tabelle mit ALLEN INHALTEN der Datenbank auf (das funktioniert nach wie vor. Am Ende JEDES EINTRAGES befindet sich eine URL, die dazu dient, die Variable $id zu füllen und an die Datei "datensatz_anzeigen.php" zu übergeben. Dort diesnt also die $id dazu, den vom Benutzer ausgesuchten datensatz in der DB zu identifizieren und in einer neuen tabelle komplett anzuzeigen (der teil ist schon nicht mehr im Code, da die Übergabe der variablen das problem ist ... sie ist einfach leer).


    // ============================================================
    // INHALT DER DATEI INDEX.PHP (etwas verkürzt)
    // Alle Datensätze auslesen und in Tabelle einfüllen
    $AUSWAHL_ALLE_DATENSAETZE=MYSQL_QUERY("SELECT * FROM $DB_NAME.$DB_TABLE ORDER by 'id' DESC ");

    while($DATENSATZ_ANZEIGEN=MYSQL_FETCH_ROW($AUSWAHL_ALLE_DATENSAETZE))
    {
    echo "
    <tr bgcolor=\"#f1f1f1\">
    <td>$DATENSATZ_ANZEIGEN[0]</td>
    <td>$DATENSATZ_ANZEIGEN[1]</td>
    <td>$DATENSATZ_ANZEIGEN[2]</td>
    <td>$DATENSATZ_ANZEIGEN[3]</td>
    <td>$DATENSATZ_ANZEIGEN[4]</td>
    <td>$DATENSATZ_ANZEIGEN[5]</td>
    <td>$DATENSATZ_ANZEIGEN[6]</td>
    <td>[ <a href=\"datensatz_anzeigen.php?$id=$DATENSATZ_ANZEIGEN[0]\" <b>&#187;</b></a> ]</td>
    </tr>\n";
    }
    echo "</table>\n";
    echo "<p>\n";




    // ============================================================
    // INHALT DER DATEI datensatz_anzeigen.php (etwas verkürzt)
    // $id beinhaltet den INDEX des anzuzeigenden Datensatzes.
    $DATENSATZ_AUSWAEHLEN=MYSQL_QUERY(" SELECT * FROM $DB_NAME.$DB_TABLE WHERE id = '$id' ");


    ==> ICH FRAGE MICH nun, warum ist die variable $id leer ... definitiv hat diese Vorgehensweise unter PHP4.x noch funktioniert. Ich kann mir aber auch vorstellen, dass es vielleicht eine bessere methode als die zuvor beschriebene gibt. Wenn JA, kann mir jemand zeigen wie das geht?
    PS: ich habe natürlich vor diesem Posting das Forum durchsucht ... leider aber keine direkte Antwort auf mein Problem gefunden.

    Jede Hilfe ist willkommen ....

  • #2
    Re: Variable wird nicht übergeben

    Informiere dich über register_globals=off, und wie man korrekt auf per GET oder POST übergebene Werte zugreift, Stichwort Superglobals.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      definitiv hat diese Vorgehensweise unter PHP4.x noch funktioniert
      seit php 4.2 standardmäßig aber nicht mehr, eigentlich schon seit php 4.1

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Danke für die Antworten.

        Ich verstehe jetzt, dass das ganze Problem durch "register_globals = OFF" entstanden ist. Jetzt möchte ich natürlich nicht auf die Idee kommen, einfach auf "register_globals = ON" umzustellen (ich verwende ein lokales XAMPP und da wäre es natürlich nicht kritisch).

        Ich würde die sache aber gerne verstehen. Ich habe einige Infos im WEB gefunden und hätte möglicherweise weniger Verständnisprobleme, wenn ich eindeutig erkennen würde, dass im nachfolgenden STRING auch ein GET oder POST gemacht würde:

        <a href=\"datensatz_anzeigen.php?$id=$DATENSATZ_ANZEIGEN[0]\" </a>

        Dann müsste ich (z.B. bei GET) im Ziel-PHP die variable mit $MY_ID = $_GET['id']; abfangen (oder so ähnlich).

        Wie müsste ich denn diesen String umbauen, damit ich mit $_GET['id']; abfangen kann (oder $_POST)?

        ==> <a href=\"datensatz_anzeigen.php?$id=$DATENSATZ_ANZEIGEN[0]\" </a>
        Zuletzt geändert von billard; 21.08.2006, 19:31.

        Kommentar


        • #5
          falsch! eine variable übergibt man so (meine syntax):
          PHP-Code:
          echo '<a href="datensatz_anzeigen.php?id='.$datensatz[0].'">blabla</a>'
          darauf greifts du wie schon erkannt mit
          PHP-Code:
          $_GET['id'
          zu.
          Wie müsste ich denn diesen String umbauen, damit ich mit $_GET['id']; abfangen kann (oder $_POST)?

          erklär das mal verständlich.

          PS: gewöhn dir schnellstens ab, variablen in großbuchstaben zu schreiben, das macht man nur mit konstanten.

          gruß
          peter
          Zuletzt geändert von Kropff; 21.08.2006, 19:50.
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Original geschrieben von billard
            Danke für die Antworten.Wie müsste ich denn diesen String umbauen, damit ich mit $_GET['id']; abfangen kann (oder $_POST)?
            der angesprochene string, ist ja ein link (von Kropff schon in der syntax berichtigt.) parameter, die im url übertragen werden, sind immer mit $_GET['parameter_name'] anzusprechen.

            parameter, die über ein formular übertragen werden, sind üblich mit $_POST['parameter_name'] anzusprechen (üblich, weil formulare auch per get übertragen werden können)

            wenn du nun genau weißt, wie die übertragung stattfindet, entsprechend $_GET oder $_POST verwenden, ansonsten könnte dir $_REQUEST weiterhelfen.

            Kommentar


            • #7
              Zuerst mal vielen dank für die Beiträge ... ich habe tatsächlich die Lösung erhalten, hauptsächlich durch den Hinweis von Kropff.

              Die Übergabe ALT: echo "<a href=\"datensatz_anzeigen.php?$id=$DATENSATZ_ANZEIGEN[0]\"bla</a>";

              Die Übergabe NEU: echo "<a href=\"datensatz_anzeigen.php?id=$DATENSATZ_ANZEIGEN[0]\"bla</a>";

              Also ein simples "$" zuviel VOR dem "id" hat das Problem verursacht. Danach kann ich in der Zieldatei (DATENSATZ_ANZEIGEN) via "$id = $_GET['id'];" den übergebenen Wert auslesen.

              Merci für die Hilfe ... und ich werde auch (wie angeraten) meine variablen in Zukunft klein schreiben.

              Kommentar

              Lädt...
              X