Doppelte Einträge von MySQL Tabelle in Array Speichern?

jackie05

Erfahrenes Mitglied
Hallo,
ich habe folgendes Problem und zwar möchte ich von MySQL Tabelle alle Werte in extra Array speichern und die Dopplte sollen im selben Array mit gespeichert werden, wie könnte man das ambesten lösen, ohne dabei viele Schleifen zu benutzen?

Code:
$query = "SELECT rating1 FROM tabelle WHERE id=".$Id;
if ($result = $mysqli->query($query)) {
}

z.B. die werte von spalte rating1 möchte ich in extra Array speichern und die Doppelte im selben Array.

Hier sind mal ein Paar beispiel Werte:
Code:
3
5
2.5
5
2.5
3
4

Ich danke euch schonmal für die Hilfe.

Gruss
 
Theoretisch sollte eine Schleife reichen, in dieser könntest du die Werte in das Array schreiben und mittels in_array Prüfen, ob der Wert bereits im Array existiert.

So z.B.:
PHP:
$WERTE = array( );
$DOPPELTE = array( );

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$DB = new PDO($dsn, $user, $password);

$query = "SELECT rating1 FROM tabelle WHERE id=?";

$STH = $DB ->prepare($query);

$STH ->execute(array($Id));

while($ROW = $STH ->fetch( ) ) {
   if( in_array($ROW['rating1'], $WERTE) )
     $DOPPELTE[] = $ROW['rating1'];
  else
     $WERTE[] = $ROW['rating1'];
  
}
 
Vielen Dank erstmal für die schnelle antwort.

Es geht um ein Rating System und diese Rating sind z.B. in der Spalte rating1 gespeichert und möchte alle Werte berechnen wenn id=? ist.
z.B. 7 Leute haben mit 3.5 Bewertet und 2 Leute mit 5, dann müsste ich ((7*3.5)+(2*5))/9 berechnen.
Die anzahl der Bewertungen hole ich ja mit
Code:
$query = "SELECT * FROM tabelle WHERE id=".$id." ORDER BY rating1 ASC";
if ($result = $mysqli->query($query)) {
    $anz = $result->num_rows;
}
dann wäre das z.B. so:
Code:
((7*3.5)+(2*5))/$anz

Dazu muss ich ja die Anzahl der gleichen Werte abfragen und weiter berechnen.
Nur wie könnte man es am einfachsten lösen mit MySQL abfrage in einer Schleife zu lösen, diese berechnung durchzuführen?

Edit: Ich hab das mal so versucht:
Code:
function getRating($id) {
        require ("db_conf.php");
        $query = "SELECT AVG('rating1') FROM tabelle WHERE id=".$id;
        if ($result = $mysqli->query($query)) {
            $z = mysql_fetch_assoc($result);
        }
            return $z;
    }
AVG() sollte eigentlich schon die Durschnittliche Bewertung berechnen, es klappt aber irgendwie nicht.

Gruss
 
Zuletzt bearbeitet:
Sry, hatte mich vertan, ich benutze ja mysqli und habe die ausgabe hiermit ersetzt:
Code:
$z = $result->fetch_assoc();

Nun funktioniert es und trotzdem vielen Dank für die Hilfe.

Gruss
 
Zurück