chris: bestimmte datensätze auslesen...

hallo!

und wiedermal bin ich mit meinem latein am ende....

folgendes: über einen link, sagen wir <a href="entered.php?login=<?php echo $row_Recordset1['login']; ?>">enter</a>...soll man zu einer seite gelangen, die aus einer datenbank eben nur jene daten ausliest, die in der spalte mit dem namen "login" jenen zeichensatz enthält der eben mit dem im link ausgegebenen "login" übereinstimmt.

die tabellenverbindung auf dieser seite (also entered.php?login=user1) habe ich jetzt wie folgt aufgebaut:

....
$_GET['login'];
$query_Recordset1 = "SELECT * FROM users WHERE login=".$login;"";
......

komischerweise erscheint jetzt beim anklicken des oben erwähnten links folgender mysql fehler: "Unknown table 'user1' in where clause" bzw, "Unknown column 'user1' in where clause"....

woran liegt das? meinem verständnis nach müsste es doch so richig klappen....

byebye

chris

  1. Hallo!

    $query_Recordset1 = "SELECT * FROM users WHERE login=".$login;"";
    ......

    komischerweise erscheint jetzt beim anklicken des oben erwähnten links folgender mysql fehler: "Unknown table 'user1' in where clause" bzw, "Unknown column 'user1' in where clause"....

    Hier hätte dir ein echo $query_Recordset1 die Frage erspart! ;-)

    Ist logisch, du übergibst in $login user1 also heißt die query:
    SELECT * FROM users WHERE login=user1

    Bemerkst du was?? Ich hoffe schon!

    Ciao,
    Andy

    1. Hallo!

      $query_Recordset1 = "SELECT * FROM users WHERE login=".$login;"";
      ......

      komischerweise erscheint jetzt beim anklicken des oben erwähnten links folgender mysql fehler: "Unknown table 'user1' in where clause" bzw, "Unknown column 'user1' in where clause"....
      Hier hätte dir ein echo $query_Recordset1 die Frage erspart! ;-)

      Ist logisch, du übergibst in $login user1 also heißt die query:
      SELECT * FROM users WHERE login=user1

      Bemerkst du was?? Ich hoffe schon!

      Ciao,
      Andy

      hallo!

      na ja, die sache ist nur, dass das ganz ja dynamisch ist. mit der query ...WHERE login=user1....kann ich eben nur diesen einen fall auslesen. nur wird mittels einer schleife eben eine seiter vorher (auf der die links sind) eine liste von links generiert, die eben von, sagen wir, ...href="entered.php?login=user001 bis login="user999" gehen kann.... also müsste eben die query auch dynmischer natur sein...oder? vielleicht täusch ich mich auch und du hast vergeblich gehofft ;)...

      bye

      chris

      1. Hallo!

        SELECT * FROM users WHERE login=user1

        Bemerkst du was?? Ich hoffe schon!
        na ja, die sache ist nur, dass das ganz ja dynamisch ist. mit der query ...WHERE login=user1....kann ich eben nur diesen einen fall auslesen. nur wird mittels einer schleife eben eine seiter vorher (auf der die links sind) eine liste von links generiert, die eben von, sagen wir, ...href="entered.php?login=user001 bis login="user999" gehen kann.... also müsste eben die query auch dynmischer natur sein...oder? vielleicht täusch ich mich auch und du hast vergeblich gehofft ;)...

        Schade! Ich hab' dein Problem schon erkannt, ich meine ja nicht das du die query so wie oben schreiben sollst, sondern das sie in deinem angegeben Fall so aussieht, sie könnte auch so lauten:
        SELECT * FROM users WHERE login=user999, falls $login=user999
        dann würde eine Fehlermeldung kommen, das er die Column user999 nicht kennt!
        Du siehst es nicht???
        Die Spalte login ist doch ein VARCHAR oder CHAR, oder???
        Du vergleichst in deiner query mit einer Spalte, aber nicht mit einem Text!
        Denk noch mal drüber nach, wenn du es dann nicht weißt, schreib ich dir die Lösung!

        Ciao,
        Andy

        1. Denk noch mal drüber nach, wenn du es dann nicht weißt, schreib ich dir die Lösung!

          Ciao,
          Andy

          ich fühl mich nicht wohl in der rolle des schülers, der enttäuscht ;) ...also: so wie ich das versteh, sollte ich vor der query eine variable erstellen die als inhalt den vom link mitgeschickten text (also den inhalt der bestimmten zelle der datenbank die ich brauch!) darstellt, und die dann in der query abfragen...

          da müsste doch der $_GET richtig sein. also weiter zur query....
          die variable, die ich mitgenommen hab sagen wir ist "user1"....ich frag also nach den datensätzen, die in der spalte "login" den wert der variable, also "user1" haben. wie wärs mit:
           query..... WHERE login="$_GET['login']"....nur meldet er mir dann einen parse fehler...also is das jetzt entweder ein fehler in der syntax oder falscg gedacht *smile*

          1. Hallo!

            da müsste doch der $_GET richtig sein. also weiter zur query....
            die variable, die ich mitgenommen hab sagen wir ist "user1"....ich frag also nach den datensätzen, die in der spalte "login" den wert der variable, also "user1" haben. wie wärs mit:
             query..... WHERE login="$_GET['login']"....nur meldet er mir dann einen parse fehler...also is das jetzt entweder ein fehler in der syntax oder falscg gedacht *smile*

            Ist klar, du hast den Konkatenationsoperator vergessen, den . auf Deutsch.

            Gut lösen wir auf:
            $query = "SELECT * FROM users WHERE login="".$_GET['login'].""";

            Diese sind dann in etwa wie folgt aus, falls user001 übergeben wird:
            SELECT * FROM users="user001"

            Siehst du nun, worauf ich hinaus will? Text muss in Anführungszeichen stehen!

            Ich hoffe, das hilft dir!

            Ciao,
            Andy

            1. danke erstmal für deine hilfe!

              ich hab mittlerweile geschummelt, und mich ein bisschen mit dreamweaver beschäftigt ;)....der hat mir folgenden code erzeugt, was auch klappt:

              $colname_Recordset1 = "1";
              if (isset($_GET['login'])) {
                $colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['login'] : addslashes($_GET['login']);
              }
              mysql_select_db($database_localhost, $localhost);
              $query_Recordset1 = sprintf("SELECT * FROM users WHERE login = '%s'", $colname_Recordset1);

              is evtl. besser, weil er mit isset sie sache noch vorher prüft!

              aber ich danke dir trotzdem sehr, hat mit immerhin erkenntnisfortschritt gebracht...bye

              chris

              1. Hallo!

                danke erstmal für deine hilfe!

                Nichts zu danken!

                Fröhliches Programmieren!

                Ciao,
                Andy

  2. Hallo chris,

    und wiedermal bin ich mit meinem latein am ende....

    och, das war ich in Latein eigentlich immer :-)

    <a href="entered.php?login=<?php echo $row_Recordset1['login']; ?>">enter</a>

    bist du sicher, dass in dem was du aus der Datenbank bekommst nur Zeichen stehen, die in einer URL erlaubt sind?

    $_GET['login'];

    was soll das bewirken?

    $query_Recordset1 = "SELECT * FROM users WHERE login=".$login;"";

    du bist aber mutig - übernimmst ungeprüfe Daten in deinen Query ...
    btw: verwende nicht * sondern gib die Spalten die du brauchst einzeln an: http://dclp-faq.de/q/q-sql-select.html

    komischerweise erscheint jetzt beim anklicken des oben erwähnten links folgender mysql fehler: "Unknown table 'user1' in where clause" bzw, "Unknown column 'user1' in where clause"....

    wieso komischerweise? Du schreibst ja schließlich, dass der Inhalt des Feldes "login" gleich dem Inhalt von Feld "user1" sein soll - nur existiert die Spalte diese Spalte nicht. Wenn du dagegen Anführungszeichen um den Inhalt von $login machst, sollte es funkionieren.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|