[php / mysql]Raar probleem met order

Pagina: 1
Acties:

Onderwerpen


  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
Beste mede-tweakers

met deze code
PHP:
1
2
3
4
5
6
7
8
$Database->query("SELECT x.*,f.*
  FROM    $MasterBB[sql_prefix]forums f
  LEFT JOIN
      $MasterBB[sql_prefix]cats x
    ON f.cat = x.id
 WHERE f.visible = '1' AND x.visible= '1'
 Order by f.pos asc, x.pos Desc
");

probeer ik een aantal gegevens uit de database te halen :Z

dan krijg ik het zo te zien:
http://robinaartsma.endoria.net/4/2.JPG

terwijl hij eigenlijk zo zou moeten zijn:
-Cat 1
--Forum1
--Forum3
--Forum4
-Cat2
--Forum2
-Cat3
--Forum5
-Cat4
--Forum6

Maar ik heb die Asc, en Desc al op alle mogelijke manier geprobeerd maar krijg het niet goed :S
Database dump:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE masterbb_forums (
  fid int(10) NOT NULL auto_increment,
  lastpost varchar(255) NOT NULL default '',
  lastpost_id int(10) NOT NULL default '0',
  lastpost_name varchar(255) NOT NULL default '',
  subcat int(10) NOT NULL default '0',
  visible int(2) NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  description varchar(255) NOT NULL default '',
  pos int(5) NOT NULL default '0',
  cat int(5) NOT NULL default '0',
  topics varchar(255) NOT NULL default '0',
  posts varchar(255) NOT NULL default '0',
  pass varchar(255) NOT NULL default '',
  perm_start text NOT NULL,
  perm_read text NOT NULL,
  perm_reply text NOT NULL,
  last_title varchar(255) NOT NULL default '',
  sub_canpost int(1) NOT NULL default '0',
  icon varchar(255) NOT NULL default '',
  moderator varchar(255) NOT NULL default '',
  moderator_id int(10) NOT NULL default '0',
  PRIMARY KEY  (fid)
) TYPE=MyISAM;

en gegevens:
code:
1
2
3
4
5
6
7
8
9
10
11
12
INSERT INTO masterbb_forums VALUES (1, '11/12/02', 1, 'Robin', 0, 
1, 'Forum1', 'Description1', 1, 1, '0', '0', '', '1', '1', '1\r\n', '', 0, '', 'Robin', 1);
INSERT INTO masterbb_forums VALUES (2, '', 0, '', 0, 1, 'Forum2', 'Forum2', 1, 
2, '0', '0', '', '1', '1,2,3', '1', '', 0, '', '', 0);
INSERT INTO masterbb_forums VALUES (3, '', 0, '', 0, 1, 'forum3', 'Description3', 2, 
1, '0', '0', '', '1', '1', '1', '', 0, '', '', 0);
INSERT INTO masterbb_forums VALUES (4, '', 0, '', 0, 1, 'forum4', 'Description4', 3, 
1, '0', '0', '', '1', '1', '1', '', 0, '', '', 0);
INSERT INTO masterbb_forums VALUES (5, '', 0, '', 0, 1, 'forum5', 'Description5', 0, 
3, '0', '0', '', '1', '1', '1', '', 0, '', '', 0);
INSERT INTO masterbb_forums VALUES (6, '', 0, '', 0, 1, 'forum6', 'Description6', 0, 
4, '0', '0', '', '1', '1', '1', '', 0, '', '', 0);

[ Voor 24% gewijzigd door codeweb op 19-12-2002 18:42 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18-09 17:06

gorgi_19

Kruimeltjes zijn weer op :9

dan krijg ik het zo te zien:
http://robinaartsma.endoria.net/4/2.jpg
File not found, melding krijg ik.. :)

[ Voor 9% gewijzigd door gorgi_19 op 19-12-2002 18:41 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
mijn fout, werkt weer ;)

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

code:
1
2
moderator varchar(255) NOT NULL default '',
  moderator_id int(10) NOT NULL default '0',


En mocht een modje een nickchange willen hebben.. wat dan? :P

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
dat vlak kan idd weg, gebruikte hem al niet meer :)

Verwijderd

Ik ben zelf ook bezig met een forumpje...en daar gaat dit met catagorie & subforums wel gewoon goed...
http://217.120.48.160/forum
Het ziet er ongeveer zo uit:
code:
1
2
3
4
5
6
7
8
Haal cat's op
while(mysql_fetch_object){
echo cat naam enzo...
Haal sub's op
while(mysql_fetch_object){
echo subforum naam enzo...
}
}

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
maak je dan niet veel te veel queries?

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
codeweb schreef op 19 December 2002 @ 19:15:
maak je dan niet veel te veel queries?
Dat kost idd veel meer queries... Voor een forum vind ik jouw manier persoonlijk beter.

