SELECT mit Variable klappt nicht

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

  • SELECT mit Variable klappt nicht

    Hallo Leute,
    heute habe ich ein Problem, dass ich nicht wirklich nachvollziehen kann.

    Erstmal noch kurz die Versionen, die ich einsetze:
    - Apache: 2.2.3
    - PHP 5.2.0
    - mySQL 5.0.27

    Folgende Situation:
    Ich gebe Daten in ein Formular ein, druecke einen Button und schicke alles an eine
    Seite, die dann eine Auswertung der Daten vornimmt. Bis hier klappt alles.

    Die Seite zum Auswerten sieht im Hauptteil so aus:

    PHP-Code:
    <?
        include ("connect.php");
                
        echo "notenschluessel=".$_POST['notenschluessel'];            
        $ns = $_POST['notenschluessel'];
        echo "<br>ns=".$ns;
        //$ns='IHK';
                
        $ausgabe = mysql_query("SELECT v6,b6 FROM notenschluessel WHERE nsbez='$ns'");
        $x=1;
        while($data2 = mysql_fetch_assoc($ausgabe))
        {
            foreach ($data2 as $wert[])
            {
                $wert[$x];
            }
        }
        echo $wert[0];    //ersten Wert ausgeben
        echo $wert[1];    //zweiten Wert ausgeben
        
        include ("close.php");
    ?>
    Ich uebergebe die Variable $notenschluessel. Diese wird auch korrekt ausgegeben (Ausgabe: IHK).
    Dann weise ich den Wert von $notenschluessel der Variable $ns zu. (Damit ich nicht so viel tippen muss *g*)
    Danach gebe ich zum Testen die Variable $ns aus. Es wird der Wert korrekt angezeigt (Ausgabe: IHK).

    Die auskommentierte Zeile beachten wir jetzt noch nicht.

    Im nächsten Schritt waehle ich die Spalten v6 und b6 meiner Tabelle notenschluessel.
    Ich moechte aber nur die Daten ausgegeben haben, wo die Spalte nsbez dem Wert der
    Variable $ns entspricht.
    Wenn in der Spalte nsbez der Eintrag IHK vorhanden ist (und das ist er), dann sollen die Werte der
    Spalten v6 und b6 ausgegeben werden.

    Das klappt nicht! Ich bekomme gar nichts angezeigt, also auch keine Fehlermeldungen etc.

    Wenn ich nun in der Zeile, die auskommentiert ist, die beiden Slashes (//) entferne und die Zeile
    somit einbinde, weise ich der Variable $ns den Wert IHK zu.
    IHK ist ein Eintrag in der DB in der Spalte nsbez.

    Jetzt funktoniert die Ausgabe !
    Ich bekomme meinen $wert[0] und meinen $wert[1] ausgegeben.

    Woran liegt das?
    Wieso muss ich der Variable $ns erst eine Zeichenkette zuweisen?

    Geht es nicht auch so, wie ich es eigentlich vorhabe?

    Danke
    Souli

  • #2
    Bitte lies unsere Regeln. Dort steht auch, wie man mit mysql_error() umgeht und dass man sich zum Debuggen die fertig zusammengesetzte Query ausgeben lassen sollte.

    Übrigens: mysql_real_escape_string()!

    Kommentar


    • #3
      Keine Lust dir die Regeln noch mal zu erklären, lies gefälligst den entsprechenden Regel-Thread!

      PHP-Code:
      <?

      error_reporting(E_ALL);

      include ('connect.php');

      var_dump($_POST);

      $ns = $_POST['notenschluessel'];
      echo 'ns = ' . $ns;

      echo $sql = 'SELECT v6,b6 FROM notenschluessel WHERE nsbez="' . $ns . '"';
      $res = mysql_query($sql)
        or die(mysql_error());

      while($row = mysql_fetch_assoc($res))
      {

        echo $row['v6'];    //ersten Wert ausgeben
        echo $row['b6'];    //zweiten Wert ausgeben
        
      }
          
      include ('close.php');

      ?>
      was passiert? (komplette) ausgabe?
      OffTopic:
      Freu dich auf SQL-Injections...

      Kommentar


      • #4
        Hast du vielleicht bei deinem Eingabeforumular ne Leertaste versehentlich angehängt oderso?
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          Die Testausgaben werden es zeigen...

          Kommentar


          • #6
            Sorry für mein 'unvollständiges' Posting.
            Da formuliere ich es schon so verständlich wie möglich,
            da benutze ich schon die TAGs für den PHP-Code
            und trozdem wird man hier angemacht, als sei man ein Kind.

            Nun ja, wie dem auch sei.

            Der Fehler lag in einem HTML-Abschnitt, den ich nicht postete.
            Dort benutze ich ein Pulldownmenü, dass mit DB-Content
            gefüllt wird. Es gibt also das TAG für select und dazu natürlich
            auch das TAG option.
            Und genau da hakte es.

            In meiner Schleife zum Befüllen des Menüs habe ich nur am
            Anfang und am Ende ein option-TAG gesetzt.
            Dabei muss ja für jedes ins Menü eingelesene Element
            ein einzelnes option-TAG generiert werden.

            Jetzt läuft es so wie es soll.

            THX
            Souli

            Kommentar


            • #7
              ... und trozdem wird man hier angemacht ...
              Wo denn?

              Hättest du die Regeln vorher gelesen und ein bisschen sinnvoll debugt, wärst du auch von alleine drauf gekommen ohne hier den unrelevanten Teil zu posten und dich dann zu beschweren obwohl du das Problem bereits gelöst hast.
              Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

              Kommentar

              Lädt...
              X