Testreviews koppelen aan klanten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joshua dsa

Joshua dsa

14/03/2017 16:24:15
Quote Anchor link
Beste forumleden,

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)
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
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';
?>
 
PHP hulp

PHP hulp

12/11/2024 21:25:42
 
Ward van der Put
Moderator

Ward van der Put

14/03/2017 16:59:41
Quote Anchor link
De testbeoordeling is automatisch gekoppeld aan data in andere tabellen als je maar de juiste data doorgeeft in de INSERT-query. Je hebt immers al klant_id en reviewer_id in die tabel staan:

>> Beoordelingen (id,klant_id,reviewer_id, score,mening,datum,status,test_beoordeling_id)
 
Joshua dsa

Joshua dsa

15/03/2017 10:35:08
Quote Anchor link
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.
 
Ward van der Put
Moderator

Ward van der Put

15/03/2017 10:57:08
Quote Anchor link
Dan kun je toch de klant_id alvast opslaan in de sessie of een verborgen formulierveld zodra de client begint aan het invullen van het review-formulier? Als iemand iets gaat reviewen, weet je immers welke klant_id daarbij hoort; voorafgaand aan de INSERT voer je dus een SELECT uit voor het vaststellen van de huidige klant_id en die sla je dan op.
Gewijzigd op 15/03/2017 11:00:37 door Ward van der Put
 
Joshua dsa

Joshua dsa

15/03/2017 11:47:05
Quote Anchor link
Ik wil het gaan doen met een cronjob met de database en niet vanuit de website zelf met formulieren.
 
Ben van Velzen

Ben van Velzen

15/03/2017 11:52:31
Quote Anchor link
Ik heb eigenlijk maar 1 vraag/opmerking: waarom maak je in elke functie een nieuwe databaseverbinding? Wil je dat je database hara kiri pleegt?
 
Ward van der Put
Moderator

Ward van der Put

15/03/2017 12:07:14
Quote Anchor link
Hij heeft de databaseverbinding geïmplementeerd als een singleton. :D

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function a() {
    $a = new B; // refcount=1
}               // refcount=0 => __destruct!
?>
 
Ben van Velzen

Ben van Velzen

15/03/2017 12:42:04
Quote Anchor link
Een singleton roep je niet aan met new :D
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
 
Joshua dsa

Joshua dsa

15/03/2017 14:42:33
Quote Anchor link
oh ik zal het aanpassen Ben, kan verder niemand mij helpen?
 



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.