2012-03-25 8 views
0

Ich habe ein Problem bei der Erlangung einer Reihe von Benutzerbewertungen. Das Szenario ist, ich habe eine Funktion, die zwei Arrays von Zahlen vergleicht und berechnet, wie ähnlich sie Kosinusähnlichkeit verwenden.Erstellen eines Arrays für Benutzer und ihre Bewertungen

Ich möchte dies verwenden, um die Ähnlichkeit der Bewertungen von einem Benutzer zu x Anzahl der anderen Benutzer in der Datenbank zu berechnen, den Benutzer mit den ähnlichsten Bewertungen zu finden.

Die beiden relevanten Tabellen sind Filme und Bewertungen. Zeilen, die für Film relevant sind, sind filmID und Bewertungen haben Zeilen filmID, userID und rating. zum Beispiel:

filmId userID rating 
1  1  3 
1  3  4 
2  1  2 
3  1  2 
2  3  3 

Also für Benutzer 1, würde ich eine Array $ user1 will [3, 2, 2] und für Benutzer $ 3 user3 [4, 3, 0] Beachten Sie, dass in dem Array für Benutzer 3, der Film, den sie NICHT bewertet haben, ist jetzt eine Null. Diese Arrays werden dann an die Funktion übergeben, um die Ähnlichkeit zu berechnen.

Ich weiß nicht, wie man die Benutzerarrays aus den Tabellen, die ich habe, bekomme. Ich habe einen Code geschrieben, bin aber ziemlich ratlos. Bisher habe ich:

Vielen Dank für jede Hilfe, die ich erhalte. Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen.

Antwort

1

Sie sind nicht wirklich etwas mit Ihrer Anfrage zu tun:

while ($similarArray = mysql_fetch_assoc($similarCheck)){ 
    $count++; 
} 

Dieser Code einfach die Abfrageergebnisse Schleifen durch und ordnet jede Zeile auf eine Variable, die dann immer und immer wieder überschrieben wird. Wenn die Schleife beendet wird, wird $ AFFRY einem FALSE-Wert zugewiesen, da mysql_fetch-Aufrufe einen Boolean-Wert false zurückgeben, wenn keine Ergebnisse mehr vorhanden sind.

Sie versuchen dann, diesen booleschen falschen Wert in ANDEREN Schleife als ein Array zu verwenden, die alle Arten von Warnungen werfen wird.

Wahrscheinlich haben Sie so etwas wie dies wollen:

$similarCheck = mysql_query("SELECT * FROM ratings WHERE userID =".$userRow['userID']) or die(mysql_error()); 
$similarArray = array(); 
while($row = mysql_fetch_assoc($similarcheck)) { 
    $similarArray[] = $row['rating']; 
} 
+0

Danke für die Hilfe! – HelloWorld

Verwandte Themen