Moeilijke php vraag - Gemiddelde uitrekenen in mysql
Daar wil ik 2 verschillende databases die ik al heb voor gebruiken.
De eerste database A bestaat uit de gebruikers waar mensen een cijfer aan kunnen geven. De 2e database B bestaat uit de cijfers (reviews)
Mijn website bestaat in zijn geheel uit php. Als een gebruiker pagina geopend wordt, dan worden alle gegevens uit database A gehaald en wordt de pagina gevuld met informatie. Nu moet deze pagina ook het gemiddelde review cijfer ophalen.
Het script moet als volgt gaan werken. Als deze geopend wordt dan word de userid opgehaald uit database A. Deze userid moet matchen met alle userid's uit database B en het gemiddelde uitrekenen van de reviewcijfers die hier aan gekoppeld zijn.
Kan iemand mij beginnetje geven?
Eentje is toch genoeg met daarin de twee tabellen die je nodig hebt.
Gewijzigd op 27/10/2011 22:16:26 door Jorg Heesbeen
Ik heb verschillende records met teksten in een varchar.
Bijv:
1. Goed gedaan, een 8
2. Matig, 7
3. Slecht maar toch een 6
Is het mogelijk om met php het laatste nummer te pakken uit deze records en daar het gemiddelde van te berekenen?
Staat er altijd maar één cijfer per regel?
Toevoeging op 30/10/2011 21:56:58:
Ik kom er gewoon niet uit. Als je normaal gesproken een gemiddelde wilt uitrekenen dan gebruik je AVG met MYSQL maar ik moet eerst het cijfer uit de tekst halen met preg_match o.i.d? En daarna het gemiddelde uitrekenen met PHP lijkt mij?
Heeft iemand een idee? Alle hulp is van harte welkom!
Toevoeging op 30/10/2011 22:32:39:
Ik heb nu de volgende code gemaakt. Ik krijg nu:
8
7
6
Weet iemand hoe ik hier nu het gemiddelde uit krijg?
//CONNECTION MADE
$query = "SELECT review FROM reviews ";
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0){
while ($row = mysql_fetch_assoc($query)){
$review = $row['review'];
$id = $row['id'];
$string = "$review";
preg_match('/\d+/', $string, $number);
$number = $number[0];
echo "
$number
";
}
}
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$query = "SELECT review FROM reviews ";
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0){
while ($row = mysql_fetch_assoc($query)){
$review = $row['review'];
$id = $row['id'];
$string = "$review";
preg_match('/\d+/', $string, $number);
$number = $number[0];
echo $number;
$totaal = $totaal + $number;
}
}
echo $totaal;
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0){
while ($row = mysql_fetch_assoc($query)){
$review = $row['review'];
$id = $row['id'];
$string = "$review";
preg_match('/\d+/', $string, $number);
$number = $number[0];
echo $number;
$totaal = $totaal + $number;
}
}
echo $totaal;
SELECT AVG(CONVERT(SUBSTRING(review, -1)), SIGNED) AS average FROM reviews