Sonntag, 28. April 2024, 11:29 UTC+2

Du bist nicht angemeldet.


Lieber Besucher, herzlich willkommen bei: Youngbiker.de Forum - Community & Infos für 125er, Sportler, Enduros, Supermotos, Tourer, Chopper und Cruiser. Falls dies dein erster Besuch auf dieser Seite ist, lese dir bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

TheChris

Administrator

Registrierungsdatum: 1. September 2001

Beiträge: 7 840

Bike: kein 2-rad-scheiss

1

Montag, 23. Oktober 2006, 15:22

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-Quelltext

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?
  • Zum Seitenanfang

Registrierungsdatum: 19. April 2002

Beiträge: 650

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

Wohnort: Regensburg

2

Montag, 23. Oktober 2006, 16:37

Hi,

hier die Lösung:

Quellcode

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?
  • Zum Seitenanfang

TheChris

Administrator

Registrierungsdatum: 1. September 2001

Beiträge: 7 840

Bike: kein 2-rad-scheiss

3

Montag, 6. November 2006, 17:05

@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.
  • Zum Seitenanfang

Registrierungsdatum: 19. April 2002

Beiträge: 650

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

Wohnort: Regensburg

4

Montag, 6. November 2006, 17:40

einfacher ansatz:

PHP-Quelltext

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?
  • Zum Seitenanfang

Thema bewerten