o.b.v. extern database gegevens uit eigen db tonen
Ik heb een script gekregen van de basketbal bond om gegevens uit hun database op mijn website te tonen.
Nu heb ik zelf ook een database gemaakt (met zelfde uniek nummer). Op basis hiervan wil ik de 2 tabellen met elkaar koppelen.
script van de basketbal bond:
print "<TD>" . $details['nummer'] ."</TD>";
nu wil ik zelf ook extra <td></td> weergeven; maar dan met wie de zaalwacht is.
dus in feite: ALS . $details['nummer'] . = 200Q dan (zoeken in mijn db naar nr 200Q; en dan resultaat uit kolomK weergeven)
In kolomK staat dan de naam van de zaalwacht.
Kan iemand mij hiermee op weg helpen?
Henrik Maartens op 24/09/2015 17:03:04:
Ik heb een script gekregen van de basketbal bond om gegevens uit hun database op mijn website te tonen.
Wat bedoel je met "script"? heb je directe toegang tot de database of werken hun met een API?
Henrik Maartens op 24/09/2015 17:03:04:
(met zelfde uniek nummer).
Uuhhhmmmm, geen flauw benul wat je hiermee bedoeld.
Henrik Maartens op 24/09/2015 17:03:04:
Op basis hiervan wil ik de 2 tabellen met elkaar koppelen.
Welke twee tabellen? 1 tabel van de database van de basketbal bond en die van jouw?
Henrik Maartens op 24/09/2015 17:03:04:
nu wil ik zelf ook extra <td></td> weergeven; maar dan met wie de zaalwacht is.
dus in feite: ALS . $details['nummer'] . = 200Q dan (zoeken in mijn db naar nr 200Q; en dan resultaat uit kolomK weergeven)
In kolomK staat dan de naam van de zaalwacht.
dus in feite: ALS . $details['nummer'] . = 200Q dan (zoeken in mijn db naar nr 200Q; en dan resultaat uit kolomK weergeven)
In kolomK staat dan de naam van de zaalwacht.
Als je iets wilt zoeken in je database moet dat minstens uit een tabel waarvan we niet eens een naam hebben
Henrik Maartens op 24/09/2015 17:03:04:
Kan iemand mij hiermee op weg helpen?
Met de informatie die je geeft kunnen wij helemaal niets. We moeten weten hoe de database structuur in elkaar zit, wat voor toegang je hebt om de database server van de bond, we weten niet eens of je PDO, mysql of mysqli gebruikt voor je databasebase en we krijgen niet eens een sample code van wat je tot nu toe hebt.
Gewijzigd op 24/09/2015 18:35:23 door Johan K
ik ga proberen wat duidelijker te zijn :)
Ik heb een php script gekregen; met dit php script kun je bepaalde gegevens uit de bond zijn database halen
Begin van dat php script moet je verenigingsnummer invoeren + om welk team het gaat. Middels onderstaande regels haal je dan gegevens uit de database van de bond:
print "<TD>" . $details['nummer'] ."</TD>";
print "<TD>" . $details['datum'] ."</TD>";
print "<TD>" . $details['tijd'] ."</TD>";
print "<TD>" . $details['team'] ."</TD>";
mogelijke output hiervan is:
200Q - 15-09-2015 - 12:00 - Heren Senioren
(hierbij is 200Q een uniek nummer -> deze komt 1x voor; de volgende rij zal 201Q zijn)
Nu wil ik hier naast bovenstaande gegevens (nr / datum / tijd/ team) ook nog een kolom met zaalwacht plaatsen.
In mijn eigen tabel in phpmyadmin (genaamd: wedstrijden) heb ik bijv. het volgende staan
200Q - Pietje
201Q - Klaas
202Q - Henk
nu wil ik dat Pietje wordt gekoppeld aan het voorbeeldje hiervoor; dus:
200Q - 15-09-2015 - 12:00 - Heren Senioren - Pietje
je zal dan het volgende krijgen:
print "<TD>" . $details['nummer'] ."</TD>";
print "<TD>" . $details['datum'] ."</TD>";
print "<TD>" . $details['tijd'] ."</TD>";
print "<TD>" . $details['team'] ."</TD>";
print "<TD>" . $details['zaalwacht'] ."</TD>";
maar: [zaalwacht] is niet bekend bij het script van de bond;
dus zou ik willen dat hij dat uit mijn eigen database haalt.
dit zou dus prima kunnen door te kijken naar het unieke [nummer].
[zoek in tabel 'wedstrijden' naar [nummer] dan resultaat uit kolom [zaalwachter] tonen.
ik heb nu dit:
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
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
<?php
include"db.php";
$nummer = . $details['nummer'] .
$sql = "
SELECT
nummer, zaalwacht
FROM
wedstrijden
WHERE nummer = '$nummer'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['zaalwacht'].'<br />';
}
}
?>
include"db.php";
$nummer = . $details['nummer'] .
$sql = "
SELECT
nummer, zaalwacht
FROM
wedstrijden
WHERE nummer = '$nummer'
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['zaalwacht'].'<br />';
}
}
?>
maar nu wil ik juist dat het 'antwoord' ook in zo'n print terecht komt.
Maar onderstaande werkt (logisch) niet. wat moet ik hier van maken om toch de zaalwachter er achter te plaatsen?
print "<TD>" . $details['zaalwacht'] ."</TD>";
Ik zou het voor het gemak zo doen:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include "db.php";
$nummer = $details['nummer']; // waar komt dit vandaan???
$sql = "
SELECT
nummer, zaalwacht
FROM
wedstrijden
WHERE nummer = '".$nummer."'
";
if(!$res = mysql_query($sql)) {
trigger_error(mysql_error().'<br />In query: '.$sql);
} else {
if(mysql_num_rows($res) == 0) {
echo 'Geen resultaten gevonden';
} else {
// verwacht je meerdere resultaten, zo niet... dan is while overbodig
while($row = mysql_fetch_assoc($res)) {
echo $row['zaalwacht'].'<br />';
}
}
}
?>
include "db.php";
$nummer = $details['nummer']; // waar komt dit vandaan???
$sql = "
SELECT
nummer, zaalwacht
FROM
wedstrijden
WHERE nummer = '".$nummer."'
";
if(!$res = mysql_query($sql)) {
trigger_error(mysql_error().'<br />In query: '.$sql);
} else {
if(mysql_num_rows($res) == 0) {
echo 'Geen resultaten gevonden';
} else {
// verwacht je meerdere resultaten, zo niet... dan is while overbodig
while($row = mysql_fetch_assoc($res)) {
echo $row['zaalwacht'].'<br />';
}
}
}
?>
Let er wel op dat de MySQL-functies over enkele jaren definitief verleden tijd zijn. De vervanger hiervoor is dan MySQLi of PDO.
Gewijzigd op 24/09/2015 19:30:06 door - Ariën -
maar dit gaat toch nooit werken?
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
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
<?php
$plg_ID = 1000;
$cmp_ID = 2843;
$org_ID = 3; // van NBB
$wedstrijd = new Wedstrijd( $org_ID, $cmp_ID );
$wedstrijd->teamid( $plg_ID );
$wedstrijd->seizoen('2015-2016');
list($nr, $naam) = $wedstrijd->competitie();
print "<Table>";
$overzicht = $wedstrijd->overzicht();
$wedstrijd_lijst = $wedstrijd->wedstrijden($cmp_ID);
foreach ($wedstrijd_lijst as $id => $details ) {
print "<TR>";
print "<TD>" . $details['nummer'] ."</TD>";
print "<TD>" . $details['datum'] ."</TD>";
print "<TD>" . $details['tijd'] ."</TD>";
print "<TD>"
include "db.php";
$nummer = $details['nummer']; // waar komt dit vandaan??? --> staat hier boven!
$sql = "
SELECT
nummer, zaalwacht
FROM
wedstrijden
WHERE nummer = '".$nummer."'
";
if(!$res = mysql_query($sql)) {
trigger_error(mysql_error().'<br />In query: '.$sql);
} else {
if(mysql_num_rows($res) == 0) {
echo 'Geen resultaten gevonden';
} else {
// verwacht je meerdere resultaten, zo niet... dan is while overbodig
while($row = mysql_fetch_assoc($res)) {
echo $row['zaalwacht'].'<br />';
}
}
}
"</TD>";
print "</TR>\n";
?>
$plg_ID = 1000;
$cmp_ID = 2843;
$org_ID = 3; // van NBB
$wedstrijd = new Wedstrijd( $org_ID, $cmp_ID );
$wedstrijd->teamid( $plg_ID );
$wedstrijd->seizoen('2015-2016');
list($nr, $naam) = $wedstrijd->competitie();
print "<Table>";
$overzicht = $wedstrijd->overzicht();
$wedstrijd_lijst = $wedstrijd->wedstrijden($cmp_ID);
foreach ($wedstrijd_lijst as $id => $details ) {
print "<TR>";
print "<TD>" . $details['nummer'] ."</TD>";
print "<TD>" . $details['datum'] ."</TD>";
print "<TD>" . $details['tijd'] ."</TD>";
print "<TD>"
include "db.php";
$nummer = $details['nummer']; // waar komt dit vandaan??? --> staat hier boven!
$sql = "
SELECT
nummer, zaalwacht
FROM
wedstrijden
WHERE nummer = '".$nummer."'
";
if(!$res = mysql_query($sql)) {
trigger_error(mysql_error().'<br />In query: '.$sql);
} else {
if(mysql_num_rows($res) == 0) {
echo 'Geen resultaten gevonden';
} else {
// verwacht je meerdere resultaten, zo niet... dan is while overbodig
while($row = mysql_fetch_assoc($res)) {
echo $row['zaalwacht'].'<br />';
}
}
}
"</TD>";
print "</TR>\n";
?>
Gewijzigd op 24/09/2015 19:38:57 door Henrik Maartens
Gewijzigd op 24/09/2015 19:34:08 door - Ariën -
die gegevens haalt hij goed op!
heb voor het gemak maar even het hele stukje er op gezet.
Gewijzigd op 24/09/2015 19:39:19 door Henrik Maartens
Gewijzigd op 24/09/2015 19:39:26 door - Ariën -
nummer | zaalwacht
200q | Piet
201q | Henk
202q | Klaas
203q | Willem
dit heb ik in mijn eigen database. nummer komt overeen met database van de bond (op te halen met . $details['nummer'] .)
Gewijzigd op 24/09/2015 19:41:27 door Henrik Maartens
Gezien je in de foreach-loop zit, dan kan je die data uit $details toch kwijt in de whileloop? Het is dan wel zo dat het ze gerepeteerd worden in de while-iteraties, totdat die verlaten wordt, en de foreach een iteratie verder gaat.
print "<TR>";
print "<TD>" . $details['nummer'] ."</TD>";
print "<TD>" . $details['datum'] ."</TD>";
print "<TD>" . $details['tijd'] ."</TD>";
print "<TD>" HIER MOET DE ZAALWACHT KOMEN.. DEZE STAAN IN MIJN EIGEN DB "</TD>";
Gewijzigd op 24/09/2015 19:47:53 door Henrik Maartens
Ik denk dat het nuttiger is om alles te herschrijven naar een JOIN-query, zodat je de data van twee tabellen kan ophalen aan de hand van één relatie-veld (het nummer misschien)?)
Dus als je voor het gemak beide tabellen kan tonen, en uitleg kan geven wat de Wedstrijd-class precies doet, en daarbij vooral de method/functie 'overzicht', dan kunnen we gerichter advies geven.
$b = $details['nummer'] ;
$resulta = mysql_query("SELECT * FROM wedstrijden WHERE nummer='$b' limit 1");
while ($row=mysql_fetch_array($resulta)){
echo" <TD> $row[zaalwacht]</TD>";
}
Stap ook liever op MySQLi of PDO over.
ik ga me eens verdiepen in mysqli..
zijn dat grote wijzigingen??
Toevoeging op 24/09/2015 21:08:58:
Nog een aanvullende vraag.
ik zie nu dat het nummer niet helemaal uniek is
zo heb je 100q en 100Q
hoe kan ik hier onderscheid in maken?
$b = $details['nummer'] ;
$resulta = mysql_query("SELECT * FROM wedstrijden WHERE nummer='$b' limit 1");
while ($row=mysql_fetch_array($resulta)){
echo" <TD> $row['zaalwacht']</TD>";
}
http://stackoverflow.com/questions/1831105/how-to-do-a-case-sensitive-search-in-where-clause-im-using-sql-server
Dus:
Let op: ik gebruik mysqli_.... zou je ook moeten doen.
Zeker nu je toch bezig bent met aanpassen.
Dit doe je dus bij elke rij een keer.
Deze query staat dus in je while-loop.
Dus:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$resulta = mysqli_query($connectie, "
SELECT zaalwacht
FROM wedstrijden
WHERE BINARY nummer = '".$b."'
LIMIT 1
ORDER BY zaalwacht DESC");
?>
$resulta = mysqli_query($connectie, "
SELECT zaalwacht
FROM wedstrijden
WHERE BINARY nummer = '".$b."'
LIMIT 1
ORDER BY zaalwacht DESC");
?>
Let op: ik gebruik mysqli_.... zou je ook moeten doen.
Zeker nu je toch bezig bent met aanpassen.
Dit doe je dus bij elke rij een keer.
Deze query staat dus in je while-loop.
Gewijzigd op 24/09/2015 22:01:18 door Eddy E
is dat beter dan met het sterretje?
BINARY werkt inderdaad! dank daarvoor
Gewijzigd op 24/09/2015 22:06:56 door Henrik Maartens
* betekend "all", aangezien je alleen zaalwacht wil heeft het geen nut om andere dingen op te vragen.