Thursday, May 1st 2025, 12:19am UTC+2

You are not logged in.


TheChris

Administrator

Date of registration: Sep 1st 2001

Posts: 7,840

Bike: kein 2-rad-scheiss

1

Monday, October 23rd 2006, 3:22pm

mySQL-Tabelle nach Kriterien ordnen und in HTML-Datei ausgeben

Hallo!

Ich habe folgendes Problem:

Ich habe in einer mysql-Datenbank alle Informationen zu einer Reihe von Veröffentlichungen liegen. Also Nummer, Autor, Titel, Erscheinungsjahr.

Jetzt will ich eine PHP-Datei erstellen, die die Tabelle, je nach Eingabe in der Adresszeile sortiert.

Will man nach Autor sortieren, wird die Datei mit Buecher.php?orderby=Autor aufgerufen, etc.

Das Problem is dass ich mich mit PHP überhaupt nicht auskenn und ich eigentlich auch gar nicht weiß was ich da mach :cool-falk:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
(...)
$orderby $_REQUEST["orderby"]
$result mysql_query("SELECT * FROM $TABLE ORDER by $orderby");
$var mysql_fetch_assoc($result);

echo "<table border=1><td>";
foreach ($var as $spalte) 
    { 
    echo "<td>".$spalte."</td> ";
    }
    

echo "</table>"
?>


Funktioniert aber leider nicht ganz. Es wird nicht die ganze Tabelle angezeigt, sondern nur ein einzelnes Buch. Ist ja logisch, weil die Zeilen nicht in einer Schleife hingeschrieben werden. Ich hab schon alles probiert, aber ich bekomms nich hin.
Jemand ne Hilfestellung parat?
  • Go to the top of the page

Date of registration: Apr 19th 2002

Posts: 650

Bike: Suzuki SV 650 s K3, Auto: Alfa Romeo 156

Location: Regensburg

2

Monday, October 23rd 2006, 4:37pm

Hi,

hier die Lösung:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
(...)
$orderby = $_REQUEST["orderby"];

$result = mysql_query("SELECT * FROM $TABLE ORDER by $orderby");

echo "<table border=1>";

while($var = mysql_fetch_array($result)) {

    echo "<tr><td>".$var['Nummer']."</td> <td>".$var['Autor']."</td> <td>".$var['Titel']."</td> <td>".$var['Erscheinungsjahr']."</td></tr>";
   
}
    

echo "</table>"
?>


Außerdem würde ich noch if/case Abfragen einbauen, um nur gewissen ORDER-BY Variablen zuzulassen (z.b. Autor, Titel, Erscheinungsjahr). Damit die User-Variable nicht direkt in das MySQL Query geschrieben wird = Sicherheitslücke.
do you see why?
  • Go to the top of the page

TheChris

Administrator

Date of registration: Sep 1st 2001

Posts: 7,840

Bike: kein 2-rad-scheiss

3

Monday, November 6th 2006, 5:05pm

@duz:

wie würdest du denn so eine if-anweisung machen?

ich bekomms nich hin.

wenn einfach nur die php-datei aufgerufen wird, soll nach "Band" sortiert werden, andernfalls eben nach dem angeforderten parameter.
  • Go to the top of the page

Date of registration: Apr 19th 2002

Posts: 650

Bike: Suzuki SV 650 s K3, Auto: Alfa Romeo 156

Location: Regensburg

4

Monday, November 6th 2006, 5:40pm

einfacher ansatz:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

$orderby $_REQUEST["orderby"];

if($orderby == "titel") {
      $oby "Titel ASC";
} elseif ($orderby == "nummer") {
      $oby "Nummer DESC";
}  else {
      $oby "Band ASC";
}

$result mysql_query("SELECT * FROM $TABLE ORDER BY $oby ");

echo "<table border=1>";

while($var mysql_fetch_array($result)) {

    echo "<tr><td>".$var['Nummer']."</td> <td>".$var['Autor']."</td> <td>".$var['Titel']."</td> <td>".$var['Erscheinungsjahr']."</td></tr>";
   
}
    

echo "</table>"
do you see why?
  • Go to the top of the page

Rate this thread