Goedendag,
Aan de titel te zien lijkt het misschien makkelijk maar dat is het niet echt..
Ik probeer een tabel op mijn webpagina te plaatsen met het aantal punten van een groep spelers, een clan.

Ik heb totnutoe deze code en deze laat mooi alle gegevens zien uit de tabel met het aantal punten per clan, maar nu wil ik graag dat de clan met de meeste punten bovenaan komt te staan.

Hier de code totnutoe

<?php
$sql1 = "SELECT clan_naam,clan_id FROM clan";
$res1 = mysql_query($sql1);

echo "<table border='1' style='text-align:center'>";
echo "<tr><td width='150'>Clan naam</td><td width='150'>Score</td></tr>";

while($row = mysql_fetch_object($res1) )
{
	$clan_id = $row->clan_id;
	
	$sql2 = "SELECT user_id FROM clanleden WHERE clan_id = '$clan_id' ";
	$res2 = mysql_query($sql2);
	
	while($row2 = mysql_fetch_object($res2) )
	{
		$sql3 = "SELECT totaal_verdediging,totaal_aanval FROM user WHERE user_id = '$row2->user_id'";
		$res3 = mysql_query($sql3);
		
		$row3 = mysql_fetch_object($res3);
		$totaal_aanval += $row3->totaal_aanval;
		$totaal_verdediging += $row3->totaal_verdediging;
	}
	
	echo "<tr><td>" . $row->clan_naam . "</td><td>" . ($totaal_aanval + $totaal_verdediging) . "</td></tr>";
}

echo "</table>";
?>


Iemand een idee om dit makkelijk te veranderen in een lijstje met de clans op volgorde van aantal punten?

Alvast bedankt.
$sql1 $sql2 $sql3 ..
echo "<table border='0'>"; ..
user_id = '$row2->user_id'"; ..

auwauw

Er is meer met je code mis dan alleen je probleem.

1. Naamgeving , minstens net zo belangrijk als inspringen voor een goed leesbare en vooral goed te debuggen code!
2. Enkel buiten , dubbel binnen. Pas je quotes overal daarop aan.
3. Alle vars BUITEN de quotes. GEEN UITZONDERINGEN!
SELECT .. FROM .. WHERE .. ORDER BY aantal_punten.
wes schreef op 14.07.2008 12:03
$sql1 $sql2 $sql3 ..
echo "<table border='0'>"; ..
user_id = '$row2->user_id'"; ..

auwauw

Er is meer met je code mis dan alleen je probleem.

1. Naamgeving , minstens net zo belangrijk als inspringen voor een goed leesbare en vooral goed te debuggen code!
2. Enkel buiten , dubbel binnen. Pas je quotes overal daarop aan.
3. Alle vars BUITEN de quotes. GEEN UITZONDERINGEN!


ok, maar ik zie geen slechte dingen tussen de naamgeving hooor....
Wat is er mis met
$sql1 $sql2 $sql3 ..
echo "<table border='0'>"; ..
user_id = '$row2->user_id'"; ..

?


SanThe schreef op 14.07.2008 12:07
SELECT .. FROM .. WHERE .. ORDER BY aantal_punten.

Dat bedoel ik dus dat gaat niet...
Er moeten uit 3 verschillende tabellen gegevens worden gehaald.
En dan moet er worden gesorteerd op grootte van de som van totaal_verdediging + totaal_aanval
Ik zeg toch wat er mis mee is.

weet jij wat je in $sql1 doet? Nee! Maak er iets van wat ergens op slaat, $sql_users oid. Wees duidelijk , helpt zo veel bij debuggen.

daarachter, enkele quotes buiten, dubbel binnen. staat er gewoon, lijkt me niet zo lastig...

zelfde als vars buiten de quotes houden...

lees eerst even goed de posts door voordat je gaat blaten
Verder ontbreekt elke vorm van foutafhandeling.
wes schreef op 14.07.2008 13:56
Ik zeg toch wat er mis mee is.

weet jij wat je in $sql1 doet? Nee! Maak er iets van wat ergens op slaat, $sql_users oid. Wees duidelijk , helpt zo veel bij debuggen.

daarachter, enkele quotes buiten, dubbel binnen. staat er gewoon, lijkt me niet zo lastig...

zelfde als vars buiten de quotes houden...

