dubbele titels in de reviews?
ik ben bezig met een programma dat automatisch reviews schrijft.
Nu wil ik dat er geen dubbele titels in voor komen.
weet iemand hier een oplossing voor?
Code (php)
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
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
$database = new database();
$q ='SELECT * FROM nepprofielen';
$result = $database->query($q);
while($rows = mysqli_fetch_assoc($result))
{
echo 'Reviewer:'. $rows['voornaam']." ".$rows['achternaam']." ".'Titel: '.randomReview().'<br/>';
}
function checkReviewOfAlGepost($nepReviewId)
{
$database = new database();
$q ='SELECT * FROM reviews WHERE nep_review_id = '.$nepReviewId.'';
$result = $database->query($q);
if (mysqli_num_rows($result))
{
// Reviewer heeft dit bedrijf al eens gereviewed!!
return 1;
}
else
{
return 0;
}
}
function randomReview()
{
$database = new database();
$q ='SELECT * FROM nepreviews ORDER BY RAND()';
$result = $database->query($q);
while ($rows = mysqli_fetch_assoc($result))
{
if (checkReviewOfAlGepost($rows['id']) != 1)
{
return $rows['titel'];
}
else
{
return '<strong>is al gereviewed!</strong>';
}
}
}
$q ='SELECT * FROM nepprofielen';
$result = $database->query($q);
while($rows = mysqli_fetch_assoc($result))
{
echo 'Reviewer:'. $rows['voornaam']." ".$rows['achternaam']." ".'Titel: '.randomReview().'<br/>';
}
function checkReviewOfAlGepost($nepReviewId)
{
$database = new database();
$q ='SELECT * FROM reviews WHERE nep_review_id = '.$nepReviewId.'';
$result = $database->query($q);
if (mysqli_num_rows($result))
{
// Reviewer heeft dit bedrijf al eens gereviewed!!
return 1;
}
else
{
return 0;
}
}
function randomReview()
{
$database = new database();
$q ='SELECT * FROM nepreviews ORDER BY RAND()';
$result = $database->query($q);
while ($rows = mysqli_fetch_assoc($result))
{
if (checkReviewOfAlGepost($rows['id']) != 1)
{
return $rows['titel'];
}
else
{
return '<strong>is al gereviewed!</strong>';
}
}
}
Je controleert in checkReviewOfAlGepost() op een id, en niet op de titel zelf.
als ik op de titel controleer krijg ik ook dubbele
SELECT DISTINCT * FROM reviews WHERE id = 42
in de database zelf staan geen dubbele.
Waarom trouwens geen LIMIT 1 als je het eerste resultaat direct retourneert? Ah, omdat je de eerste niet gereviewde wilt hebben. Maar dit kan in 1 query? Doe een LEFT JOIN op "reviews" waar het (nep_)review_id niet bestaat (gelijk is aan NULL)?
Dit alles is overigens nogal koffiedik kijken zonder een inzage / selectie in de data van beide tabellen...