login  Naam:   Wachtwoord: 
Registreer je!
 Forum

15 Queries tegelijk? (Opgelost)

Offline Bart - 06/07/2006 18:28 (laatste wijziging 06/07/2006 18:29)
Avatar van BartPHP expert Hey iedereen,
ik wil graag uitrekenen hoeveel mensen een bepaalde rang hebben, dit gaat om 15 verschillende rangen.
Als ik dit met een for-lus zou doen, zou dat betekenen dat ik 15 queries moet draaien en het zou anders moeten kunnen..
Weet iemand hoe ik dat kan doen zonder 15 queries te draaien?

  1. <?php
  2. for($i = 1; $i < count($iExp); $i++) // iExp is een array met 15 indexes, en heeft een sleutel "naam" => "hier_de_rang_naam"
  3. {
  4. echo '<tr>
  5. <td class="normal_inhoud">'.$iExp[$i]['naam'].'</td>
  6. </tr>';
  7. }
  8. ?>

14 antwoorden

Gesponsorde links
Offline tomadmiraal - 06/07/2006 18:46 (laatste wijziging 06/07/2006 18:47)
Avatar van tomadmiraal Nieuw lid kun je misschien de tabbellen structuur laten zien?

ik naam aan dat het zoiets moet worden:

SELECT count(*) AS Aantal FROM ranking GROUP BY ranktype

Hiermee "count" hij het aantal rijen met een bepaalde ranktype en sorteerd hij deze op ranktype.