Maar wat gebeurt er als je die ASC en DESC gewoon weglaat :? Want zo te zien ligt het daar toch aan.

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
dan komt alles door elkaar te staan:

http://robinaartsma.endoria.net/4/5.JPG

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Haha dat schiet idd niet op nee :D

code:
1
2
3
4
5
6
7
8
9
10
11
    SELECT 
        c.*,
        f.*
    FROM
        {$p}categories c
    LEFT JOIN
        {$p}forums f ON c.cat_id = f.cat_id
    GROUP BY
        f.forum_id
    ORDER BY 
        c.cat_order, f.forum_order
Deze query gebruik ik op mijn forum (wie is daar tegenwoordig niet mee bezig :)), om het zelfde te bewerkstelligen. Misschien heb je er wat aan?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

wat dacht je ervan om de twee velden in de order by van je statement te veranderen.
Je wilt eerst op x en daarbinnen op f sorteren. Lijktme handig om dat dan ook in je query te zetten.

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
als k dit probeer:
code:
1
2
3
4
5
6
7
8
9
10
11
SELECT 
        c.*,
        f.*
    FROM
        $MasterBB[sql_prefix]forums f
    LEFT JOIN
        $MasterBB[sql_prefix]cats c ON f.cat = c.id
    GROUP BY
        f.fid
    ORDER BY 
        c.pos, f.pos


blijft het hetzelfde, behalve dat de categorien ook nog allemaal gespiegeld worden...
[edit]
als k trouwens in de order by die f.pos weghaal, is hij net zoals in het begin :X

[ Voor 14% gewijzigd door codeweb op 20-12-2002 10:58 ]


Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Maak van de left join eens een gewone join. Je hebt toch geen forums die niet in een categorie zitten? en waarom heb je de group by er op zitten?

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
als k er een join van maak komt alles door elkaar te staan. Die group by houd nu met de laatste query alles op zn plaats...

Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Ik vrees dat jouw pos velden niet gevuld zijn, of niet correct gevuld zijn. Kijk daar maar eens naar.
Het lijkt zo te zijn dat je GROUP BY voor de sortering zorgt. Dit verklaart ook waarom je order by niets uithaald op de volgorde van je records.

[ Voor 1% gewijzigd door Goodielover op 20-12-2002 12:33 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
alle velde zijn ingevuld :S

Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Geef de inhoud van de tabellen eens, dus de uitvoer van een select * from tabel.
want ik blijf bij mijn vorige post: die group by is niet nodig.

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
complete dump van die 2:



#

# Table structure for table `masterbb_cats`

# CREATE TABLE masterbb_cats (

id int(10) NOT NULL auto_increment,

cid int(10) NOT NULL default '0',

pos int(10) NOT NULL default '0',

visible int(10) NOT NULL default '0',

catname varchar(255) NOT NULL default '',

catdescription varchar(255) NOT NULL default '',

PRIMARY KEY (id)

) TYPE=MyISAM; #

# Dumping data for table `masterbb_cats`

# INSERT INTO masterbb_cats VALUES (1, 1, 1, 1, 'Cat1', 'Description1');

INSERT INTO masterbb_cats VALUES (2, 2, 2, 1, 'cat2', 'Description2');

INSERT INTO masterbb_cats VALUES (3, 3, 3, 1, 'cat3', 'description3');

INSERT INTO masterbb_cats VALUES (4, 4, 4, 1, 'cat4', 'description4');

# -------------------------------------------------------- #

# Table structure for table `masterbb_forums`

# CREATE TABLE masterbb_forums (

fid int(10) NOT NULL auto_increment,

lastpost varchar(255) NOT NULL default '',

lastpost_id int(10) NOT NULL default '0',

lastpost_name varchar(255) NOT NULL default '',

subcat int(10) NOT NULL default '0',

subcat_id int(10) NOT NULL default '0',

visible int(2) NOT NULL default '0',

name varchar(255) NOT NULL default '',

description varchar(255) NOT NULL default '',

pos int(5) NOT NULL default '0',

cat int(5) NOT NULL default '0',

topics varchar(255) NOT NULL default '0',

posts varchar(255) NOT NULL default '0',

pass varchar(255) NOT NULL default '',

