Testreviews koppelen aan klanten
Ik heb een review website waar ik voor bepaalde klanten test reviews voor wilt gebruiken, in hun account kunnen zij dit aangeven, dus testreviews = 1 of = 0.
Nu heb ik de volgende tabellen:
Testbeoordelingen (id, mening, beoordeling,score,datum,status).
Gebruikers (voornaam,achternaam,testGebruiker (0 of 1)).
Klanten (id, adres,naam,testreviews (0 of 1)).
Beoordelingen (id,klant_id,reviewer_id, score,mening,datum,status,test_beoordeling_id). (dit is de hoofdtabel).
Wat ik nu doe:
Ik insert de testbeoordelingen in de tabel beoordelingen maar dan is de testbeoordeling dus nog niet gekoppeld aan een bedrijf met hun klantid en een gebruiker die testreviews aan heeft staant..
hieronder mijn code, ik hoop dat iemand mij verder kan helpen om de beoordelingen te kunnen koppelen aan een bedrijf met hun klantid en een gebruiker
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
48
49
50
51
52
53
54
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
53
54
<?php
function checkReviewOfAlGepost($test_beoordeling)
{
$database = new database();
$q ='SELECT * FROM beoordelingen WHERE test_beoordeling = "'.$test_beoordeling.'"';
$result = $database->query($q);
if (mysqli_num_rows($result))
{
//Reviewer heeft dit bedrijf al eens gereviewed!!
// of de review bestaat bij alle klanen die test reviews willen ontvangen..
return 1;
}
else
{
return 0;
}
}
function randomReview()
{
$database = new database();
$q ='SELECT * FROM testbeoordelingen';
$result = $database->query($q);
while ($rows = mysqli_fetch_assoc($result))
{
if (checkReviewOfAlGepost($rows['id']) != 1)
{
$q = 'INSERT INTO beoordelingen(test_beoordeling, mening, beoordeling, score, datum, status) SELECT DISTINCT nb2.id, nb2.mening, nb2.beoordeling, nb2.score, nb2.datum, nb2.status FROM testbeoordelingen nb2 WHERE NOT EXISTS(SELECT test_beoordeling FROM beoordelingen b2 WHERE b2.test_beoordeling = nb2.id)';
$database->query($q);
}
}
}
function randomReviewer() {
$database = new database();
$q ='SELECT id FROM gebruikers WHERE test_gebruiker = 1 ORDER BY RAND()';
$result = $database->query($q);
while ($rows = mysqli_fetch_assoc($result))
{
return $rows['id'];
}
}
echo "randomReview = ".randomReview(). "<br>";
echo "randomRevierId = ".randomReviewer(). "<br>";
echo "test_reviewsID = ".test_reviews()."<br>";
echo 'done';
?>
function checkReviewOfAlGepost($test_beoordeling)
{
$database = new database();
$q ='SELECT * FROM beoordelingen WHERE test_beoordeling = "'.$test_beoordeling.'"';
$result = $database->query($q);
if (mysqli_num_rows($result))
{
//Reviewer heeft dit bedrijf al eens gereviewed!!
// of de review bestaat bij alle klanen die test reviews willen ontvangen..
return 1;
}
else
{
return 0;
}
}
function randomReview()
{
$database = new database();
$q ='SELECT * FROM testbeoordelingen';
$result = $database->query($q);
while ($rows = mysqli_fetch_assoc($result))
{
if (checkReviewOfAlGepost($rows['id']) != 1)
{
$q = 'INSERT INTO beoordelingen(test_beoordeling, mening, beoordeling, score, datum, status) SELECT DISTINCT nb2.id, nb2.mening, nb2.beoordeling, nb2.score, nb2.datum, nb2.status FROM testbeoordelingen nb2 WHERE NOT EXISTS(SELECT test_beoordeling FROM beoordelingen b2 WHERE b2.test_beoordeling = nb2.id)';
$database->query($q);
}
}
}
function randomReviewer() {
$database = new database();
$q ='SELECT id FROM gebruikers WHERE test_gebruiker = 1 ORDER BY RAND()';
$result = $database->query($q);
while ($rows = mysqli_fetch_assoc($result))
{
return $rows['id'];
}
}
echo "randomReview = ".randomReview(). "<br>";
echo "randomRevierId = ".randomReviewer(). "<br>";
echo "test_reviewsID = ".test_reviews()."<br>";
echo 'done';
?>
>> Beoordelingen (id,klant_id,reviewer_id, score,mening,datum,status,test_beoordeling_id)
De waardes klant_id, reviewer_id van de tabel beoordelingen blijven leeg staan als ik de query uitvoer, ik moet er dus voor zorgen dat die een random reviewer_id invoegd en bij klant_id een id invoegd waarvan de klant, testbeoordelingen aan heeft staan. Dat zijn 2 andere tabellen waar ik ze uit moet halen.
Gewijzigd op 15/03/2017 11:00:37 door Ward van der Put
Ik wil het gaan doen met een cronjob met de database en niet vanuit de website zelf met formulieren.
Ik heb eigenlijk maar 1 vraag/opmerking: waarom maak je in elke functie een nieuwe databaseverbinding? Wil je dat je database hara kiri pleegt?
Bij het verlaten van de scope van een functie of methode gaat de refcount naar 0 en zou de destructor zijn ding moeten doen. Bij databaseverbindingen zou ik daar echter inderdaad niet op blindvaren:
Maar goed, dat was uiteraard ook sarcasme van jouw kant. Toch? ;)
De destructie van objecten gaat inderdaad via refcounting, net als bij iedere andere variabele, maar wanneer je new gebruikt wordt er *altijd* een nieuw object gemaakt.
Gewijzigd op 15/03/2017 12:48:07 door Ben van Velzen
oh ik zal het aanpassen Ben, kan verder niemand mij helpen?