TAD
Offline Bart - 06/07/2006 19:15
Avatar van Bart PHP expert CREATE TABLE `leden` (
`id` int(9) NOT NULL auto_increment,
`gebruikersnaam` varchar(100) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`pass` varchar(32) NOT NULL default '',
`rang` int(1) NOT NULL default '1',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

Maar wat jij deed was niet de bedoeling, ik wil van elk lid (met rang 1 t/m 15) weten hoeveel er zijn in het spel..
Offline Gerard - 06/07/2006 19:32
Avatar van Gerard Ouwe rakker
  1. <?php
  2. $qGetRang = mysql_query("SELECT rang, COUNT(*) AS aantal
  3. FROM leden
  4. GROUP BY rang
  5. ORDER BY rang ASC");
  6.  
  7. while ($aRang = mysql_fetch_array($qGetRang))
  8. {
  9. echo 'Rang '. $aRang['rang'] . ': '. $aRang['aantal'] . ' spelers<br />';
  10. }
  11. ?>
Offline Bart - 06/07/2006 19:35
Avatar van Bart PHP expert Nu laat ie alleen een lijst van de rangen zien die behaald zijn, hij moet ook de rangen laten zien die nog niet behaald zijn: *voorbeeld*

rang1 : 12
rang2 : 9
rang3 : 7
rang4 : 6
rang5 : 4
rang6 : 2
etc.
Offline Gerard - 06/07/2006 19:46
Avatar van Gerard Ouwe rakker
  1. <?php
  2. $qGetRang = mysql_query("SELECT rang, COUNT(*) AS aantal
  3. FROM leden
  4. GROUP BY rang
  5. ORDER BY rang ASC");
  6.  
  7. $iLastRang = 1;
  8.  
  9. while ($aRang = mysql_fetch_array($qGetRang))
  10. {
  11. while( $iLastRang < $aRang['rang'])
  12. {
  13. $iLastRang++;
  14. echo 'Rang '.$iLastRang.': 0 spelers<br />';
  15. }
  16.  
  17. echo 'Rang '. $aRang['rang'] . ': '. $aRang['aantal'] . ' spelers<br />';
  18. $iLastRang++;
  19. }
  20. ?>


Probeer dat eens. Maar dit is dus echt iets wat je zelf kan oplossen want hier zijn zoveel oplossingen voor en het is gewoon een kwestie van logisch denken.
Offline Bart - 06/07/2006 20:30
Avatar van Bart PHP expert Als het een kwestie van logisch nadenken is, waarom heb je het dan fout:p
Rang 1: 5 spelers
Rang 3: 0 spelers
Rang 4: 0 spelers
Rang 4: 1 spelers

Dit krijg ik.
Offline Gerard - 06/07/2006 20:48
Avatar van Gerard Ouwe rakker
Citaat:
Als het een kwestie van logisch nadenken is, waarom heb je het dan fout


Alles komt met trial en error. Daarnast had ik geen zin om alles als een malle te gaan debuggen en die db aan te maken etc. Ik geef je nu een voorzetje, de rest is aan jou. Succes!
Offline Bart - 06/07/2006 22:16 (laatste wijziging 06/07/2006 22:19)
Avatar van Bart PHP expert Als je me een voorzetje geeft, moet je wel een goed voorzetje geven anders heb ik ook niets aan dat voorzetje he..
Offline haytjes - 06/07/2006 22:36
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
Ik dacht dat jij een probleem had die jij opgelost wil zien? Dan mag je de mensen die het nog zien zitten om je te helpen ook bedanken.
Ik heb vlug ook een keer de topic doorgelopen en wat proximus zegt klopt, hij heeft je een aardig voorzetje gegeven, maar als jij beslist om dan de bal naar je eigen keeper te schotten, omdat hij vond dat het geen goed voorzetje was????

Ps: zoekt een keer hoe mysql werkt, want volgens mij ken je daar niet zoveel van. Ook wil je de volgende keer eerst zoeken, want dit soort vragen kunnen we wel bij helpen, maar kan jij evengoed oplossen (hoe ga je anders php leren). Of moet je beslissen om een programmeur in te huren.
Offline Bart - 07/07/2006 08:20
Avatar van Bart PHP expert Oke:|

Bedankt Proximus dat je me geholpen hebt! Van de wal in de sloot :/
Offline haytjes - 07/07/2006 09:13
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
en als je idd goed gekeken had, dan zie je dat de nummering van de bijgekomen getallen (rangen die 0 zijn) 1 te hoog zijn:

  1. <?...
  2. $iLastRang++;
  3. echo 'Rang '.$iLastRang.': 0 spelers<br />';
  4. ...?>

=>
  1. <?...
  2. echo 'Rang '.$iLastRang.': 0 spelers<br />';
  3. $iLastRang++;
  4. ...?>

dus eerst de rang uitprinten en dan pas de rang 1tje omhoog doen. Ik heb het zelf niet uitgetest, maar 'k denk dat het dat is.
Offline Bart - 07/07/2006 09:23
Avatar van Bart PHP expert haytjes en Proximus,
bij deze wil ik mijn excuus aanbieden voor mijn gedrag tegenover jullie.
Jullie probeerden mij te helpen en het enigste dat jullie terugkregen was bot gedrag van mij. Ik hoop dat jullie mijn excuus willen aannemen. Intussen heb ik de oplossing gevonden, 1 iemand moet de hoogste rang hebben zodat hij rekent vanaf 1 t/m de hoogste rang (15). Dit was dus zoals jullie zeiden een kwestie van logisch nadenken.
Voor de nieuwsgierigen, dit wordt dan de code:
  1. <?php
  2. $qGetRang = mysql_query("SELECT rang, COUNT(*) AS aantal
  3. FROM leden
  4. GROUP BY rang
  5. ORDER BY rang ASC");
  6.  
  7. $iLastRang = 1;
  8.  
  9. while ($aRang = mysql_fetch_array($qGetRang))
  10. {
  11. while( $iLastRang < $aRang['rang'])
  12. {
  13. echo 'Rang '.$iLastRang.': 0 spelers<br />';
  14. $iLastRang++;
  15. }
  16.  
  17. echo 'Rang '. $aRang['rang'] . ': '. $aRang['aantal'] . ' spelers<br />';
  18. $iLastRang++;
  19. }
  20. ?>
Offline Thomas - 07/07/2006 10:55 (laatste wijziging 07/07/2006 10:57)
Avatar van Thomas Moderator `rang` int(1) NOT NULL default '1',

Hoe kunnen rangen dan hoger dan 9 zijn? 
(int(1) is dus niet echt terecht, maar INT heeft van zichzelf blijkbaar een bereik dat groot genoeg is, maar houd dit soort dingen wel goed in de gaten, deze kunnen bij een nieuwere MySQL-versie wellicht ineens voor rare problemen gaan zorgen)
Offline Bart - 07/07/2006 13:35
Avatar van Bart PHP expert Whoops, ja idd. Veranderd 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.243s