sortieren mit textlink?

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

  • sortieren mit textlink?

    hallo

    mein script sieht momentan so aus
    PHP-Code:
    <?
    include ("../../php/fn_global.inc.php");
    include ("config.inc.php");
    $link = OpenDatabase ();
    $res = mysql_query("select qm_idnr, zeit, url, txt from t_qm_marchiv order by '$b'");

    /* Datensätze aus Ergebnis ermitteln, in Array speichern und in Tabelle ausgeben*/
    echo "<table border>";

    echo "<tr><td><form>
    <input type='radio' name='b' value='qm_idnr'> qm_idnr</td> 
    <td><input type='radio' name='b' value='&Auml;nderungs-Datum'> &Auml;nderungs-Datum</td> 
    <td><input type='radio' name='b' value='Dokument-Name'> Dokument-Name</td> 
    <td> Link zum Dokument <input type='submit' value='sortieren'> </td></tr>";
    echo "</form>";
    while ($dsatz = mysql_fetch_assoc($res))
    {
          echo "<tr>";
          echo "<td>" . $dsatz["qm_idnr"] . "</td>";
          $sek = substr($dsatz['zeit'],0,2);    //sekunde
          $min = substr($dsatz['zeit'],2,2);    //minute
          $hou = substr($dsatz['zeit'],4,2);    //stunde
          $day = substr($dsatz['zeit'],6,2);    //am
          $mon = substr($dsatz['zeit'],8,2);    //tag
          $yea = substr($dsatz['zeit'],10,2);    //monat
          $am = substr($dsatz['zeit'],12,2);    //jahr
          echo "<td>" . $hou . ":" . $min . ":" . $sek . " " . $am . "." . $day . "." .  $mon . " " . $yea . "</td>";
          echo "<td>" . $dsatz["txt"] . "</td>";
          $rp = strstr($dsatz['url'],'/');
          $link =  "http://stw01/intra/qm/qh/".$rp;
          echo "<td><a href=" .  $link . " target='_blank'>anzeigen</a></td>";
          echo "</tr>";
    }
    echo "</table>"; 
    ?>
    das funtzt auch toll, aber nun möchte ich nicht mit den radiobuttons sotieren, sondern mit textlinks. d.h. ich klick in dersretsen zeile auf qm_idnr und es wird nach qm_idnr sotiert. oder ich möchte nach änderungsdatum sotieren und klicke daher auf änderungsdatum.

    aber ich habe keine idee wie ich das machen soll, was ich auch schon versucht habe, ist, falls noch nichts ausgeählt wurde, das nach zeit sotiert wird, das trifft ja dann zu wenn ich dies seite das erste mal aufrufe.

  • #2
    mach 'ne Tabellen-Kopfzeile mit Links und übergibt jeweils einen Wert für Sortierungskriterium als URL-Var, dann kannst du per $_GET auslesen und in die Abfrage einbauen.

    Kommentar


    • #3
      das habe ich jetzt noch nicht ganz mit dem $_get verstanden

      habe es mal so probiert
      PHP-Code:
      <?
      include ("../../php/fn_global.inc.php");
      include ("config.inc.php");
      $link = OpenDatabase ();
      echo "<br>idnr: " . $idnr;

      if ($aktion == "1")
          $b = qm_idnr;
      if ($aktion == "2")
          $b = zeit;
      if ($aktion == "3")
          $b = txt;


      $sql = "select qm_idnr, zeit, url, txt from t_qm_marchiv  where qm_idnr=" . $idnr . " order by '$b'";
      $res = mysql_query($sql);
      if (mysql_errno()) die ("MySQL-Error: " . mysql_error());

      /* Datensätze aus Ergebnis ermitteln, in Array speichern und in Tabelle ausgeben*/
      echo "<table border>";
      echo "<tr><form>
      <td><a href='archiv2.php?aktion=1'> qm_idnr</a> </td> 
      <td><a href='archiv2.php?aktion=2'> &Auml;nderungs-Datum</a> </td> 
      <td><a href='archiv2.php?aktion=3'> Dokument-Name</a> </td> 
      <td> Link zum Dokument</td><p>";

      echo "</form></tr>";
      while ($dsatz = mysql_fetch_assoc($res))
      {
            echo "<tr>";
            echo "<td>" . $dsatz["qm_idnr"] . "</td>";
            $sek = substr($dsatz['zeit'],0,2);    //sekunde
            $min = substr($dsatz['zeit'],2,2);    //minute
            $hou = substr($dsatz['zeit'],4,2);    //stunde
            $day = substr($dsatz['zeit'],6,2);    //am||qm
            $mon = substr($dsatz['zeit'],8,2);    //tag
            $yea = substr($dsatz['zeit'],10,2);    //monat
            $am = substr($dsatz['zeit'],12,2);    //jahr
            echo "<td>" . $hou . ":" . $min . ":" . $sek . " " . $am . "." . $day . "." .  $mon . " " . $yea . "</td>";
            echo "<td>" . $dsatz["txt"] . "</td>";
            $rp = strstr($dsatz['url'],'/');
            $link =  "http://stw01/intra/qm/qh/".$rp;
            echo "<td><a href=" .  $link . " target='_blank'>anzeigen</a></td>";
            echo "</tr>";
      }
      echo "</table>";

      ?>
      aber dann komt eine fehlermeldung:
      idnr: MySQL-Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by 'zeit'' at line 1

      Kommentar


      • #4
        order by ohne Hochkommas bitte

        also order by $b


        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

        Kommentar


        • #5
          bei $b ohne hochkomma, bekomm ich aber gleich eine fehlermeldung sobald ich die seite aufrufe:
          MySQL-Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

          Kommentar


          • #6
            Dann poste mal bitte den neuen Codeschnipsel

            wenn da steht "near ' ' " muss ja irgendwo ein Hochkomma sein


            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

            Kommentar


            • #7
              und
              Original geschrieben von MaxP0W3R
              poste mal bitte
              die komplette abfrage, so wie die datenbank sie bekommt, also mit echo $sql;
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                PHP-Code:
                <?
                include ("../../php/fn_global.inc.php");
                include ("config.inc.php");
                $link = OpenDatabase ();
                echo "<br>idnr: " . $idnr;

                if ($aktion == "1")
                    $b = qm_idnr;
                if ($aktion == "2")
                    $b = zeit;
                if ($aktion == "3")
                    $b = txt;


                $sql = "select qm_idnr, zeit, url, txt from t_qm_marchiv  where qm_idnr=" . $idnr . " order by $b";
                echo "<br>" . $sql;
                $res = mysql_query($sql);
                if (mysql_errno()) die ("MySQL-Error: " . mysql_error());

                /* Datensätze aus Ergebnis ermitteln, in Array speichern und in Tabelle ausgeben*/
                echo "<table border>";
                echo "<tr><form>
                <td><a href='archiv2.php?aktion=1&&idnr=$idnr'> qm_idnr</a> </td> 
                <td><a href='archiv2.php?aktion=2&&idnr=$idnr'> &Auml;nderungs-Datum</a> </td> 
                <td><a href='archiv2.php?aktion=3&&idnr=$idnr'> Dokument-Name</a> </td> 
                <td> Link zum Dokument</td><p>";

                echo "</form></tr>";
                while ($dsatz = mysql_fetch_assoc($res))
                {
                      echo "<tr>";
                      echo "<td>" . $dsatz["qm_idnr"] . "</td>";
                      $sek = substr($dsatz['zeit'],0,2);    //sekunde
                      $min = substr($dsatz['zeit'],2,2);    //minute
                      $hou = substr($dsatz['zeit'],4,2);    //stunde
                      $day = substr($dsatz['zeit'],6,2);    //am||qm
                      $mon = substr($dsatz['zeit'],8,2);    //tag
                      $yea = substr($dsatz['zeit'],10,2);    //monat
                      $am = substr($dsatz['zeit'],12,2);    //jahr
                      echo "<td>" . $hou . ":" . $min . ":" . $sek . " " . $am . "." . $day . "." .  $mon . " " . $yea . "</td>";
                      echo "<td>" . $dsatz["txt"] . "</td>";
                      $rp = strstr($dsatz['url'],'/');
                      $link =  "http://stw01/intra/qm/qh/".$rp;
                      echo "<td><a href=" .  $link . " target='_blank'>anzeigen</a></td>";
                      echo "</tr>";
                }
                echo "</table>";

                ?>
                das echo:
                idnr: 504
                select qm_idnr, zeit, url, txt from t_qm_marchiv where qm_idnr=504 order by MySQL-Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

                wie würde denn das mit dem $_GET ausshene?
                bestimmt nicht so kompliziert wie jetzt?
                Zuletzt geändert von handyaner; 29.09.2004, 11:26.

                Kommentar


                • #9
                  und dir ist nicht aufgefallen, dass hinter order by nichts mehr kommt?

                  wenn ich dir sage: "Pass auf, da sind Daten, gib mir die sortiert nach zurück", was machst du dann?

                  also überlegst du, wo $b herkommt, wo die information für die quelle von $b herkommt und wo du eventuell noch was tun slltest
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    1. zeile : $b = GET['b'];

                    bzw. wo soll das $b denn herkommen =


                    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                    Kommentar


                    • #11
                      PHP-Code:
                      <?
                      include ("../../php/fn_global.inc.php");
                      include ("config.inc.php");
                      $link = OpenDatabase ();
                      echo "<br>idnr: " . $idnr;
                      /* $b wird hier definiert */
                      if ($aktion == ""    //nach änderungs-datum sotiert
                          $b = zeit;
                      if ($aktion == "1")    //nach qm_idnr sotiert
                          $b = qm_idnr;
                      if ($aktion == "2")    //nach änderungs-datum sotiert
                          $b = zeit;
                      if ($aktion == "3")    //nach dokument-name sotiert
                          $b = txt;


                      $sql = "select qm_idnr, zeit, url, txt from t_qm_marchiv  where qm_idnr=" . $idnr . " order by $b";
                      echo "<br>" . $sql;
                      $res = mysql_query($sql);
                      if (mysql_errno()) die ("MySQL-Error: " . mysql_error());

                      /* Datensätze aus Ergebnis ermitteln, in Array speichern und in Tabelle ausgeben*/
                      echo "<table border>";
                      echo "<tr><form>
                      <td><a href='archiv2.php?aktion=1&&idnr=$idnr'> qm_idnr</a> </td> 
                      <td><a href='archiv2.php?aktion=2&&idnr=$idnr'> &Auml;nderungs-Datum</a> </td> 
                      <td><a href='archiv2.php?aktion=3&&idnr=$idnr'> Dokument-Name</a> </td> 
                      <td> Link zum Dokument</td><p>";

                      echo "</form></tr>";
                      while ($dsatz = mysql_fetch_assoc($res))
                      {
                            echo "<tr>";
                            echo "<td>" . $dsatz["qm_idnr"] . "</td>";
                            $sek = substr($dsatz['zeit'],0,2);    //sekunde
                            $min = substr($dsatz['zeit'],2,2);    //minute
                            $hou = substr($dsatz['zeit'],4,2);    //stunde
                            $day = substr($dsatz['zeit'],6,2);    //am||qm
                            $mon = substr($dsatz['zeit'],8,2);    //tag
                            $yea = substr($dsatz['zeit'],10,2);    //monat
                            $am = substr($dsatz['zeit'],12,2);    //jahr
                            echo "<td>" . $hou . ":" . $min . ":" . $sek . " " . $am . "." . $day . "." .  $mon . " " . $yea . "</td>";
                            echo "<td>" . $dsatz["txt"] . "</td>";
                            $rp = strstr($dsatz['url'],'/');
                            $link =  "http://stw01/intra/qm/qh/".$rp;
                            echo "<td><a href=" .  $link . " target='_blank'>anzeigen</a></td>";
                            echo "</tr>";
                      }
                      echo "</table>";

                      ?>
                      falls noch nicht mit hand ausgewählt wurde nach was sotiert werden soll (if ($aktion == "" //nach änderungs-datum sotiert $b = zeit, sotiert
                      es nach änderungsdatum.

                      und jetzt klappts

                      Kommentar


                      • #12
                        /* $b wird hier definiert */
                        if ($aktion == "" //nach änderungs-datum sotiert

                        da fehlt ne )

                        :P


                        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                        Kommentar


                        • #13
                          Sortier halt nur, wenn Du auch ein Sortierkriterium hast. :-)

                          PHP-Code:
                          $sql 'select qm_idnr, zeit, url, txt from t_qm_marchiv  where qm_idnr=' $idnr ;
                          if ( (isset(
                          $b)) && (trim($b)>"")) $sql.=' order by '.$b
                          Gewöhne Dir lieber an Strings in Hochkommas anstatt Gänsefüßchen zu setzen und die Variablen nicht innerhalb des Strings zu plazieren. So sieht man sofort wo im Code Variablen sind und der Interpreter gewinnt zusätzliche Zeit, da Hochkommastrings nicht noch über den Interpreter gejagt werden (es müssen ja keine Strings und Ausdrücke ersetzte werden *g*).

                          Kommentar

                          Lädt...
                          X