Avatar billede bmdk Nybegynder
26. august 2003 - 21:37 Der er 10 kommentarer og
1 løsning

Mit script looper forkert.

Hej eksperter.

Jeg sidder med mit php script, og kan ikke helt gennemskue det. Håber der er nogen der kan.

Jeg vil have det til at gøre følgende:

__________________________
|rank: $rank - $rankdisc |
--------------------------
|nick | class | alt.char |
--------------------------

altså, jeg vil have lavet en tabel, hvor alle der har rang 0 kommer i.

en ny tabel hvor alle der  har rang 1 kommer i.

osv. op til rank 9

KODE:

<?

include('inc/dbconn.php');
$queryDB = mysql_query("SELECT rank FROM nidhug_medlemmer ORDER BY id") or die(mysql_error());
while($query = mysql_fetch_array($queryDB)) {
    $rank = $query["rank"];
    $rankdisc = mysql_query("SELECT rankdisc FROM rank WHERE rank='$rank' ORDER BY id DESC") or die(mysql_error());
    $rankdisc = mysql_result($rankdisc,0);
        echo "
            <table cellspacing=\"2\" cellpadding=\"2\" border=\"0\">
                <tr>
                    <td colspan=\"3\">Rank $rank: $rankdisc</td>
                </tr>
            ";

    $sqlmembers = mysql_query("SELECT * FROM nidhug_medlemmer WHERE rank='$rank'") or die(mysql_error());
    while($query = mysql_fetch_array($sqlmembers)) {
        $nick = $query["nick"];
        $class = $query["class"];
        $altchars = $query["altchars"];
    echo "
                <tr>
                    <td>$nick</td>
                    <td>$class</td>
                    <td>$altchars</td>
                </tr>
        ";
    };
    echo "    </table>";
};
?>

Eksempel (her kan i forhåbentlig se hvad jeg prøver på, men den looper det, lige så mange gange som der er poster. Og jeg kan ikke gennemskue det.):
http://www.bo-mortensen.dk/newnidhug/?mode=members
Avatar billede hmortensen Nybegynder
26. august 2003 - 21:43 #1
Kan du ikke bare sortere efter rank, eller forstår jeg ikke hvad du skal bruge det til ?
Avatar billede bmdk Nybegynder
26. august 2003 - 21:48 #2
det tror jeg ikke jeg kan..

jeg har to tabeller:

rank:
id
rank
rankdisc

nidhug_medlemmer:
id
rank
nick
class
altchars

Og jeg skal så have den til:

rank: $rank - $rankdisc
$nick $class $altchars

dvs. en ny tabel for hver gang der er en ny rank. men ikke når der er et nyt nick.

(svært at forklare)
Avatar billede hmortensen Nybegynder
26. august 2003 - 21:53 #3
Prøv noget med GROUP BY i den her:
$sqlmembers = mysql_query("SELECT * FROM nidhug_medlemmer WHERE rank='$rank'") or die(mysql_error());

Måske:
$sqlmembers = mysql_query("SELECT * FROM nidhug_medlemmer GROUP BY rank WHERE rank='$rank'") or die(mysql_error());

Kan ikke lige overskue dine tabeller
Avatar billede bmdk Nybegynder
26. august 2003 - 21:58 #4
det virkede ikke.

Hvad skal du bruge for at kunne overskue det?
Avatar billede Slettet bruger
26. august 2003 - 21:59 #5
Prøv at paste strukturen af dine tabeller. Evt. noget eksempel data.
Avatar billede bmdk Nybegynder
26. august 2003 - 22:03 #6
prøver at lave en illustration:

Tabel: RANK

__________________
|id|rank|rankdisc|
------------------
|1|0|rank0 beskri|
------------------
|2|1|rank1 beskri|
------------------
op til rank 9

Tabel: NIDHUG_MEDLEMMER

--------------------------------------
|id| rank | nick | class | alt. chars |
--------------------------------------
|1 | 0    | anc  | skald | bundlehar  |
--------------------------------------
|2 | 0    | six  | troll | killaJ    |
--------------------------------------
|3 | 1    | sla  | skald | none      |
---------------------------------------

I den dur.

Håber det giver overblik
Avatar billede bmdk Nybegynder
26. august 2003 - 22:08 #7
CREATE TABLE nidhug_medlemmer (
  id int(11) NOT NULL auto_increment,
  rank text NOT NULL,
  nick text NOT NULL,
  class text NOT NULL,
  altchars text NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

#
# Data dump for tabellen `nidhug_medlemmer`
#

INSERT INTO nidhug_medlemmer (id, rank, nick, class, altchars) VALUES (1, '0 ', 'Ancientwar', 'Thane, GM', 'svenson'),
(2, '1', 'erik den grove', 'troll', 'henning den våde'),
(3, '0', 'svenne fra sverige', 'skald', 'none'),
(4, '0', 'killah', 'beserker', 'none');

CREATE TABLE rank (
  id int(11) NOT NULL auto_increment,
  rank text NOT NULL,
  rankdisc text NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

#
# Data dump for tabellen `rank`
#

INSERT INTO rank VALUES (1, '0', 'Elite Krigesherre / Guildmaster - Alliancemaster ');
INSERT INTO rank VALUES (2, '1', 'Valkyrie af Nidhug');

Der er strukturen. håber det hjælper
Avatar billede Slettet bruger
26. august 2003 - 22:29 #8
Dit script kan så laves om til noget i stil med:

<?
require_once('inc/dbconn.php');
$result = mysql_query("SELECT nick, class, altchars, rankdisc, r.rank FROM nidhug_medlemmer m, rank r WHERE m.rank = r.rank ORDER BY m.rank") or die(mysql_error());
$last_rank = NULL;
while($array = mysql_fetch_array($result)) {
    extract($array);
    if($last_rank != $rank) {
        if ($last_rank !== NULL)
            echo "</table>\n";   
        echo "<table cellspacing='2' cellpadding='2' border='0'>\n";
        echo "<tr><td colspan='3'>Rank ".$rank.": ".$rankdisc."</td></tr>\n";
        $last_rank = $rank;                       
    }
    echo "<tr><td>".$nick."</td><td>".$class."</td><td>".$altchars."</td></tr>\n";         
}
if ($last_rank !== NULL)
    echo "</table>";
?>

Læs evt.:

http://www.devshed.com/Server_Side/MySQL/Join/page1.html
http://dk.php.net/require_once
http://dk.php.net/extract
Avatar billede Slettet bruger
26. august 2003 - 22:33 #9
Eventuelt ret

ORDER BY m.rank

til

ORDER BY m.rank, nick

Hvis du også vil sortere på nick (efter du har sorteret på rank)
Avatar billede bmdk Nybegynder
26. august 2003 - 22:35 #10
Det må jeg sige, damn en sql sætning. Jeg har meget at lære endnu.
Må nok igang med at læse det ting du skriver der.

Jeg takker for hjælpen.
Avatar billede Slettet bruger
26. august 2003 - 22:40 #11
Ja en af de store fiduser ved relationelle database systemer (som MySQL) er at man kan joine tabeller og skabe ny relationer. Så jo ført du får lært det jo bedre.

Velbekomme.
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