lees eerst even goed de posts door voordat je gaat blaten


Joh leer jij eens een goede beschrijving van het probleem geven ipv woordjes op te sommen.
Beginners hebben niet zoveel ervaring en als mensen dan ook nog eens wartaal uit gaan slaan, dan is het toch niet te begrijpen?
Ik ben hier om een antwoord te krijgen op mijn probleem en niet om mijn code te posten zodat iedereen kan zien hoe onervaren ik ben...


SanThe schreef op 14.07.2008 14:02
Verder ontbreekt elke vorm van foutafhandeling.

Joh als je me echt wilt afzeiken dan nodig ik je graag bij mij thuis uit zodat je de HELE code kan zien!!!

Even ontopic heeft iemand een idee?
Als ik het zo snel zie moet je gebruik gaan maken van INNER JOINS... Hoe zien je tabellen eruit?
Als ik het goed begrijp, heeft elk lid een aantal punten dat je per clan wilt optellen en dan sorteren naar clan met het grootste puntentotaal? Dan moeten we even weten hoe je datamodel eruit ziet. Wat voor tabellen heb je en welke velden zitten daarin?
Oh ok dan.
Dat helpt, dan zal ik even kijken hoe dat werkt.

CREATE TABLE `clan` (
`clan_id` INT(4) NOT NULL AUTO_INCREMENT,
`clan_naam` VARCHAR(30) NOT NULL DEFAULT 'Dit is het profiel van de clan',
`clan_profiel` VARCHAR(500) NOT NULL,
PRIMARY KEY(`clan_id`)
);


CREATE TABLE `clanleden` (
`clanlid_id` INT(15) NOT NULL AUTO_INCREMENT,
`clan_id` INT(4) NOT NULL,
`user_id` INT(12) NOT NULL,
`type` INT(1) NOT NULL,
PRIMARY KEY(`clanlid_id`)
);

CREATE TABLE `user` (
`user_id` INT(12) NOT NULL AUTO_INCREMENT,
`naam` VARCHAR(30) NOT NULL,
`email` VARCHAR(40) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`activatiecode` VARCHAR(30) NOT NULL,
`geactiveerd` INT(1) NOT NULL DEFAULT '0',
`type` INT(1) NOT NULL DEFAULT '1',
`sessie_id` VARCHAR(50) NOT NULL DEFAULT '0',
`gebruikt_ip` VARCHAR(30) NOT NULL DEFAULT '0',
`kliks` INT(10) NOT NULL DEFAULT '0',
`speeltype` INT(1) NOT NULL,
`cashgeld` INT(16) NOT NULL DEFAULT '1500',
`bankgeld` INT(16) NOT NULL DEFAULT '5000',
`totaal_verdediging` INT(16) NOT NULL DEFAULT  '0',
`totaal_aanval` INT(16) NOT NULL DEFAULT '0',
`hitpoints` INT(4) NOT NULL DEFAULT '100',
`laatstonline` INT(10) NOT NULL,
`laatstaanval` INT(10) NOT NULL DEFAULT '0',
`levelaanval` INT(2) NOT NULL DEFAULT '1',
`levelverdediging` INT(2) NOT NULL DEFAULT '1',
`levelrecruit` INT(2) NOT NULL DEFAULT '1',
`levelhitpoints` INT(2) NOT NULL DEFAULT '1',
`levelaanvaldag` INT(2) NOT NULL DEFAULT '1',
`levelhq` INT(2) NOT NULL DEFAULT '1',
PRIMARY KEY(`user_id`)
);


Jan Koehoorn schreef op 14.07.2008 22:43
Als ik het goed begrijp, heeft elk lid een aantal punten dat je per clan wilt optellen en dan sorteren naar clan met het grootste puntentotaal? Dan moeten we even weten hoe je datamodel eruit ziet. Wat voor tabellen heb je en welke velden zitten daarin?


Ja sorry voor mijn misschien foute formulering, maar dit is precies wat ik bedoel
Waarom heb je de tabel 'clanleden' nodig? Je hebt clans en users. Een veld clan_id in de tabel users zou toch voldoende zijn?

Edit: dan zou je namelijk zoiets kunnen doen:

SELECT SUM(punten) AS totaal
FROM users
GROUP BY clan_id
ORDER BY totaal DESC

Reageren