Top
Phpuniverset logo
 

INDHOLD

Forside

Script libary

Job annoncer

Tips og Tricks

Konkurrence

Downloads

Dokumenter

PHP bog shop

Forum

Online udviklere


ARTIKLER

CSS

Diverse

E-handel / annoncer

Grafik

Html

Internet

Javascript

Linux

PHP/MySQL

Programmer

Flash

Søgemaskiner

Windows

C / C++


INFO

Information

Annoncering

Kontakt

Forside Forum PHP, mysql ORDER BY DESC/ASC

ORDER BY DESC/ASC


 

ORDER BY DESC/ASC

TucKiksen  

Jeg har lavet denne fil, til at danne en oversigt over alle nyheder.
Man skal kunne sortere nyhederne efter dato(id) eller nyhed(nyhed) - med nyhed menes
hvilken type nyhed, hvilket man har mulighed for at indtaste i min add.php fil (Den der
skriver til databasen).

Men et eller andet går galt. Her er min kode.

På forhånd tak.

Hele oversigt.php:

<?php
$q 
$_GET['q']; // Henter evt. variabler.
$w $_GET['w'];

if (
$q == "") {  // Hvis variablerne er tomme, sætter den dem til en standard
$q = ("id");


if (
$w == "") {
$w = ("DESC");

}
}

?>

