Results willekeurig uit database halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen

Jeroen

02/09/2006 13:15:00
Quote Anchor link
Hallo phper's,

Ik ben bezig met een soort van competitie systeem (net begonnen), en nu vroeg ik me af of het mogelijk is om 16 teams in een mysqltable op te splitsen in 4 poule's. Ik wil dat dit allemaal willekeurig gebeurt.
Mijn mysql ziet er als volgt uit:

| ID | NAAM | POULE |

Dus dat bv. team 1 in poule 3 zit team 2 in poule 1.

Mvg,

Jeroen
 
PHP hulp

PHP hulp

21/11/2024 19:15:30
 
Bart van der veen

bart van der veen

02/09/2006 14:27:00
Quote Anchor link
ja dat kan wel:

je kunt met sql random uitlezen, in een array zetten en 0/3 4/7 8/11 12/15 uitlezen als poels.

sql random:
SELECT column FROM table
ORDER BY RANDOM()
 
Jeroen

Jeroen

02/09/2006 15:18:00
Quote Anchor link
Ik heb nu dit, maar dit doet het niet, iemand een idee wat ik fout doe ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?PHP
    include('database.php'); // database includen
    
    $sql = "SELECT teamname FROM teams ORDER BY RANDOM() LIMIT 4"; // query samenstellen
    $query = mysql_query($sql);  // query uitvoeren
    
    while($r = mysql_fetch_array($query))
    {
// results uit DB halen
        $team = $r['teamname'];
        echo ''.$team.''; // results echoën
    }
?>


de error die ik krijg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\test.php on line 7
 
Mebus  Hackintosh

Mebus Hackintosh

02/09/2006 15:41:00
Quote Anchor link
Gebruik eens een error afhandeling!

Want dan weet ik zeker dat je een sql error had gekregen!

RANDOM moet RAND() zijn

GR. mebus!
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
 
Jeroen

Jeroen

02/09/2006 15:54:00
Quote Anchor link
Sorry, kheb nog niet zo heel veel ervaring met mysql, maar in ieder geval bedankt.

// Jeroen
 
Bo az

Bo az

02/09/2006 16:01:00
Quote Anchor link
Mebus bedoeld met error afhandeling dat je dit:
$query = mysql_query($sql); // query uitvoeren

vervangt door:
$query = mysql_query($sql) or die(mysql_error()); // query uitvoeren
 
Jeroen

Jeroen

02/09/2006 16:22:00
Quote Anchor link
Wat ik nu heb werkt perfect, zonder fouten. Maar ik vroeg me af of het misschien korten kan.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?PHP
    error_reporting(E_ALL);  // error reporting aan
    include('database.php'); // database includen
    
    $sql = "SELECT * FROM teams WHERE poule='-' ORDER BY RAND() LIMIT 4"; // query samenstellen
    $query = mysql_query($sql) or die(mysql_error());  // query uitvoeren + error reporting aan ;)
    
    while ($r = mysql_fetch_array($query))
    {
// results uit DB halen
        $id = $r['teamid'];
        $name = $r['teamname'];
        $sqlp1 = "UPDATE teams SET poule='1' WHERE teamid='$id'"; // query samenstellen
        $queryp1 = mysql_query($sqlp1) or die(mysql_error()); // query uitvoeren + error reporting aan ;)
        echo 'POULE 1: '.$name.',<br>';  // results echoën
    }
    
    $sql = "SELECT * FROM teams WHERE poule='-' ORDER BY RAND() LIMIT 4"; // query samenstellen
    $query = mysql_query($sql) or die(mysql_error());  // query uitvoeren + error reporting aan ;)
    
    while ($r = mysql_fetch_array($query))
    {
// results uit DB halen
        $id = $r['teamid'];
        $name = $r['teamname'];
        $sqlp1 = "UPDATE teams SET poule='2' WHERE teamid='$id'"; // query samenstellen
        $queryp1 = mysql_query($sqlp1) or die(mysql_error()); // query uitvoeren + error reporting aan ;)
        echo 'POULE 2: '.$name.',<br>';  // results echoën
    }
    
    $sql = "SELECT * FROM teams WHERE poule='-' ORDER BY RAND() LIMIT 4"; // query samenstellen
    $query = mysql_query($sql) or die(mysql_error());  // query uitvoeren + error reporting aan ;)
    
    while ($r = mysql_fetch_array($query))
    {
// results uit DB halen
        $id = $r['teamid'];
        $name = $r['teamname'];
        $sqlp1 = "UPDATE teams SET poule='3' WHERE teamid='$id'"; // query samenstellen
        $queryp1 = mysql_query($sqlp1) or die(mysql_error()); // query uitvoeren + error reporting aan ;)
        echo 'POULE 3: '.$name.',<br>';  // results echoën
    }
    
    $sql = "SELECT * FROM teams WHERE poule='-' ORDER BY RAND() LIMIT 4"; // query samenstellen
    $query = mysql_query($sql) or die(mysql_error());  // query uitvoeren + error reporting aan ;)
    
    while ($r = mysql_fetch_array($query))
    {
// results uit DB halen
        $id = $r['teamid'];
        $name = $r['teamname'];
        $sqlp1 = "UPDATE teams SET poule='4' WHERE teamid='$id'"; // query samenstellen
        $queryp1 = mysql_query($sqlp1) or die(mysql_error()); // query uitvoeren + error reporting aan ;)
        echo 'POULE 4: '.$name.',<br>';  // results echoën
    }
?>


// Jeroen
 
Jan Koehoorn

Jan Koehoorn

02/09/2006 16:32:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?PHP
    error_reporting(E_ALL);  // error reporting aan
    include('database.php'); // database includen
    
    $sql = "SELECT * FROM teams WHERE poule='-' ORDER BY RAND() LIMIT 16"; // query samenstellen
    $query = mysql_query($sql) or die(mysql_error());  // query uitvoeren + error reporting aan ;)
    $teller = 0;
    while ($r = mysql_fetch_array($query))
    {
// results uit DB halen
        $teller++;
        $poule = ceil ($counter / 4);
        $id = $r['teamid'];
        $name = $r['teamname'];
        $sqlp1 = "UPDATE teams SET poule=''" . $poule . "'' WHERE teamid='$id'"; // query samenstellen
        $queryp1 = mysql_query($sqlp1) or die(mysql_error()); // query uitvoeren + error reporting aan ;)
        echo 'POULE ' . $poule . ': '.$name.',<br>';  // results echoën
    }
?>

Edit:

foutje verwijderd. Overigens zal het veld 'poule' in je tabel wel een INT zijn, dus eigenlijk zijn die enkele quotes in je UPDATE query niet nodig.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jeroen

Jeroen

02/09/2006 16:59:00
Quote Anchor link
@Jan Koehoorn, bedankt dit is wat makkelijker als zo'n lang script
 
Jan Koehoorn

Jan Koehoorn

02/09/2006 17:05:00
Quote Anchor link
@ Jeroen: graag gedaan. Als je in je script codeblokken tegenkomt die heel erg op elkaar lijken is het bijna altijd mogelijk om het met minder code op te lossen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.