perm_start text NOT NULL,

perm_read text NOT NULL,

perm_reply text NOT NULL,

last_title varchar(255) NOT NULL default '',

sub_canpost int(1) NOT NULL default '0',

icon varchar(255) NOT NULL default '',

moderator_id int(10) NOT NULL default '0',

PRIMARY KEY (fid)

) TYPE=MyISAM; #

# Dumping data for table `masterbb_forums`

# INSERT INTO masterbb_forums VALUES (1, '20/12/02 - 15:57', 31, 'Robin', 0, 0, 1, 'Forum1', 'Description1', 1, 1, '1', '0', '', '1', '1', '1\r\n', '', 0, 'blaat2.jpg', 1);

INSERT INTO masterbb_forums VALUES (2, '--', 0, '', 0, 0, 1, 'Forum2', 'Forum2', 1, 2, '0', '0', '', '1', '1,2,3', '1', '', 0, 'images/no-new-posts.jpg', 0);

INSERT INTO masterbb_forums VALUES (3, '20/12/02 - 15:30', 30, 'Robin', 0, 0, 1, 'forum3', 'Description3', 2, 1, '1', '0', '', '1', '1', '1', '', 0, 'blaat2.jpg', 0);

INSERT INTO masterbb_forums VALUES (4, '--', 0, '', 0, 0, 1, 'forum4', 'Description4', 3, 1, '0', '0', '', '1', '1', '1', '', 0, 'blaat2.jpg', 0);

INSERT INTO masterbb_forums VALUES (5, '--', 0, '', 0, 0, 1, 'forum5', 'Description5', 1, 3, '0', '0', '', '1', '1', '1', '', 0, 'images/new-posts.jpg', 0);

INSERT INTO masterbb_forums VALUES (6, '--', 0, '', 0, 0, 1, 'forum6', 'Description6', 1, 4, '0', '0', '', '1', '1', '1', '', 0, 'images/locked-forum.jpg', 0);

Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Onderstaande code moet toch echt werken

SQL:
1
2
3
4
5
6
7
SELECT c.*
      ,f.*
FROM   {$p}categories c
      ,{$p}forums f
WHERE  c.id = f.cat
ORDER BY c.pos
        ,f.pos


PS. Wat is trouwens het verschil tussen de id en de cid bij categorie?

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
id en cid was ff om te proberen...

btw: kan het misschien aan deze code liggen?
code:
1
2
3
4
5
6
7
8
9
foreach ($masterbb as $masterbb)
{
    if ($masterbb['cat'] != $lastCat) {
        echo cat($masterbb);
        $lastCat = $masterbb['cat'];
    }
    if($masterbb['fmod'] == "") {  $masterbb['fmoderator'] = "Geen Moderator"; }
    echo show_forum($masterbb);
}

Acties:
  • 0 Henk 'm!

Verwijderd

ludo schreef op 19 december 2002 @ 19:42:
[...]

Dat kost idd veel meer queries... Voor een forum vind ik jouw manier persoonlijk beter.

Maar wat gebeurt er als je die ASC en DESC gewoon weglaat :? Want zo te zien ligt het daar toch aan.
De manier mag dan wel beter zijn, maar mijn manier werkt wel :P

Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Als de sortering klopt, gaat dit volgens mij ook goed.
Ik ken weliswaar geen PHP, dus exacte syntax kan ik niet controleren, maar qua logica klopt het.
Dat stuk over de moderator doet er zeker niet toe (qua probleem dan)

Heb je mijn query al geprobeerd, want je reageert alleen op mijn PS?
codeweb schreef op 22 December 2002 @ 19:27:
id en cid was ff om te proberen...

btw: kan het misschien aan deze code liggen?
code:
1
2
3
4
5
6
7
8
9
foreach ($masterbb as $masterbb)
{
    if ($masterbb['cat'] != $lastCat) {
        echo cat($masterbb);
        $lastCat = $masterbb['cat'];
    }
    if($masterbb['fmod'] == "") {  $masterbb['fmoderator'] = "Geen Moderator"; }
    echo show_forum($masterbb);
}

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
Verwijderd schreef op 22 December 2002 @ 19:50:
[...]

De manier mag dan wel beter zijn, maar mijn manier werkt wel :P
ooit die van mijn ook ;)

Acties:
  • 0 Henk 'm!

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 16-09 09:38

Goodielover

Only The Best is Good Enough.

Dan denk ik toch dat het in je verwerking van de records zit in in PHP.
Ga dat stuk maar eens tracen en loggen.
Pagina: 1