o.b.v. extern database gegevens uit eigen db tonen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henrik Maartens

Henrik Maartens

24/09/2015 17:03:04
Quote Anchor link
Hoi,

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?
 
PHP hulp

PHP hulp

16/11/2024 08:42:25
 
Johan K

Johan K

24/09/2015 18:34:07
Quote Anchor link
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.

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
 
Henrik Maartens

Henrik Maartens

24/09/2015 18:58:55
Quote Anchor link
Johan,

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.
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 19:16:18
Quote Anchor link
Dan kom je uit op een simpele query zoals:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT nummer, datum, tijd, team, zaalwacht FROM wedstrijden WHERE nummer = '200Q'

Het gaat dus om één tabel?
Gewijzigd op 24/09/2015 19:19:31 door - Ariën -
 
Henrik Maartens

Henrik Maartens

24/09/2015 19:22:22
Quote Anchor link
datum, tijd en team hoeft dan niet geselecteerd te worden; die staan niet in mijn eigen database.



ik heb nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 />';
    }
}

?>


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>";
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 19:29:42
Quote Anchor link
Waar komt $details['nummer'] vandaan (en die puntjes horen er niet).

Ik zou het voor het gemak zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';
        }
    }
}

?>


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 -
 
Henrik Maartens

Henrik Maartens

24/09/2015 19:32:26
Quote Anchor link
details[nummer] komt uit het script van de bond. (zie bovenstaande posts van mij)

maar dit gaat toch nooit werken?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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";
?>
Gewijzigd op 24/09/2015 19:38:57 door Henrik Maartens
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 19:33:57
Quote Anchor link
Nee, want $details bestaat niet. Want waar komt deze vandaan?
Gewijzigd op 24/09/2015 19:34:08 door - Ariën -
 
Henrik Maartens

Henrik Maartens

24/09/2015 19:35:34
Quote Anchor link
uit script van de bond...
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
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 19:39:05
Quote Anchor link
Laat anders eens een duidelijk zien hoe je tabellen er uit zien, in een schema of uit een SQL-dump. Want als er een relatie tussen beiden is, dan kan je prima met een JOIN uit te voeten.
Gewijzigd op 24/09/2015 19:39:26 door - Ariën -
 
Henrik Maartens

Henrik Maartens

24/09/2015 19:41:07
Quote Anchor link
-------- ----------
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
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 19:45:42
Quote Anchor link
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.
 
Henrik Maartens

Henrik Maartens

24/09/2015 19:47:07
Quote Anchor link
maar ik wil juist de zaalwacht tonen (waarbij nummers uit database bond en mijn database gematcht worden om te bepalen wie de zaalwacht is)....

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
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 19:53:12
Quote Anchor link
Die zaalwacht is nog niet beschikbaar, dan moet je er toch eerst voor zorgen dat je die query uitvoert.
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.
 
Henrik Maartens

Henrik Maartens

24/09/2015 20:33:26
Quote Anchor link
na 8 uur proberen is het me gelukt:

$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>";
}
 
- Ariën  -
Beheerder

- Ariën -

24/09/2015 20:44:40
Quote Anchor link
Het is verder $row['zaalwacht'], en de variabelen horen buiten quotes.
Stap ook liever op MySQLi of PDO over.
 
Henrik Maartens

Henrik Maartens

24/09/2015 20:52:21
Quote Anchor link
dankje, heb dat met die haakjes aangepast.

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>";
}
 
Eddy E

Eddy E

24/09/2015 21:59:38
Quote Anchor link
http://stackoverflow.com/questions/1831105/how-to-do-a-case-sensitive-search-in-where-clause-im-using-sql-server

Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"
);
?>


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
 
Henrik Maartens

Henrik Maartens

24/09/2015 22:05:08
Quote Anchor link
ik zie dat jij select zaalwacht gebruikt, dat werkt inderdaad ook.
is dat beter dan met het sterretje?

BINARY werkt inderdaad! dank daarvoor
Gewijzigd op 24/09/2015 22:06:56 door Henrik Maartens
 
Johan K

Johan K

25/09/2015 00:09:53
Quote Anchor link
* betekend "all", aangezien je alleen zaalwacht wil heeft het geen nut om andere dingen op te vragen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.