Data groeperen
Hallo fanaten ;),
Ik heb al even een probleem waar ik maar niet uit kom; ik gebruik een script van voetbalripper om wedstrijdschema's op te halen. Deze gegevens zijn voor de komende twee of drie weken. Ik wil deze per datum groeperen in aparte tabellen.
nu is de output dus:
21 nov team 1 - team 2
21 nov team 4 - team 3
28 nov team 5 - team 6
en ik wil graag naar
21 nov
team 1 - team 2
team 4 - team 3
28 nov
team 5 - team 6
Ik weet wel iets van php maar niet zo diepgaand dat ik dit pasklaar kan fixen :/.
Ik heb al even een probleem waar ik maar niet uit kom; ik gebruik een script van voetbalripper om wedstrijdschema's op te halen. Deze gegevens zijn voor de komende twee of drie weken. Ik wil deze per datum groeperen in aparte tabellen.
nu is de output dus:
21 nov team 1 - team 2
21 nov team 4 - team 3
28 nov team 5 - team 6
en ik wil graag naar
21 nov
team 1 - team 2
team 4 - team 3
28 nov
team 5 - team 6
Ik weet wel iets van php maar niet zo diepgaand dat ik dit pasklaar kan fixen :/.
Wat ik zou doen is eerst de unieke datums ophalen:
Vervolgens haal ik de voetbalwedstrijden op per datum
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Haal unieke datums op
$SQLGetDate = "SELECT DISTINCT datum FROM wedstrijden";
$SQLResultDate = $conn->query($SQLGetDate);
// Sla datums op in array
while ($row = mysqli_fetch_array($SQLResultDate)) {
$datums[] = $row["datum"];
}
?>
// Haal unieke datums op
$SQLGetDate = "SELECT DISTINCT datum FROM wedstrijden";
$SQLResultDate = $conn->query($SQLGetDate);
// Sla datums op in array
while ($row = mysqli_fetch_array($SQLResultDate)) {
$datums[] = $row["datum"];
}
?>
Vervolgens haal ik de voetbalwedstrijden op per datum
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Gewijzigd op 23/11/2015 10:53:16 door Danny von Gaal
ik zou nog een order by toevoegen aan de eerste query.
Let wel dat je nu dus 1 query voor de datums nodig hebt en daarna per datum een query uitvoert.
Doe je de ordening in php, dan is het maar 1 query.
Afhankelijk van je netwerk setup en drukte op de site, kan dat schelen in de snelheid.
Let wel dat je nu dus 1 query voor de datums nodig hebt en daarna per datum een query uitvoert.
Doe je de ordening in php, dan is het maar 1 query.
Afhankelijk van je netwerk setup en drukte op de site, kan dat schelen in de snelheid.
Ivo P op 23/11/2015 10:43:36:
ik zou nog een order by toevoegen aan de eerste query.
Het is natuurlijk een voorbeeld en moet worden aangepast naar de exacte omgeving. Je zou natuurlijk ook nog een WHERE moeten toevoegen omdat je denk ik alleen datums in de toekomst wilt laten zien.
Genoeg stof tot nadenken, ik ga hier eens mee aan de slag, bedankt zover!
Ok, blijf steeds de foutmelding Call to a member function query() on a non-object krijgen op
$SQLResultDate = $conn->query($SQLGetDate);
$SQLResultDate = $conn->query($SQLGetDate);
Laat eens meer van je code zien?
Of je query klopt niet, moet er niet ergens nog het FROM-keyword staan in je query?
Of je query klopt niet, moet er niet ergens nog het FROM-keyword staan in je query?
Dat levert geen non-object melding op. Dat gebeurt hooguit als je een non-object probeert te benaderen als object, zoals de melding aangeeft, bijvoorbeeld omdat in dit geval $conn geen mysqli resource is.
Volgens mij niks geks maar goed ik kom er al even niet uit ook :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php @mysql_select_db($database) or die( "Unable to select database");
// $sql="SELECT naam, sportpark FROM clubs WHERE naam LIKE '%" . $name . "%'";
// $sql="SELECT naam FROM clubs WHERE naam LIKE '%" . $name . "%' OR sportpark LIKE '%" . $name ."%'";
//-run the query against the mysql query function
// Haal unieke datums op
$SQLGetDate = "SELECT DISTINCT datum FROM `".$dbprefix."clubprogramma`";
$SQLResultDate = $conn->query($SQLGetDate);
// Sla datums op in array
while ($row = mysqli_fetch_array($SQLResultDate)) {
$datums[] = $row["datum"];
}
?>
// $sql="SELECT naam, sportpark FROM clubs WHERE naam LIKE '%" . $name . "%'";
// $sql="SELECT naam FROM clubs WHERE naam LIKE '%" . $name . "%' OR sportpark LIKE '%" . $name ."%'";
//-run the query against the mysql query function
// Haal unieke datums op
$SQLGetDate = "SELECT DISTINCT datum FROM `".$dbprefix."clubprogramma`";
$SQLResultDate = $conn->query($SQLGetDate);
// Sla datums op in array
while ($row = mysqli_fetch_array($SQLResultDate)) {
$datums[] = $row["datum"];
}
?>
Code (php)
Gewijzigd op 27/11/2015 14:09:29 door Marcel S
En het valt ook niet op dat je mysql en mysqli functies door elkaar aan het gebruiken bent? Laat de code eens zien waar $conn gemaakt wordt.
Queries in een loop... Dat is meestal een indicatie dat er iets niet geoptimaliseerd is.
Je zou ook gewoon kunnen volstaan met één query die alles sorteert op datum. Als je deze wedstrijden op het scherm weergeeft houd je tijdens het doorlopen van de resultaten bij wat de "huidige datum" is.
Indien de datum is veranderd ten opzichte van het vorige opgehaalde record maak je een kopje met een nieuwe datum, anders doe je niets. In beide gevallen geef je uiteraard de wedstrijd weer. Dit kan met het introduceren van een enkele hulpvariabele ($huidigeDatum) en het uitvoeren van een simpele check middels een if-statement in elke stap van de loop.
Hiermee heb je effectief het probleem deels verplaatst naar PHP, en dat scheelt je een hoop queries.
Je zou ook gewoon kunnen volstaan met één query die alles sorteert op datum. Als je deze wedstrijden op het scherm weergeeft houd je tijdens het doorlopen van de resultaten bij wat de "huidige datum" is.
Indien de datum is veranderd ten opzichte van het vorige opgehaalde record maak je een kopje met een nieuwe datum, anders doe je niets. In beide gevallen geef je uiteraard de wedstrijd weer. Dit kan met het introduceren van een enkele hulpvariabele ($huidigeDatum) en het uitvoeren van een simpele check middels een if-statement in elke stap van de loop.
Hiermee heb je effectief het probleem deels verplaatst naar PHP, en dat scheelt je een hoop queries.
Dat was in beginsel ook de bedoeling van deze post. En nee, ik had niet in de gaten dat ik MySQL mixed met MySQLi aan het gebruiken was.
Thomas van den Heuvel op 27/11/2015 15:13:50:
Queries in een loop... Dat is meestal een indicatie dat er iets niet geoptimaliseerd is.
Je zou ook gewoon kunnen volstaan met één query die alles sorteert op datum. Als je deze wedstrijden op het scherm weergeeft houd je tijdens het doorlopen van de resultaten bij wat de "huidige datum" is.
Indien de datum is veranderd ten opzichte van het vorige opgehaalde record maak je een kopje met een nieuwe datum, anders doe je niets. In beide gevallen geef je uiteraard de wedstrijd weer. Dit kan met het introduceren van een enkele hulpvariabele ($huidigeDatum) en het uitvoeren van een simpele check middels een if-statement in elke stap van de loop.
Hiermee heb je effectief het probleem deels verplaatst naar PHP, en dat scheelt je een hoop queries.
Je zou ook gewoon kunnen volstaan met één query die alles sorteert op datum. Als je deze wedstrijden op het scherm weergeeft houd je tijdens het doorlopen van de resultaten bij wat de "huidige datum" is.
Indien de datum is veranderd ten opzichte van het vorige opgehaalde record maak je een kopje met een nieuwe datum, anders doe je niets. In beide gevallen geef je uiteraard de wedstrijd weer. Dit kan met het introduceren van een enkele hulpvariabele ($huidigeDatum) en het uitvoeren van een simpele check middels een if-statement in elke stap van de loop.
Hiermee heb je effectief het probleem deels verplaatst naar PHP, en dat scheelt je een hoop queries.




