Computerhilfen.de Logo
Forum
Tipps
News

Über Spaltentitel sortieren mit PHP

Hallo Zusammen

Ich habe eine Frage bezüglich der Sortierung mit PHP. Ich will Daten aus der Datenbank auslesen und diese dann über den Spaltennamen auf-/abwärts sortieren. Ich habe bereits einige Ansätze gefunden, aber komme jetzt nicht mehr weiter. Bisher habe ich es geschafft nach dem Spaltennamen abwärts zu sortieren, aber wenn ich nochmals darauf klicke passiert nix mehr. Hoffe ihr könnt mir weiterhelfen...


Antworten zu Über Spaltentitel sortieren mit PHP:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Welche Ansätze denn? Wenn du schon Code hast, poste ihn mal. Da kann man ja da ansetzen, bevor hier jetzt jeder seinen Ansatz verfolgt.

Mario 8)

Ok, hier ist mal mein Ansatz...nicht sehr schön formatiert, ist ja auch nur ein Test ;-)

<?php
$strsort = $_GET[sort];
if(empty($strsort)){
    $strsort = "asc";
    $ordnen = "desc";
    $ausgabe = "Aufsteigend";
} else if ($strsort=="asc") {
    $ordnen="desc";
    $ausgabe = "Aufsteigend";
} else if ($strsort=="desc") {
    $ordnen="asc";
    $ausgabe = "Absteigend";
}

?>

<html>
<head>
<title>
</title>
</head>
<body>

<table border="1">

<tr>
 <td><?php echo $strsort; ?></td>
</tr>

 <tr>
  <td width="60px">
   <a href="<?php echo $_SERVER[PHP_SELF]?>?sort=<?php echo $ordnen; ?>&spal=name"><? echo $ausgabe;?></a>
 </td>
 <td width="60px">
   <a href="<?php echo $_SERVER[PHP_SELF]?>?sort=<?php echo $ordnen; ?>&spal=vorname"><? echo $ausgabe;?></a>
 </td>
 <td width="70px">
   <a href="<?php echo $_SERVER[PHP_SELF]?>?sort=<?php echo $ordnen; ?>&spal=telefon"><? echo $ausgabe;?></a>
 </td>
 <td>
 </td>
</tr>

<?php


 $connect = mysql_connect("localhost", "root", "");
 $db = mysql_select_db("test");

 $query = "SELECT * FROM tabelle ORDER BY '$spal' '$strsort'";
 $result = mysql_query($query);

 while($row = mysql_fetch_assoc($result))
 {
      echo "<td width=60px>"."<font color='#D31C01'>".$row['name']."</font></td>";
      echo "<td width=60px>"."<font color='#D31C01'>".$row['vorname']."</font></td>";
      echo "<td width=70px align=right>"."<font color='#D31C01'>".$row['telefon']."</td>";
      echo "</tr>";
      echo "<br />";
 }

 ?>

</table>
</body>
</html>

Also vom Grundaufbau ist es zwar richtig aber etwas umständlich.

$query = "SELECT * FROM tabelle ORDER BY '$spal' $strsort";

Was mir als erstes auffällt, ist dass du  '$strsort' in Einfache Anführungstriche gesetzt hast, was wie ich getestet habe zu einer falschen ausgabe führt.

MFG
BWA

PS: hab deinen Code nicht getest, also kann ich mich auch irren

Danke vielmal, hast recht gehabt! Es lag tatsächlich daran! Aber jetzt hab ich trotzdem ein wenig ein Durcheinander...wesshalb braucht es bei der ersten Variable hochkommas und bei der zweiten nicht??

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hi

die erste variable ist der spaltenname welcher sortiert werden soll.
dieser wird AFAIK nicht in ' gesetzt sondern entweder in ` oder ohne alles.
die zweite variable (DESC bzw ASC) ist ein (ich sag mal) befehl welcher von der datenbank ausgeführt wird und wird deshalb ohne ' bzw " gesetzt

soll also nachher z.B. so aussehen

....FROM `Tabelle` ORDER BY `spalte` DESC

oder

....FROM Tabelle ORDER BY spalte ASC

Gruß Jan

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

IMHO wäre Jans 2. Variante syntaktisch richtig (lt. MySQL-Referenz), also gänzlich ohne Hochkommas.

greez 8)
JoSsiF

Schon, nur es gibt spaltenamen z.B. mit leerzeichen, wo du hochkomma unbedingt benötigst.

MFG
BWA

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Japp, das stimmt wohl. Ist zwar nicht schön und erst recht nicht gebräuchlich, aber MySQL lässt das tatsächlich zu ;)  Und dann braucht man natürlich die Hochkommas :)

greez 8)
JoSsiF


« Suchmaschine (Google)Win XP: pps Dateien im Netz hochladen ??!!?? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!