Matthias: Sortieren nach bei MySQL

Sersen,

ich werfe Datenwerte aus einer MySQl-Datenbank mit einer Schleife aus.

Am Textanfang habe ich ein Formular eingefügt "Sortieren nach" und will das der User die Liste nach einzelnen Spalten listen kann.

$s = "select film,sprache,qualitaet,email,name,status from filme order by '$order'";

und $order wird per action = "<?php echo $PHP_SELF ?>" übergeben.

Irgendwie will das nicht klappen aber eine Fehlermeldung krieg ich auch nicht.

Maze

  1. Nabend Matze,

    ich werfe Datenwerte aus einer MySQl-Datenbank mit einer Schleife aus.

    Sei vorsichtig, nicht, dass du etwas zerbrechliches triffst ;)

    und $order wird per action = "<?php echo $PHP_SELF ?>" übergeben.

    Verwende $_SERVER['PHP_SELF'] anstatt $PHP_SELF (Stichwort: register_globals).

    Irgendwie will das nicht klappen

    Was meinst du damit? Was für Debug-Bemühungen hast du unternommen? Wohingehend hast du das Problem eingegrenzt?

    Bis denne

    1. Nabend Matze,

      ich werfe Datenwerte aus einer MySQl-Datenbank mit einer Schleife aus.
      Sei vorsichtig, nicht, dass du etwas zerbrechliches triffst ;)

      und $order wird per action = "<?php echo $PHP_SELF ?>" übergeben.
      Verwende $_SERVER['PHP_SELF'] anstatt $PHP_SELF (Stichwort: register_globals).

      Irgendwie will das nicht klappen
      Was meinst du damit? Was für Debug-Bemühungen hast du unternommen? Wohingehend hast du das Problem eingegrenzt?

      Bis denne

      Es geht eigentlich nur darum wie ich die Variable $order in die Zeile der MySQL-Abfrage einbaue, damit die Auflistung individuell ausgewählt werden kann. Ich probiere es gerade mit "limit".

      $s = "select film,sprache,qualitaet,email,name,status from filme order by film limit ('$order')";

      Das funkt nicht: Fehlermedlung ist:
      "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource "

      Er findet also so keine Einträge, was nu ?

      1. Nabend Matze,

        [Fullqoute weggelöscht]

        Bitte nimm dir auch http://learn.to/quote zu Herzen.

        Es geht eigentlich nur darum wie ich die Variable $order in die Zeile der MySQL-Abfrage einbaue, damit die Auflistung individuell ausgewählt werden kann.

        Das habe ich mir gedacht. Nur hast du anscheinend keine befriedigenden Debug-Versuche unternommen, die dich zur Lösung des Problems führen.

        http://www.mysql.de/doc/de/SELECT.html hast du bestimmt auch schon gelesen.

        Ich probiere es gerade mit "limit".

        Du weißt, wofür LIMIT ist?

        "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource "

        Die FAQ (http://dclp-faq.de/) sagen dazu:
        28.4. Supplied argument is not a valid MySQL result...
        http://www.dclp-faq.de/q/q-fehler-mysql-result.html

        Er findet also so keine Einträge, was nu ?

        Meine Anmerkung bezüglich der Fehlersche beachten und zB die Query einmal ausgeben lassen um zu überprüfen, ob sie so wie gewünscht lautet.

        Bis denne,

        1. Nabend nochmal,

          Nabend Matze,

          In deinem ersten Posting unterschriebst du mit "Maze". Aber da lies ich mich wohl von "Matze" bzw. "MatzeA" aus dem Forum inspirieren.
          Es ist also nicht böse gemeit, dass ich immer ein "t" mit in deinen Namen bzw. die Abkürzung mogelte.
          Ich schreib einfach nur noch "Matthias ;)

          Bis denne,

          1. Nabend nochmal,

            Nabend Matze,
            In deinem ersten Posting unterschriebst du mit "Maze". Aber da lies ich mich wohl von "Matze" bzw. "MatzeA" aus dem Forum inspirieren.
            Es ist also nicht böse gemeit, dass ich immer ein "t" mit in deinen Namen bzw. die Abkürzung mogelte.
            Ich schreib einfach nur noch "Matthias ;)

            Bis denne,

            Ok,

            ähmn das Limit nur mit Zahlen funktioniert wusste ich nicht,
            dann müsste ich die Abfrage aus der DB also vorerst dadurch eingrenzen, das ich nur Datensätze mit dem bestimmten Value abfrage und dann ganz normal liste.

            So müsste es doch funken or ?

            PS: Ein SQL Fehler ist es sicher nicht, da das komplette Script ohne diese kleine Feinheit reibungslos funktioniert.

            1. Moin!

              ähmn das Limit nur mit Zahlen funktioniert wusste ich nicht,
              dann müsste ich die Abfrage aus der DB also vorerst dadurch eingrenzen, das ich nur Datensätze mit dem bestimmten Value abfrage und dann ganz normal liste.

              Natürlich kannst Du die Ausgaben auch: mit

              limit '50km/h' oder '25mls' in der Geschwindigkeit (innerhalb von Ortschaften)
              oder
              limit '37°C' oder eben '312K' in der Temperatur (damit der Server nicht zu heiss wird)
              oder
              limit '3600RPM' (damit die Festplatte nicht überdreht)
              oder
              limit '14cm' ("6.5''") in der Länge begrenzen. Das alles ist tatsächlich als Text zu übergeben. ich weiss jetzt aber nicht, welche Datenbank oder welches DBMS mit welcher der Angaben klarkommt.

              Dummerweise liefert MySQL (und jede andere Datenbank, die SQL versteht) IMHO immer dann, wenn eine Zahl OHNE Maßangabe angegeben wird, nur soviele Datensätze aus, wie die Zahl im hexadezimalen Zahlensystem bedeutet. Also ich finde das sehr seltsam und würde es glatt als "unerwartetes" Verhalten betrachten.

              MFFsG (Mit freundlich- friedfertigem- sarkastischem Grinsen)

              fastix®

              --
              Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      2. Moin!

        $s = "select film,sprache,qualitaet,email,name,status from filme order by film limit ('$order')";

        [1] Das hat mit dem Sortieren nichts zu tun. Hier geht es um eine Begrenzung der Anzahl der Ausgabezeilen.
        [2] Die Klammer um '$order' hat da nichts zu suchen.
        [3] $order darf kein Text sein. Dort ist nur eine Zahl sinnvoll. (Wieviele Datensätze sollen maximal zurückgegeben werden?) Du kannst also auf die umschließenden " ' " verzichten.

        Das funkt nicht: Fehlermedlung ist:
        "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource "

        Er findet also so keine Einträge, was nu ?

        Nein. Du hast mit Sicherheit einen SQL- Error. Auch wenn keine Datensätze zurückgegeben werden, so ist die resource gültig und belegt, mysql_num_rows() liefert eine 0. Lies nach, wie Du  Dir die zurückgegebene MySQL-Fehlermeldung ausgeben lassen kannst.

        Sollte der nach Korrektur des SQL- Strings immer noch ein Fehler auftreten benötigen wir zur Verhinderung von Glasgooglelei mehr von Deinem Code.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.