<html>
<head>
<meta http-equiv="content-type" content="text-html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="shortcut icon" href="images/favicon.ico" />
<title>Nyheder</title>
</head>
<body>
<form action="oversigt.php" method="get"> // Min form - sender formen til oversigt.php
(sig selv)
<select name="q">
<option <?
if ($q == "nyhed") { // Vælger hvilken valgmulighed, der skal være "selected". Bruger
variablen fra øverst i dokumentet.
echo (
"selected");
?> value="nyhed" name="nyhed">Nyhed</option>
<option <?
if ($q == "id") {
echo (
"selected");
?> value="id" name="id">Dato</option>
</select>
<select name="w">
<option <?
if ($w == "DESC") {
echo (
"selected");
?> selected value="DESC" name="DESC">Dalende</option>
<option <?
if ($w == "ASC") {
echo (
"selected");
?> value="ASC" name="ASC">Stigende</option>
</select>
<input type="submit" value="Sorter">
</form> // Formen sender 2 variabler afsted via. GET til sig selv. 'q' kan have værdien
'nyhed' eller 'id'. Man kan derved vælge om der skal 'ORDER BY' 'nyhed' eller 'id'. 'w'
kan have værdien 'ASC' eller 'DESC'. Man kan derved vælge om oversigten skal læses dalende
eller stigende.

<table>
<?php

if ($w == "") { // Checker om variablen 'w' er tom. Hvis dette er tilfældet, er der sket
en fejl. (Der opstår ingen fejl her)
echo 
"<p class='oversigttext'>Error W</p>";
} else {

if (
$q== "") { // Checker om variablen 'q' er tom. Hvis dette er tilfældet, er der sket en
fejl. (Der opstår ingen fejl her)
echo 
"<p class='oversigttext'>Error Q</p>";
} else {



mysql_connect("localhost""brugernavn""kodeord"); // Connecter til databasen
mysql_select_db("database") or die(mysql_error());  
$hent mysql_query("SELECT * FROM nyheder ORDER BY '%$q%' '%$w%'") or die(mysql_error());
 
// Her trækker den dataene ud fra databasen. Variablen 'q' skulle gerne indeholde værdien
'nyhed' eller 'id'I min tabel (nyheder), er der en række der hedder 'nyhed' og 'id'.
DvsORDER BY id eller nyhedVariablen 'w' skulle gerne indeholde værdien 'ASC' eller
'DESC'.
while(
$vis mysql_fetch_array($hent)) 

?>
<tr>
<td>

<a href="show.php?id=<? echo $vis[id]; ?>">
<p class="oversigttext"><? echo $vis[emne];?></p></a> // Her viser den dataene i links,
der fører videre til show.php
</td>
<td>
<a href="show.php?id=<? echo $vis[id]; ?>">
<p class="oversigttext"><? echo $vis[underemne];?></p></a> 
</td>
<td>
<a href="show.php?id=<? echo $vis[id]; ?>">
<p class="oversigttext"><? echo $vis[type];?></p></a>
</td>
</tr>
<?php }

}
}
 
?>
</table>

</center>
</body>
</html>

Umiddelbart sker der ingen fejl, og man kan se ændringerne oppe i http'en, når jeg skifter
mellem id/nyhed og ASC/DESC.

Men uanset hvad jeg sætter den til, sorterer den alle filerne: ORDER BY id ASC

her er det html output jeg får, uanset hvilken kombination af id/nyhed og ASC/DESC jeg
vælger.

oversigt.php output:


<html>
<head>
<meta http-equiv="content-type" content="text-html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="shortcut icon" href="images/favicon.ico" />
<title>Nyheder</title>
</head>
<body>
<form action="oversigt.php" method="get">
<select name="q">
<option  value="nyhed" name="nyhed">Nyhed</option>
<option selected value="id" name="id">Dato</option>
</select>
<select name="w">
<option selected selected value="DESC" name="DESC">Dalende</option>
<option  value="ASC" name="ASC">Stigende</option>
</select>
<input type="submit" value="Sorter">
</form>

<table>
<tr>
<td>

<a href="show.php?id=4">
<p class="oversigttext">Nyhed 1</p></a>
</td>
<td>
<a href="show.php?id=4">
<p class="oversigttext">Underemne 1</p></a>
</td>
<td>
<a href="show.php?id=4">
<p class="oversigttext">Vigtig Nyhed</p></a>
</td>
</tr>
<tr>
<td>

<a href="show.php?id=3">
<p class="oversigttext">Nyhed 2</p></a>
</td>
<td>
<a href="show.php?id=3">
<p class="oversigttext">Underemne 2</p></a>
</td>
<td>
<a href="show.php?id=3">
<p class="oversigttext">Nyhed</p></a>
</td>
</tr>
<tr>
<td>

<a href="show.php?id=2">
<p class="oversigttext">Nyhed 3</p></a>
</td>
<td>
<a href="show.php?id=2">
<p class="oversigttext">Underemne 3</p></a>
</td>
<td>
<a href="show.php?id=2">
<p class="oversigttext">Information</p></a>
</td>
</tr>
<tr>
<td>

<a href="show.php?id=1">
<p class="oversigttext">Nyhed 4</p></a>
</td>
<td>
<a href="show.php?id=1">
<p class="oversigttext">Underemne 4</p></a>
</td>
<td>
<a href="show.php?id=1">
<p class="oversigttext">Vigtig Nyhed</p></a>
</td>
</tr>
</table>

</center>
</body>
</html>



Dato : 26.06.2008, 15:37

Visninger : 3386

Points : 200

 

Nogen der kan se fejlen?

Eller har jeg brugt en forkert metode?

Tak
//Jonathan


Dato : 26.06.2008, 15:38

Kommentar af : TucKiksen  

 

Nogen der kan se fejlen?

Eller har jeg brugt en forkert metode?

Tak
//Jonathan


Dato : 26.06.2008, 15:39

Kommentar af : TucKiksen  

 

Fejlen må ligge i:

$hent = mysql_query("SELECT * FROM nyheder ORDER BY '%$q%' '%$w%'") or
die(mysql_error());

Prøv dette istedet:

$hent = mysql_query("SELECT * FROM nyheder ORDER BY " . $q . " " . $w . ") or
die(mysql_error());

Og for en god ordens skyld bør du sikre dig at $q enten er "id" eller "nyhed" og lige så
med $w der bør være enten "ASC" eller "DESC", enten via en IF eller endnu bedre via
MYSQL_REAL_ESCAPE_STRING().


Dato : 31.12.2008, 00:17

Kommentar af : Jan Juul  




Login for at skrive et indlæg :



   Brugernavn

Password
 

+ Opret en ny Bruger, Klik her

+ Glemt brugernavn/password

 

Send Artikel/anmeldelse til: phpuni@phpuniverset.dk

Tilbage til oversigt

© Copyright 2000 Propelcom Phpuniverset's politik om personlige oplysninger, artikler & Koder Phpuniverset er optimeret til Mozilla 1024 * 768 Phpuniverset version: 3.0 beta
Webhost : Ignesco.dk

Bund