mysql database array random nummer vanuit id in mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Flip Roosen

Flip Roosen

04/12/2015 17:55:52
Quote Anchor link
Vandaag heb ik voor het eerst een PHP script in elkaar geknutseld maar loop tegen een probleem op en hoop hier hulp te kunnen vinden.

Met onderstaande code wil ik van de 233 items in de database 2 willekeurige items laten zien, dit zijn nu altijd 2 opvolgende items. Soms worden geen resultaten getoont, het ID veld is niet altijd oplopend, het kan dus zijn dat id 14 wel bestaat en id 15 niet. Het mooiste zou zijn wanneer er 2 items worden ingeladen met elk een willekeurig id uit de database. Heeft iemand tips hoe ik dit kan aanpakken?

Quote:
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
<?php
$servername
= "localhost";
$username = "-";
$password = "-";
$dbname = "-";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}



$rand = rand(1,230);
$sql = "SELECT transmission_nl, owner, projectname, alias, id, image_01, image_02, image_03, transmission_nl, chassis_nl, shocks_nl, brakes_nl, exhaust_nl, engine_nl, turbo_nl, software_nl, electronics_nl, cooling_nl, wheels_nl, repair_nl, maintenance_nl, remarks_nl FROM car_projects LIMIT 2 OFFSET $rand";
$result = $conn->query($sql);



if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

        
        echo " <h3>". $row["projectname"]. "</h3> ";
      
       echo " <img src=\"images/portfolio/". $row["alias"]. "/article/". $row["alias"]. "-". $row["image_01"]. ".jpg\"/> ";
      
      
    }
}
else {
    echo "0 results";
}




$conn->close();
?>

 
PHP hulp

PHP hulp

15/01/2025 06:53:44
 
Ben van Velzen

Ben van Velzen

04/12/2015 18:09:41
Quote Anchor link
Waarom niet gewoon in de query ORDER BY RAND() met een LIMIT 2?
 
- Ariën  -
Beheerder

- Ariën -

04/12/2015 18:32:07
Quote Anchor link
Mijn ervaring is dat RAND() in MySQL niet echt efficiënt werkt, en niet echt op een goede manier iets random kiest.

Ikzelf ben op deze test uitgekomen waaruit blijkt dat een query als: SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` stukken sneller is i.c.m een LIMIT en OFFSET query.

Ikzelf moet dit nog eens uittesten met +/- 5.000 records, want je eerder genoemde ORDER BY RAND() gaf me erg vaak steeds dezelfde records door, hoe meer voorwaarden ik eraan toevoegde, wat me geen toeval leek ;-)
 



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.