Opzoek naar een heilige MYSQL Query :p

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick B

Patrick B

08/12/2014 21:50:00
Quote Anchor link
Hey allemaal, ik ben al een tijdje opzoek naar de juiste query voor mijn code.
Ik sta met de zelfde vraag al dagen op meerdere forums en niemand heeft mij kunnen helpen.
Phphulp heeft super veel experts en ik ben benieuwd of iemand het antwoord heeft.
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
<?php
include 'database.php';
$sql = "SELECT COUNT(*) FROM questions";
$result = mysqli_query($connect, $sql);
while ($row=$result->fetch_row()) {
    $count = $row[0];
}

$random = rand(1,$count);
$engine = false;
while ($engine == false) {
    $sql = "SELECT * FROM questions WHERE RID = '$random'";
    $result = mysqli_query($connect, $sql);
    while($row = mysqli_fetch_assoc($result)) {
      $question   = $row["question"];
      $answer     = $row["answer"];
      $status     = $row["status"];
      $connect->close();
    }

    if ($status == 'active') {
        $engine = true;
    }
else {
        $random = rand(1,$count);
    }
}

?>


Dit werkt prima en krijg de juiste gegevens binnen van een random row.
Het probleem is dat ik meer dan 7.000 rows heb in mijn database.

Ik wil al deze "questions" eerlijk aan de beurt zien komen.
Wanneer een gebruiker de vraag juist beantwoord word er een timestamp achtergelaten in de database.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $time = time(); ?>
( 1418058459 )

Mijn vraag is : Hoe kan ik met mijn script mijn tabel sorteren op timestamp ( van oud naar nieuw ) en dan een random row pakken van de top 100 oudste bijvoorbeeld.

Ik hoop dat jullie mij hiermee kunnen helpen, alvast bedankt!@
Gewijzigd op 08/12/2014 21:51:56 door Patrick B
 
PHP hulp

PHP hulp

16/01/2022 10:58:18
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/12/2014 22:14:01
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$random
= rand(0,99);
$sql = "SELECT * FROM questions
    ORDER BY timestamp
    LIMIT 1 OFFSET "
.$random;
?>

Niks heiligs aan ;-)
Gewijzigd op 08/12/2014 22:16:01 door Ger van Steenderen
 
Ozzie PHP

Ozzie PHP

08/12/2014 22:34:38
Quote Anchor link
Hehe ... laat dat maar aan Ger over :-)
 
Patrick B

Patrick B

08/12/2014 22:40:21
Quote Anchor link
Thanks ger! Maar is ORDER DESC of ASC ? ( ik heb de oudste nodig )

1418058459
1418076432
1418097888
of
1418097888
1418076432
1418058459

En nog 1 vraagje ger, kan ik mijn "WHERE" er zo in plaatsen ?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$random
= rand(0,99);
$sql = "SELECT * FROM questions
WHERE status = active
ORDER BY timestamp
LIMIT 1 OFFSET $random"
;
?>


Groeten mysql noob
Gewijzigd op 08/12/2014 22:54:50 door Patrick B
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/12/2014 22:52:09
Quote Anchor link
Hoi Patrick,
ORDER BY heeft als default ASC, dus je hoeft dat niet specifiek te vermelden tenzij je het anders om wilt.

Een WHERE kan je altijd toevoegen voor de order by.

Toevoeging op 08/12/2014 22:54:38:

Je moet er wel even '' omheen zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE status= 'active'
Gewijzigd op 08/12/2014 22:52:29 door Ger van Steenderen
 
Patrick B

Patrick B

08/12/2014 22:57:34
Quote Anchor link
Bedankt Ger voor je reactie!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "SELECT * FROM questions WHERE status='active' ORDER BY time LIMIT 1 OFFSET '$random'";
?>


Ik heb toch DESC nodig, hoe geef ik dit aan ?
Groeten
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/12/2014 23:01:19
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$sql = "SELECT * FROM questions WHERE status='active'
    ORDER BY time DESC  LIMIT 1 OFFSET $random";

Let op LIMIT werkt met getallen niet met strings!
 
Patrick B

Patrick B

08/12/2014 23:04:29
Quote Anchor link
You rock, thank you sir!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/12/2014 00:04:05
Quote Anchor link
Het KISS principe ;-)
 



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.