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

<?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';
?> 
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)
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.
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.
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?
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:


<?php
function a() {
    $a = new B; // refcount=1
}               // refcount=0 => __destruct!
?>
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.
oh ik zal het aanpassen Ben, kan verder niemand mij helpen?

Reageren