Kalender uitlezen
Dit lukt al: via Select en Join
Maar ik zit vast met de presentatie van de resultaten
ik heb nu (als voorbeeld)
Code (php)
1
2
3
4
2
3
4
Datum Band Plaats
6 december Nirvana Brussel
6 december The Doors Antwerpen
8 december Bob Marley Amsterdam
6 december Nirvana Brussel
6 december The Doors Antwerpen
8 december Bob Marley Amsterdam
Ik wil eigenlijk een overzicht verkrijgen per datum.
Hoe kan ik dit het beste aanpakken ? Lus in Array via foreach ?
Weet iemand ergens een studie-voorbeeld staan ?
Gewijzigd op 01/01/1970 01:00:00 door DeZond
Je kan het proberen met GROUP BY, laat anders je query eens zien, dan kunnen we ook kijken wat je precies doet.
Gewijzigd op 01/01/1970 01:00:00 door DeZond
Verder heb je het over presentatie van de gegevens, niet over het ophalen van de gegevens. Je zult gewoon ergens moeten bijhouden met welke datum je bezig bent, zodra deze veranderd, echo je de volgende datum.
pgFrank schreef op 23.10.2007 13:27:
Je zult gewoon ergens moeten bijhouden met welke datum je bezig bent, zodra deze veranderd, echo je de volgende datum.
Weet je ergens een voorbeeld staan waarop ik me kan baseren ?
@blanche: Ik heb het voorbeeld eens bekeken; t'is toch nog niets anders wat ik wil maken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$prev_datum;
while($row = mysql_fetch_assoc($result))
{
if($row['datum'] != $prev_datum)
{
echo $row['datum'].'<br>'
$prev_datum = $row['datum'];
}
// Echo hier de rest van de gegevens...
}
?>
$prev_datum;
while($row = mysql_fetch_assoc($result))
{
if($row['datum'] != $prev_datum)
{
echo $row['datum'].'<br>'
$prev_datum = $row['datum'];
}
// Echo hier de rest van de gegevens...
}
?>
en anders select in select....
bart van der veen schreef op 26.10.2007 12:45:
Nee, ga niet meerdere queries uitvoeren als je het ook met 1 afkunt. Afhankelijke van de grootte van de tabel zou dat neerkomen op tientallen queries en bovendien moet je dan nog steeds blijven controleren of je met een andere dag te maken hebt...en anders select in select....
oke...
Bv. als er 2 concerten geregistreerd staan op dezelfde datum wil ik volgende presentatie:
6 december
Nirvana
Rolling Stones
7 december
Bon Jovi
Met onderstaande code krijg ik enkel maar de eerste band te zien; zoals
6 december
Nirvana
...(Rolling Stones zie ik niet meer)
7 december
Bon Jovi
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php $prev_datum;
while ($row_rsPlaats = mysql_fetch_assoc($rsPlaats)) { ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%"><strong><?php if ($row_rsPlaats['Datum'] != $prev_datum) {
echo strftime('%A, %d %B %Y',strtotime($row_rsPlaats['Datum']));
$prev_datum = $row_rsPlaats['Datum']; ?>
</strong>
</td>
<td width="4%"> </td>
<td width="17%"> </td>
<td width="29%"> </td>
</tr>
<tr>
<td><a href="profiel.php?a=<?php echo $row_rsPlaats['IDArtiest']; ?>"><?php echo $row_rsPlaats['Naam']; ?></a></td>
<td><a href="<?php echo $row_rsPlaats['Myspace']; ?>"><img src="images/myspace_concerts.jpg" alt="" width="17" height="18" border="0" /></a></td>
<td><?php echo $row_rsPlaats['Genre']; ?></td>
<td><?php echo $row_rsPlaats['Taal']; } ?></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<?php } ?>
while ($row_rsPlaats = mysql_fetch_assoc($rsPlaats)) { ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%"><strong><?php if ($row_rsPlaats['Datum'] != $prev_datum) {
echo strftime('%A, %d %B %Y',strtotime($row_rsPlaats['Datum']));
$prev_datum = $row_rsPlaats['Datum']; ?>
</strong>
</td>
<td width="4%"> </td>
<td width="17%"> </td>
<td width="29%"> </td>
</tr>
<tr>
<td><a href="profiel.php?a=<?php echo $row_rsPlaats['IDArtiest']; ?>"><?php echo $row_rsPlaats['Naam']; ?></a></td>
<td><a href="<?php echo $row_rsPlaats['Myspace']; ?>"><img src="images/myspace_concerts.jpg" alt="" width="17" height="18" border="0" /></a></td>
<td><?php echo $row_rsPlaats['Genre']; ?></td>
<td><?php echo $row_rsPlaats['Taal']; } ?></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<?php } ?>
Gewijzigd op 01/01/1970 01:00:00 door DeZond
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql = "
SELECT datum, band
FROM tabelnaam
ORDER BY datum ASC, band ASC
";
?>
$sql = "
SELECT datum, band
FROM tabelnaam
ORDER BY datum ASC, band ASC
";
?>
dan kun je zo fetchen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$datum = '';
while ($row = mysql_fetch_assoc ($res)) {
if ($datum != $row['datum']) {
echo '<p>'.$datum.'</p>';
$datum = $row['datum']
}
echo '<p>'.$band.'</p>';
}
?>
$datum = '';
while ($row = mysql_fetch_assoc ($res)) {
if ($datum != $row['datum']) {
echo '<p>'.$datum.'</p>';
$datum = $row['datum']
}
echo '<p>'.$band.'</p>';
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$datum = '';
while ($row_rsPlaats = mysql_fetch_assoc($rsPlaats)) {
if ($datum != $row_rsPlaats['Datum']) {
echo '<p>'.$row_rsPlaats['Datum'].'</p>';
$datum = $row_rsPlaats['Datum'];
}
echo '<p>'.$row_rsPlaats['Naam'].'</p>';
}
?>
$datum = '';
while ($row_rsPlaats = mysql_fetch_assoc($rsPlaats)) {
if ($datum != $row_rsPlaats['Datum']) {
echo '<p>'.$row_rsPlaats['Datum'].'</p>';
$datum = $row_rsPlaats['Datum'];
}
echo '<p>'.$row_rsPlaats['Naam'].'</p>';
}
?>
Resultaat:
2007-12-06
Winkel
2007-12-07
Natalie Kamers
Gewijzigd op 01/01/1970 01:00:00 door DeZond
Blijkbaar creert dit nog 1 probleem:
De eerste lijn van de array wordt nooit getoond; deze valt steeds weg.
Weet iemand hoe dit komt ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$datum = '';
while ($row_rsPlaats = mysql_fetch_assoc($rsPlaats)) {
if ($datum != $row_rsPlaats['Datum']) {
echo '<strong>'.strftime('%d %B %Y',strtotime($row_rsPlaats['Datum'])).'</strong>';
$datum = $row_rsPlaats['Datum'];
}
echo '<table width="100%"><tr>';
echo '<td width="50%"><a href=profiel.php?a='.$row_rsPlaats['IDArtiest'].'>'.$row_rsPlaats['Naam'].'</a></td>';
echo '<td width="14%"><a href="'.$row_rsPlaats['Myspace'].'"><img src="images/myspace_concerts.jpg" width="17" height="18" border="0"></a></td>';
echo '<td width="17%">'.$row_rsPlaats['Genre'].'</td>';
echo '<td width="19%">'.$row_rsPlaats['Taal'].'</td>';
echo '</tr></table>';
}
?>
$datum = '';
while ($row_rsPlaats = mysql_fetch_assoc($rsPlaats)) {
if ($datum != $row_rsPlaats['Datum']) {
echo '<strong>'.strftime('%d %B %Y',strtotime($row_rsPlaats['Datum'])).'</strong>';
$datum = $row_rsPlaats['Datum'];
}
echo '<table width="100%"><tr>';
echo '<td width="50%"><a href=profiel.php?a='.$row_rsPlaats['IDArtiest'].'>'.$row_rsPlaats['Naam'].'</a></td>';
echo '<td width="14%"><a href="'.$row_rsPlaats['Myspace'].'"><img src="images/myspace_concerts.jpg" width="17" height="18" border="0"></a></td>';
echo '<td width="17%">'.$row_rsPlaats['Genre'].'</td>';
echo '<td width="19%">'.$row_rsPlaats['Taal'].'</td>';
echo '</tr></table>';
}
?>
DeZond schreef op 29.10.2007 13:52:
De eerste lijn van de array wordt nooit getoond;
Heb je die toevallig al opgehaald. Standaard beginnersfout. Geef eens een klein stukje code die er boven staat.
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
<div class="left">
<div class="left_articles">
<h2><a href="#">Gezocht op:</a> <span class="red"><?php echo $_GET['pp']; ?></span></h2>
<p></p>
<?php if ($totalRows_rsPlaats == 0) { // Show if recordset empty ?>
<p>Geen concerten geregistreerd onder deze plaatsnaam.</p>
<?php } // Show if recordset empty ?><p> </p>
<div class="left_articles">
<h2><a href="#">Gezocht op:</a> <span class="red"><?php echo $_GET['pp']; ?></span></h2>
<p></p>
<?php if ($totalRows_rsPlaats == 0) { // Show if recordset empty ?>
<p>Geen concerten geregistreerd onder deze plaatsnaam.</p>
<?php } // Show if recordset empty ?><p> </p>
Dit is de query:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$colname_rsPlaats = "-1";
if (isset($_GET['pp'])) {
$colname_rsPlaats = (get_magic_quotes_gpc()) ? $_GET['pp'] : addslashes($_GET['pp']);
}
mysql_select_db($#####, $####);
$query_rsPlaats = sprintf("SELECT p.Plaats, p.Postcode, c.IDArtiest, c.Datum, g.Genre, t.Taal, a.Naam, a.Myspace FROM tblPlaats AS p LEFT JOIN tblConcert AS c ON p.IDPlaats = c.IDPlaats LEFT JOIN tblArtiest AS a ON a.IDArtiest = c.IDArtiest LEFT JOIN tblGenre AS g ON g.IDGenre = a.IDGenre LEFT JOIN tblTaal AS t ON t.IDTaal = a.IDTaal WHERE Plaats = '$colname_rsPlaats' AND Datum >= now() ORDER BY Datum ASC");
$rsPlaats = mysql_query($query_rsPlaats, $mscc) or die(mysql_error());
$row_rsPlaats = mysql_fetch_assoc($rsPlaats);
$totalRows_rsPlaats = mysql_num_rows($rsPlaats);
?>
$colname_rsPlaats = "-1";
if (isset($_GET['pp'])) {
$colname_rsPlaats = (get_magic_quotes_gpc()) ? $_GET['pp'] : addslashes($_GET['pp']);
}
mysql_select_db($#####, $####);
$query_rsPlaats = sprintf("SELECT p.Plaats, p.Postcode, c.IDArtiest, c.Datum, g.Genre, t.Taal, a.Naam, a.Myspace FROM tblPlaats AS p LEFT JOIN tblConcert AS c ON p.IDPlaats = c.IDPlaats LEFT JOIN tblArtiest AS a ON a.IDArtiest = c.IDArtiest LEFT JOIN tblGenre AS g ON g.IDGenre = a.IDGenre LEFT JOIN tblTaal AS t ON t.IDTaal = a.IDTaal WHERE Plaats = '$colname_rsPlaats' AND Datum >= now() ORDER BY Datum ASC");
$rsPlaats = mysql_query($query_rsPlaats, $mscc) or die(mysql_error());
$row_rsPlaats = mysql_fetch_assoc($rsPlaats);
$totalRows_rsPlaats = mysql_num_rows($rsPlaats);
?>
Gewijzigd op 01/01/1970 01:00:00 door DeZond
Regel 9 in tweede stuk daar haal je al een record op. Regel 9 dus weghalen.
De shit die dreamweaver aanmaakt: idd beginnersfout; kzal 'm nooit meer maken !!
Merci SanThe !
Topic closed !
Graag gedaan.