Dezelfde namen uitlezen
Met de volgende code lees ik wedstrijden van dit jaar uit mijn database.En geef ik ze weer in een tabel
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?
$i = 0;
$maandarray=array('januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');
$datumarray=array();
if(!isset($_GET['jaar'])){$_GET['jaar'] = date("Y");}
$jaar = intval($_GET['jaar']);
$jaar2 = $jaar + 1;
$query =
"SELECT datum, naam, lengte, start FROM wedstrijden
WHERE YEAR(datum) = YEAR(CURDATE())
ORDER BY datum ASC";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
$datum=$row['datum'];
$datum2=explode("-",$datum);
$NLdate=$datum2[2]."-".$datum2[1]."-".$datum2[0];
if(in_array($datum2[1],$datumarray)){
}
else{
if($datum2[1]<10){
$curmonth=substr($datum2[1],-1);
}
else{
$curmonth=$datum2[1];
}
$curmonth=$curmonth-1;
?>
<tr>
<td colspan="5" class="maand">
<center><b><? echo $maandarray[$curmonth]; ?></b></center>
</td>
</tr>
<?
}
if($i%2){
$kleur="#D5297D";
}
else{
$kleur="#F8F8F8";
}?>
<tr bgcolor='<?php echo $kleur; ?>'>
<td class="datum1"><? echo $NLdate ?></td>
<td class="naam1"><? echo $row['naam'] ?></td>
<td class="lengte1"><? echo $row['lengte'] ?>km</td>
<td><? echo $row['start'] ?></td>
</tr>
<?
$datumarray[]=$datum2[1];
$i++;
}
?>
</table>
$i = 0;
$maandarray=array('januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');
$datumarray=array();
if(!isset($_GET['jaar'])){$_GET['jaar'] = date("Y");}
$jaar = intval($_GET['jaar']);
$jaar2 = $jaar + 1;
$query =
"SELECT datum, naam, lengte, start FROM wedstrijden
WHERE YEAR(datum) = YEAR(CURDATE())
ORDER BY datum ASC";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
$datum=$row['datum'];
$datum2=explode("-",$datum);
$NLdate=$datum2[2]."-".$datum2[1]."-".$datum2[0];
if(in_array($datum2[1],$datumarray)){
}
else{
if($datum2[1]<10){
$curmonth=substr($datum2[1],-1);
}
else{
$curmonth=$datum2[1];
}
$curmonth=$curmonth-1;
?>
<tr>
<td colspan="5" class="maand">
<center><b><? echo $maandarray[$curmonth]; ?></b></center>
</td>
</tr>
<?
}
if($i%2){
$kleur="#D5297D";
}
else{
$kleur="#F8F8F8";
}?>
<tr bgcolor='<?php echo $kleur; ?>'>
<td class="datum1"><? echo $NLdate ?></td>
<td class="naam1"><? echo $row['naam'] ?></td>
<td class="lengte1"><? echo $row['lengte'] ?>km</td>
<td><? echo $row['start'] ?></td>
</tr>
<?
$datumarray[]=$datum2[1];
$i++;
}
?>
</table>
Nu zou ik willen als hij de naam van de wedstrijd uitleest meteen een link aanmaakt ( naar een andere pagina )waar een soort historie over de vorige wedstrijden die daar gereden zijn word geplaatst. Dus alle uitslagen die diegene daar gereden heeft.
Dus als voorbeeld. Diegene heeft 4 keer de ster van zwolle gereden ( 2001, 2003, 2007 en 2010 )Nu wil ik dat ik in mijn programma/uitslagen op de naam van de wedstrijd klik en daarmee een overzicht krijg van die wedstrijden.
Kan iemand mij op weg helpen?
Wat die link betreft, doe iets zoals dit:
In die pagina spelerprofiel.php handel je de gegevens over die speler af
Er staat bijvoorbeeld vanaf 2007 ieder jaar De Ster van zwolle in.
Nu wil ik als ik in het wedstrijdprogramma op de naam van de wedstrijd klik(de ster van zwolle in dit geval) dat er een pagina opent met alleen maar de ster van zwolle ( in dit geval 4 maal ) en daarbij de uitslag en eventueel andere info.
Ik heb nu deze code bij de link staan.
<td class="naam1"><a href="historie.php?id="></a></td>
Alleen het uitlezen op die andere pagina lukt me nog even niet.
Ik dacht dat het met deze code zou moeten lukken.
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
<?
if (isset($_GET['naam']) && ctype_digit($_GET['naam'])){
$sql =
"SELECT id, datum, naam, lengte FROM wedstrijden WHERE naam=". (int) $_GET['naam'] ."
ORDER BY datum ASC";}
else {
$sql=
"SELECT id, datum, naam, lengte FROM wedstrijden
ORDER BY datum ASC";}
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
?>
if (isset($_GET['naam']) && ctype_digit($_GET['naam'])){
$sql =
"SELECT id, datum, naam, lengte FROM wedstrijden WHERE naam=". (int) $_GET['naam'] ."
ORDER BY datum ASC";}
else {
$sql=
"SELECT id, datum, naam, lengte FROM wedstrijden
ORDER BY datum ASC";}
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
?>
Maar dan geeft hij niks weer
Roland Braat op 07/03/2011 20:21:59:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if (isset($_GET['naam']) && ctype_digit($_GET['naam'])){
$sql =
"SELECT id, datum, naam, lengte FROM wedstrijden WHERE naam=". (int) $_GET['naam'] ."
ORDER BY datum ASC";
}
?>
if (isset($_GET['naam']) && ctype_digit($_GET['naam'])){
$sql =
"SELECT id, datum, naam, lengte FROM wedstrijden WHERE naam=". (int) $_GET['naam'] ."
ORDER BY datum ASC";
}
?>
Begin al eens met
&& ctype_digit($_GET['naam'])
te verwijderen.
Over het algemeen bestaat een naam niet enkel uit cijfers.
Dito voor
(int) $_GET['naam']
Die (int) moet weg.
Of is dat veld naam echt numeriek?
Gewijzigd op 08/03/2011 12:57:23 door Kris Peeters
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
<?php
{
$sql =
"SELECT id, datum, naam, lengte FROM wedstrijden WHERE naam = '". mysql_real_escape_string($_GET['naam']) ."'
ORDER BY datum ASC";}
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
?>
<tr>
<td><? echo ($row['naam']) ?></td>
</tr>
</table>
{
$sql =
"SELECT id, datum, naam, lengte FROM wedstrijden WHERE naam = '". mysql_real_escape_string($_GET['naam']) ."'
ORDER BY datum ASC";}
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
?>
<tr>
<td><? echo ($row['naam']) ?></td>
</tr>
</table>
Alleen deze regel werkt niet
'or die' is geen foutafhandeling. Toon nooit de php / mysql fout aan de gebruiker. Wat werkt er dan niet?
Hij geeft daar de naam van de wedstrijd niet weer
Het is mijn bedoeling dat hij alle wedstrijden met die naam laat zien.
Ik begrijp je niet goed.. Je kan de naam toch oproepen met $_GET['naam']?
Ik knutsel morgen weer verder ga nu plat.
Maar nog een klein vraagje:
Als ik bijvoorbeeld de uitslagen van de wedstrijdnaam Schijndel opvraag krijg ik alleen de wedstrijden van schijndel maar als de wedstrijd bijvoorbeeld als Ronde van Schijndel in de database staat krijg ik die niet bij het lijstje.Is er ook nog een aanpassing zodat ik die er dan ook bij krijg?
Hebben jullie nog tips aanmerkingen aan deze code?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php include('includes/config.php');?>
<table>
<?php
$sql =
"SELECT datum, naam, lengte, uitslag FROM wedstrijden WHERE naam = '". mysql_real_escape_string($_GET['naam']) ."'
ORDER BY datum ASC";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
$datum=$row['datum'];
$datum2=explode("-",$datum);
$NLdate=$datum2[2]."-".$datum2[1]."-".$datum2[0];
?>
<tr>
<td><? echo $NLdate ?></td>
<td><? echo $_GET['naam']; ?></td>
<td><? echo $row['uitslag']; ?></td>
</tr>
<?php
$datumarray[]=$datum2[1];
}
?>
</table>
<table>
<?php
$sql =
"SELECT datum, naam, lengte, uitslag FROM wedstrijden WHERE naam = '". mysql_real_escape_string($_GET['naam']) ."'
ORDER BY datum ASC";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
$datum=$row['datum'];
$datum2=explode("-",$datum);
$NLdate=$datum2[2]."-".$datum2[1]."-".$datum2[0];
?>
<tr>
<td><? echo $NLdate ?></td>
<td><? echo $_GET['naam']; ?></td>
<td><? echo $row['uitslag']; ?></td>
</tr>
<?php
$datumarray[]=$datum2[1];
}
?>
</table>
Gewijzigd op 12/03/2011 13:14:01 door Roland Braat
En je code "belabbert" slecht.
Je zit met php te prutsen met php om een nl date format te verkrijgen terwijl je dit ook al kunt doen in je query zelf. Dus nog meer reden om je in SQL te verdiepen.
Gebruik geen or die
Beveilig je gegevens voor je ze publiceert: $_GET['naam'] op regel 18.
Gewijzigd op 12/03/2011 13:46:07 door Obelix Idefix
Hoe kan ik die $_GET['naam'] op regel 18 het beste beveiligen dan?