Avatar billede subcubes Nybegynder
24. oktober 2001 - 21:28 Der er 16 kommentarer og
1 løsning

Order by - uden query ?

Kan man ikke sortere efter ID\'s, uden at gøre det i $queryen ??

Lyder weird ? eller er det en standard funktion jeg ikke kan finde nogen steder ?
Avatar billede webmonster Nybegynder
24. oktober 2001 - 21:30 #1
hvorfor vil du ikke gøre det i din sql-query ?
Avatar billede subcubes Nybegynder
24. oktober 2001 - 21:35 #2
webmonster, det blivern noget værre tam tam, jeg skal sortere ud fra 3 query\'s resultater...

Kan da lige smide noget kode, så det er lettere at se hvad jeg mener...

                    $query = mysql_query(\"SELECT username FROM users LIMIT $start$limit\");


                while($row = mysql_fetch_array($query)) {

                  $user = $row[\"username\"];

                  $webpoint = \"0\";
                  $gfxpoint = \"0\";

                  $webquery = mysql_query(\"SELECT point FROM source WHERE udgiver=\'$user\'\");
                  while($row = mysql_fetch_array($webquery)) {
                  $webpoint += $row[\"point\"];
                  }
               
                  $gfxquery = mysql_query(\"SELECT point FROM pix WHERE udgiver=\'$user\'\");
                  while($row = mysql_fetch_array($gfxquery)) {
                  $gfxpoint += $row[\"point\"];
                  }
               
                  $ialt = $webpoint + $gfxpoint;


De 3 query\'s skal jeg have sorteret, så man kan hente alle de brugere der evt. har flest pix point osv :)
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 21:42 #3
Hmm... Giver dette ikke det, du vil have?
SELECT username, source.point AS webpoint, pix.point AS gfxpoint FROM users LEFT JOIN source ON source.udgiver=username LEFT JOIN pix ON pix.udgiver=username LIMIT $start$limit

/Niels Andersen
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 21:46 #4
Du kan enda gøre sådan her:

SELECT username, source.point AS webpoint, pix.point AS gfxpoint, webpoint+gfkpoint AS ialt FROM users LEFT JOIN source ON source.udgiver=username LEFT JOIN pix ON pix.udgiver=username ORDER BY ial DESC LIMIT $start$limit

...med forbehold for småfejl. :)
Avatar billede subcubes Nybegynder
24. oktober 2001 - 21:48 #5
myplace: sorry, det giver ingenting... :/
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 22:10 #6
Prøv det, og se om ikke det giver det, du vil have:

$query = mysql_query(\"SELECT username, source.point AS webpoint, pix.point AS gfxpoint, webpoint+gfkpoint AS ialt FROM users LEFT JOIN source ON source.udgiver=username LEFT JOIN pix ON pix.udgiver=username ORDER BY ial DESC LIMIT $start$limit
\");
while($row = mysql_fetch_array($query)) {
  echo $row[\'username\'].\' har \'.$row[\'gfxpoint\'].\'+\'.$row[\'webpoint\'].\'=\'.$row[\'ialt\'].\" point.<br>\\n\";
}
Avatar billede subcubes Nybegynder
24. oktober 2001 - 22:14 #7
Det er det helt sikkert, problemet er bare at den siger \"Warning: Supplied argument is not a valid MySQL\" ved den linje hvor while løkken ligger.
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 22:17 #8
$query = ....
echo mysql_error();

- hvad siger den så?
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 22:18 #9
Eller måske er dette bedre for dig lige nu:
$query = mysql_query(...) or die(mysql_error());
Avatar billede subcubes Nybegynder
24. oktober 2001 - 22:22 #10
Unknown column \'webpoint\' in \'field list\'

Ja så kan jeg jo næsten regne det ud :)
Ved bare ikke hvordan det skal rettes :)
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 22:26 #11
SELECT username, source.point AS webpoint, pix.point AS gfxpoint, source.point+pix.point AS ialt FROM users LEFT JOIN source ON source.udgiver=username LEFT JOIN pix ON pix.udgiver=username ORDER BY ial DESC LIMIT $start$limit

Prøv dette i stedet.
Avatar billede subcubes Nybegynder
24. oktober 2001 - 22:30 #12
Nu siger den bare ingen ting... i while løkken spytter den kun \"en\" row ud, men det er tomt ???

Har hævet point satsen til 100 nu... :) det er et krank spm
Avatar billede subcubes Nybegynder
24. oktober 2001 - 22:32 #13
Sorry, den spytter alle de rows ud den skal, den skriver bare ikke noget i dem...
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 22:38 #14
echo \"<pre>\"
while($row = mysql_fetch_array($query)) {
  print_r($row);
}
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 22:39 #15
Min ICQ: 4484067
Avatar billede myplacedk Nybegynder
24. oktober 2001 - 23:23 #16
Jeg havde misforstået opgaven. :)

Vi fandt frem til dette over ICQ:

$query = mysql_query(\"SELECT username FROM users LIMIT $start$limit\");

$users = array();
while($row = mysql_fetch_array($query)) {
    $user = $row[\"username\"];

    $webpoint = \"0\";
    $gfxpoint = \"0\";

    $webquery = mysql_query(\"SELECT sum(point) AS webpoint FROM source WHERE udgiver=\'$user\'\");
    $row2 = mysql_fetch_array($webquery);
    $webpoint = $row2[\"webpoint\"];
               
    $gfxquery = mysql_query(\"SELECT sum(point) AS gfxoint FROM pix WHERE udgiver=\'$user\'\");
    $row2 = mysql_fetch_array($gfxquery);
    $gfxpoint = $row2[\"gfxpoint\"];

    $ialt = $webpoint + $gfxpoint;

    $users[$user][\'webpoint\'] = $webpoint;
    $users[$user][\'gfxpoint\'] = $gfxpoint;
    $users[$user][\'ialt\'] = $ialt;
               
}

function mysort($a, $b) {
    return $a[\'ialt\']-$b[\'ialt\'];
}

uasort ($users, \'mysort\');

foreach($users as $username=>$userdata) {
    echo \"$username: {$userdata[\'ialt\']} point<br>\\n\";
}

/Niels Andersen
Avatar billede subcubes Nybegynder
24. oktober 2001 - 23:24 #17
Så fik vi det til at spille, hvis nogen skulle være interesseret, så kom det til at se sådan her ud... Takker mange gange til myplacedk :)

$query = mysql_query(\"SELECT username FROM users LIMIT $start$limit\");

$users = array();
while($row = mysql_fetch_array($query)) {
    $user = $row[\"username\"];

    $webpoint = \"0\";
    $gfxpoint = \"0\";

    $webquery = mysql_query(\"SELECT sum(point) AS webpoint FROM source WHERE udgiver=\'$user\'\");
    $row2 = mysql_fetch_array($webquery);
    $webpoint = $row2[\"webpoint\"];
               
    $gfxquery = mysql_query(\"SELECT sum(point) AS gfxoint FROM pix WHERE udgiver=\'$user\'\");
    $row2 = mysql_fetch_array($gfxquery);
    $gfxpoint = $row2[\"gfxpoint\"];

    $ialt = $webpoint + $gfxpoint;

    $users[$user][\'webpoint\'] = $webpoint;
    $users[$user][\'gfxpoint\'] = $gfxpoint;
    $users[$user][\'ialt\'] = $ialt;
               
}

function mysort($a, $b) {
    return $a[\'ialt\']-$b[\'ialt\'];
}

uasort ($users, \'mysort\');

foreach($users as $username=>$userdata) {
    echo \"$username: {$userdata[\'ialt\']} point<br>\\n\";
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester