[OPGELOST]Variabelen teruglezen in een ander php bestand
Ik heb in een map genaamd Config een functie staan om afbeeldingen met naam en url te laden
In een ander bestand totaal ergens anders op de website include ik dat bestand en roep ik de functie aan, alleen de 4 variabelen die in die functie zitten kan ik niet lezen. Wie heeft de oplossing???
Hier het stukje code van de function:
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
function getClublogo($Ytid, $Yuid) {
global $imgThuis;
global $imgUit;
global $naamThuis;
global $naamUit;
$sqlThuis = "SELECT * FROM `clublogos` WHERE `club_id` = $Ytid";
$resThuis = mysqli_query($dbcon00, $sqlThuis);
if (mysqli_num_rows($resThuis) > 0) {
// output data of each row
while($rowThuis = mysqli_fetch_assoc($resThuis)) {
$imgThuis = $rowThuis['logo_url'];
$naamThuis = $rowThuis['clubnaam'];
}
}
//------------------------------------------------------------------//
$sqlUit = "SELECT * FROM `clublogos` WHERE `club_id` = $Yuid";
$resUit = mysqli_query($dbcon00, $sqlUit);
if (mysqli_num_rows($resUit) > 0) {
// output data of each row
while($rowUit = mysqli_fetch_assoc($resUit)) {
$imgUit = $rowUit['logo_url'];
$naamUit = $rowUit['clubnaam'];
}
}
}
global $imgThuis;
global $imgUit;
global $naamThuis;
global $naamUit;
$sqlThuis = "SELECT * FROM `clublogos` WHERE `club_id` = $Ytid";
$resThuis = mysqli_query($dbcon00, $sqlThuis);
if (mysqli_num_rows($resThuis) > 0) {
// output data of each row
while($rowThuis = mysqli_fetch_assoc($resThuis)) {
$imgThuis = $rowThuis['logo_url'];
$naamThuis = $rowThuis['clubnaam'];
}
}
//------------------------------------------------------------------//
$sqlUit = "SELECT * FROM `clublogos` WHERE `club_id` = $Yuid";
$resUit = mysqli_query($dbcon00, $sqlUit);
if (mysqli_num_rows($resUit) > 0) {
// output data of each row
while($rowUit = mysqli_fetch_assoc($resUit)) {
$imgUit = $rowUit['logo_url'];
$naamUit = $rowUit['clubnaam'];
}
}
}
En hier de code voor het terug halen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
include("Config/afbeeldingen.php");
$th = '15';
$ui = '64';
getClublogo($th, $ui);
echo '<br><br>Club ' .$naamThuis. ' (<img src="' .$Ssite. '/'.$imgThuis. '" width="75"> )<br>' ;
echo 'Club ' .$naamUit. ' (<img src="' .$Ssite. '/'.$imgUit. '" width="75"> )<br>' ;
$th = '15';
$ui = '64';
getClublogo($th, $ui);
echo '<br><br>Club ' .$naamThuis. ' (<img src="' .$Ssite. '/'.$imgThuis. '" width="75"> )<br>' ;
echo 'Club ' .$naamUit. ' (<img src="' .$Ssite. '/'.$imgUit. '" width="75"> )<br>' ;
Als ik de functie qua code kopieër en plak in de originele broncode dan doet ie het heel keurig...
Gewijzigd op 05/09/2020 19:18:20 door Christiaan de kleine
Waar moeten die variabelen vandaan komen?
De variabelen $imgThuis, $naamThuis, $imgUit, $naamUit
Dus:
$imgThuis = '';
etc.
include(..);
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
$imgThuis;
$imgUit;
$naamThuis;
$naamUit;
include("Config/afbeeldingen.php");
include("Config/config.php");
// Start gegevens:
session_start();
$_SESSION["sessionWebsite"] = "http://" . $_SERVER['SERVER_NAME'];
$Ssite = $_SESSION["sessionWebsite"];
echo $Ssite;
$th = '15';
$ui = '64';
getClublogo($th, $ui);
echo '<br><br>Club ' .$naamThuis. ' (<img src="' .$Ssite. '/'.$imgThuis. '" width="75"> )<br>' ;
echo 'Club ' .$naamUit. ' (<img src="' .$Ssite. '/'.$imgUit. '" width="75"> )<br>' ;
?>
$imgThuis;
$imgUit;
$naamThuis;
$naamUit;
include("Config/afbeeldingen.php");
include("Config/config.php");
// Start gegevens:
session_start();
$_SESSION["sessionWebsite"] = "http://" . $_SERVER['SERVER_NAME'];
$Ssite = $_SESSION["sessionWebsite"];
echo $Ssite;
$th = '15';
$ui = '64';
getClublogo($th, $ui);
echo '<br><br>Club ' .$naamThuis. ' (<img src="' .$Ssite. '/'.$imgThuis. '" width="75"> )<br>' ;
echo 'Club ' .$naamUit. ' (<img src="' .$Ssite. '/'.$imgUit. '" width="75"> )<br>' ;
?>
geeft geen verbetering.
Maar $imgThuis = '';
had ik daarna snel aangepast weer, maar ook geen verbetering.
En $dbcon00 zal niet bekend zijn in de function().
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
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
<?php
include("config.php");
$imgThuis = '';
$imgUit = '';
$naamThuis = '';
$naamUit = '';
// Start gegevens:
session_start();
function getClublogo($Ytid, $Yuid) {
global $imgThuis;
global $imgUit;
global $naamThuis;
global $naamUit;
$sqlThuis = "SELECT * FROM `clublogos` WHERE `club_id` = $Ytid";
$resThuis = mysqli_query($dbcon00, $sqlThuis);
if (mysqli_num_rows($resThuis) > 0) {
// output data of each row
while($rowThuis = mysqli_fetch_assoc($resThuis)) {
$imgThuis = $rowThuis['logo_url'];
$naamThuis = $rowThuis['clubnaam'];
}
}
//------------------------------------------------------------------//
$sqlUit = "SELECT * FROM `clublogos` WHERE `club_id` = $Yuid";
$resUit = mysqli_query($dbcon00, $sqlUit);
if (mysqli_num_rows($resUit) > 0) {
// output data of each row
while($rowUit = mysqli_fetch_assoc($resUit)) {
$imgUit = $rowUit['logo_url'];
$naamUit = $rowUit['clubnaam'];
}
}
return $imgThuis;
}
?>
include("config.php");
$imgThuis = '';
$imgUit = '';
$naamThuis = '';
$naamUit = '';
// Start gegevens:
session_start();
function getClublogo($Ytid, $Yuid) {
global $imgThuis;
global $imgUit;
global $naamThuis;
global $naamUit;
$sqlThuis = "SELECT * FROM `clublogos` WHERE `club_id` = $Ytid";
$resThuis = mysqli_query($dbcon00, $sqlThuis);
if (mysqli_num_rows($resThuis) > 0) {
// output data of each row
while($rowThuis = mysqli_fetch_assoc($resThuis)) {
$imgThuis = $rowThuis['logo_url'];
$naamThuis = $rowThuis['clubnaam'];
}
}
//------------------------------------------------------------------//
$sqlUit = "SELECT * FROM `clublogos` WHERE `club_id` = $Yuid";
$resUit = mysqli_query($dbcon00, $sqlUit);
if (mysqli_num_rows($resUit) > 0) {
// output data of each row
while($rowUit = mysqli_fetch_assoc($resUit)) {
$imgUit = $rowUit['logo_url'];
$naamUit = $rowUit['clubnaam'];
}
}
return $imgThuis;
}
?>
in de config file staat de $dbcon00
Dan moet die in de function() een global worden gemaakt.
en hoe moet ik die toevoegen dan??
global $naamUit;
etc.
global $dbcon00;
top, werkt nu wel idd. Hij had dus de verbinding niet opgebouwd met de database. Dank je wel -SanThe-
Succes verder.
Bovenstaande oplossing zal zeker werken, maar of het nu heel erg netjes is? En dan bedoel ik niet zozeer alsof ik optreed als een soort van smaakpolitie maar meer dat dit soort constructies zorgen voor onoverzichtelijkere code, wat mogelijk meer fouten en bugs tot gevolg kan hebben.
En als ik bovenstaande code bekijk dan krijg ik de indruk dat dit onderdeel is van een overkoepelende entiteit genaamd "wedstrijd"? Dit zou je dus, als je waarschijnlijk wat meer structuur aanbrengt in je database, kunnen tacklen met één query die alle relevante informatie in 1x bij elkaar sprokkelt.
En dat $imgThuis en $imgUit, dat zijn gewoon clublogo's? Als je die nu eens een slimme naam geeft (gelijk aan de clubnaam of simpelweg het id van het club-record) dan heb je niet eens een aparte kolom "logo_url" nodig. Dit is in zekere zin, mits je de bestandsnaam een beetje slim kiest, afleidbare informatie / afleidbaar uit andere informatie.
Vraag is ook, heb je die variabelen echt continu (in een globale scope) nodig, of gebruik je deze slechts één keer? Indien de functie, in wat voor uitvoering dan ook, al deze informatie retourneert, dan zou je die data gewoon kunnen hergebruiken als je die op meerdere plaatsen nodig hebt? Maar er is (op voorhand) geen enkele reden om dit tot globaal toegankelijke informatie te verheffen.
Thomas van den Heuvel op 05/09/2020 17:09:21:
Kun je al deze informatie niet simpelweg teruggeven via de functie? Waarom zou je hier allemaal globale variabelen voor moeten maken?
...
Maar er is (op voorhand) geen enkele reden om dit tot globaal toegankelijke informatie te verheffen.
...
Maar er is (op voorhand) geen enkele reden om dit tot globaal toegankelijke informatie te verheffen.
Precies wat Thomas zegt. Deze aanpak is niet wenselijk. Dit zijn geen globale variabelen.
Gewijzigd op 05/09/2020 18:46:33 door Ozzie PHP