Datenbank sortieren [Hilfe]

08/14/2013 14:31 DasPrinzip.#1
Hallo liebe com,

ich bin nach 5 Stunden scripten mal wieder am Ende mit den nerven und finde einfach keine Lösung momentan.

Es geht darum, dass aus der Datenbank jeweils 2 Spalten ausgelesen werden sollen. Einmal Vote und einmal link. Dabei sollen die aber nur die Links dabei sein, bei welchem die Vote Zahl am höchsten ist. Also eine Top5 meine ich damit.

Nun habe ich das getestet und muss feststellen, dass mir die Votezahl richtig nach der Reihenfolge ausgegeben wird, aber der Link Random ausgegeben wird.

Der Code:

PHP Code:
include ("conn.php"); //Verbindung zur Datenbank
    
    
$abfrage mysql_query("SELECT link, vote FROM *Tabelle* ORDER BY 2 DESC");  
    
    
$lines = array();
    while(
$row mysql_fetch_array($abfrage)) {
    
$lines[] = array('id' => $row['id'], 'link' => $row['link'], 'vote' => $row['vote']);

*Tabelle* ist natürlich ersetzt mit der richtigen Tabelle!

Nun die Ausgabe:

PHP Code:
<?php 
    
echo $lines[0]['link'];
    echo 
$lines[0]['vote'];
?>
Bei Link wird mir aber nicht der Link, der zum Vote passt ausgegeben. Sonder irgend ein anderer, der in der Datenbank steht.

Dazu verleite ich kurz zu einem anderen Thema, da das auch wichtig ist und gerade untergeht.
[Only registered and activated users can see links. Click Here To Register...]

Danke!
08/14/2013 15:22 Else#2
Ich sehe gerade weniger das Problem im Code. Denn soweit scheint alles richtig zu sein. Ich tippe jedoch darauf, das die Links ggf. falsch in der Datenbank eingetragen sind? Bitte mal überprüfen.
08/14/2013 15:48 DasPrinzip.#3
Quote:
Originally Posted by Else View Post
Ich sehe gerade weniger das Problem im Code. Denn soweit scheint alles richtig zu sein. Ich tippe jedoch darauf, das die Links ggf. falsch in der Datenbank eingetragen sind? Bitte mal überprüfen.
Nein passt alles, Danke. Cache -.-
08/15/2013 11:32 s7alker2#4
kA was du da baust ... sieht total umständlich aus ;D

$abfrage = mysql_query("SELECT link, vote FROM *Tabelle* ORDER BY 2 DESC");

ergibt für mich weniger sinn ..


du hast ne tabelle mit votes & links .. & willst quasi die 5 links .. wo die votes am höchsten sind ?

dann geht das bei SQl so :

$abfrage = mysql_query("SELECT link, vote FROM *Tabelle* ORDER BY (vote) DESC LIMIT 5");

it limit 5 wirft er dir nur 5 ergebnsise aus ... und du sortierst nach vote
08/20/2013 11:38 mhaendler#5
PHP Code:

include ("conn.php"); //Verbindung zur Datenbank
    
    
$abfrage mysql_query("SELECT link, vote FROM *Tabelle* ORDER BY votes DESC LIMIT 5");  
    
    
$lines = array();
    while(
$row mysql_fetch_assoc($abfrage)) {
    
$lines[] = array('id' => $row['id'], 'link' => $row['link'], 'vote' => $row['vote']);

Ich hab es mal ein bisschen umgeschrieben so sollte es funktionieren. Ich muss s7alker2 vollkommen recht geben :) Allerdings würde ich nicht mysql_fetch_array verwenden sondern viel mehr mysql_fetch_assoc. Dieses gibt dir ein Assoziatives Array zurück :)