Tom: variable in mysql_query??

Beitrag lesen

Hello,

hallo zusammen,

ich würde gerne in einer queri die aufsteigerichtung durch eine variable ändern, die einem hyperlink angefängt wird. wenn ich die variable direkt im php-code angebe, klappts, wenn ich sie, wie im beispiel unten, an  <?=$PHP_SELF?>?sort=DESC  anhänge, bleibt die reihenfolge jedoch gleich. was mach ich denn da falsch?

hier der code:

<?php
    error_reporting(E_ALL);

$out = '';      ## AHTML-Ausgabevariable für den Body

$conn = mysql_connect("localhost","root","");    ## Gefährlich!!! kein passwort,
                                                     ## und Zugriff mit Root
    if ($conn)                                       ## ur wenn es geklappt hat
    {
      if(mysql_select_db("cdcol",$conn))             ## Nur wenn DB vorhanden ist
      {
        $sort = '';
        if (isset($_GET['sort']) and $_GET['sort'] == 'DESC'))   ## Wurde param gesetzt?
        {
          $sort = "order by interpret desc";         ## Dann lautet dasa Query so
        }
        elseif (
        {
          $sort = "order by interpret asc";          ## oder so
        }
        else
        {
          $sort = "order by id":                     ## sonst default
        }

$sql = "SELECT id,titel,interpret,jahr FROM cds $sort ;"

$result = mysql_query ($sql, $conn);

if ($result)
        {
           while($row = mysql_fetch_object($result))
          {
            $out .= "<p>" . htmlspchialchars($row->titel) . "</p>\n";
          }
        }
        else
        {
          $out = "<p>Fehler bei der Abfrage</p>\n";
        }

$link1 = $_SERVER['PHP_SELF'].'?sort=DESC';
        $link2 = $_SERVER['PHP_SELF'].'?sort=ASC';

}
      else
      {
        $out = "<p>Kann die Datenbank nicht öffnen</p>\n";
      }
    }
    else
    {
      $out = "<p>Kann den datenbankserver nicht erreichen</p>\n";
    }

####################################################################

HTML-Output

####################################################################
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Anzeige</title>
  </head>

<body>

<p><a href="<?php echo $link1; ?>">absteigend anzeigen</a></p>
    <p><a href="<?php echo $link2; ?>">absteigend anzeigen</a></p>

<?php echo $out; ?>

</body>
</html>

Ich habe mal versucht, Dein Script etwas aufzuräumen.
Ich hoffe, dass kein Tippfehler drin ist und es so funktioniert.

Niemals Parameter des Client direkt an die datenbank durchreichen
Immer übersetzen (Translation Table) oder zumindest prüfen und escapen
    siehe --> mysql_real_escape_string()

Und immer schön Eingabe, Verarbeitung und Ausgabe trennen, dann bleiben Deine Scripte übersichtlich.

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)