Probleem met database class includen in andere functie
Ik ben bezig met een AJAX script om dynamisch dropdownlists te linken. De bedoeling is ongeveer als volgt:
Er is een tabel met nieuwsitems met een kolom nieuwsDatum ( DATE ). De eerste dropdown list bevat alle jaren uit de database en wordt zo opgebouwd:
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
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
<?php
// Error reporting Level
error_reporting(E_ALL);
// Database variabelen
$host ='localhost'; // Hostnaam
$dbUser ='root'; // Gebruikersnaam
$dbPass =''; // Wachtwoord
$dbName ='test'; // Databasenaam
// Include de Mysql Class
require_once('media/mysql.class.php');
// Maak verbinding met de database
$db= &new MySQL($host,$dbUser,$dbPass,$dbName);
// HAAL ALLE JAREN UIT DE DATABASE
// De query
$sql = "SELECT DISTINCT year(nieuwsDatum) as Jaar FROM nieuws ORDER BY Jaar DESC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$select_jaar = "<select name=\"jaren\" id=\"jaren\" onchange=\"xajax_getSelect(this.value)\">\n";
$select_jaar .= "<option value=\"0\">Kies een jaar</option>\n";
while ($row = $res->fetch())
{
$select_jaar .= "<option value=\"". $row['Jaar'] ."\">". $row['Jaar'] ."</option>\n";
}
$select_jaar .= "</select>\n";
unset($row);
// EINDE HAAL ALLE JAREN UIT DE DATABASE
?>
// Error reporting Level
error_reporting(E_ALL);
// Database variabelen
$host ='localhost'; // Hostnaam
$dbUser ='root'; // Gebruikersnaam
$dbPass =''; // Wachtwoord
$dbName ='test'; // Databasenaam
// Include de Mysql Class
require_once('media/mysql.class.php');
// Maak verbinding met de database
$db= &new MySQL($host,$dbUser,$dbPass,$dbName);
// HAAL ALLE JAREN UIT DE DATABASE
// De query
$sql = "SELECT DISTINCT year(nieuwsDatum) as Jaar FROM nieuws ORDER BY Jaar DESC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$select_jaar = "<select name=\"jaren\" id=\"jaren\" onchange=\"xajax_getSelect(this.value)\">\n";
$select_jaar .= "<option value=\"0\">Kies een jaar</option>\n";
while ($row = $res->fetch())
{
$select_jaar .= "<option value=\"". $row['Jaar'] ."\">". $row['Jaar'] ."</option>\n";
}
$select_jaar .= "</select>\n";
unset($row);
// EINDE HAAL ALLE JAREN UIT DE DATABASE
?>
Dit werkt allemaal prima, maar nu moet ik een functie schrijven, waarbij ik op het onchange event van de eerste dropdown box de tweede dropdown box genereer. Dit gebeurt overigens met Xajax.
Het probleem is dat ik geen tweede keer de database class benoemen. Maar ik kan de variabele $db ook niet meegeven met de functie getSelect()
Ik heb de functie getSelect() nu zo geschreven:
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
56
57
58
59
60
61
62
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
56
57
58
59
60
61
62
<?php
function getSelect($value)
{
// Database variabelen
$host ='localhost'; // Hostnaam
$dbUser ='root'; // Gebruikersnaam
$dbPass =''; // Wachtwoord
$dbName ='test'; // Databasenaam
// Maak verbinding met de database
$db= &new MySQL($host,$dbUser,$dbPass,$dbName);
$sql = "SELECT DISTINCT
ELT(month(nieuwsDatum),
'januari',
'februari',
'maart',
'april',
'mei',
'juni',
'juli',
'augustus',
'september',
'oktober',
'november',
'december')
AS Maand
FROM nieuws
WHERE year(nieuwsDatum) = '".$value."'
ORDER BY nieuwsDatum ASC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$sOut = "<select name=\"maanden\" id=\"maanden\">\n";
$sOut .= "<option value=\"0\">Kies een Maand</option>\n";
while ( $row = $res->fetch())
{
// echo ' Maand: '. $row['Maand'] .'<br/>';.
$sOut .= "<option value=\"". $row['Maand'] ."\">". $row['Maand'] ."</option>\n";
}
$sOut .= "</select>\n";
// instantiate the xajaxResponse object
$objResponse = new xajaxResponse();
/* Setup the xajaxResponse object to update the HTML object
having ID 'timebox' */
$objResponse->addAssign("maanden", "innerHTML", $sOut);
/* return the output */
return $objResponse->getXML();
}
?>
function getSelect($value)
{
// Database variabelen
$host ='localhost'; // Hostnaam
$dbUser ='root'; // Gebruikersnaam
$dbPass =''; // Wachtwoord
$dbName ='test'; // Databasenaam
// Maak verbinding met de database
$db= &new MySQL($host,$dbUser,$dbPass,$dbName);
$sql = "SELECT DISTINCT
ELT(month(nieuwsDatum),
'januari',
'februari',
'maart',
'april',
'mei',
'juni',
'juli',
'augustus',
'september',
'oktober',
'november',
'december')
AS Maand
FROM nieuws
WHERE year(nieuwsDatum) = '".$value."'
ORDER BY nieuwsDatum ASC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$sOut = "<select name=\"maanden\" id=\"maanden\">\n";
$sOut .= "<option value=\"0\">Kies een Maand</option>\n";
while ( $row = $res->fetch())
{
// echo ' Maand: '. $row['Maand'] .'<br/>';.
$sOut .= "<option value=\"". $row['Maand'] ."\">". $row['Maand'] ."</option>\n";
}
$sOut .= "</select>\n";
// instantiate the xajaxResponse object
$objResponse = new xajaxResponse();
/* Setup the xajaxResponse object to update the HTML object
having ID 'timebox' */
$objResponse->addAssign("maanden", "innerHTML", $sOut);
/* return the output */
return $objResponse->getXML();
}
?>
Dit werkt allemaal prima, maar kan beter volgens mij. Dus dat ik de variabele $db niet opnieuw hoef te benoemen.
Kan iemand mij hierbij helpen. Ik ben nog niet zo heel lang met Ajax en PHP bezig, maar zodra dit werkt, zal ik het zonder meer toevoegen aan de PHP scripts hier! Of een tutorial van maken natuurlijk.
$db is een object, die zul je moeten benoemen wanneer je daar wat mee wilt gaan doen.
En dan met define() ervoor zorgen dat de variabelen voor de database connectie niet nogmaals te hoeven worden toegevoegd..
Ik heb het even geprobeerd en dit werkt inderdaad goed dan.
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
56
57
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
56
57
<?php
// Error reporting Level
error_reporting(E_ALL);
// Definieer de database gegevens benodigd voor de verbinding
define ('DB_USER', 'root');
define ('DB_PASSWORD', '');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'test');
// Include de Mysql Class
require_once('media/mysql.class.php');
// Include de Xajax Library
require_once('media/xajax/xajax.inc.php');
function getSelect($value)
{
// Maak opnieuw verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
$sql = "SELECT DISTINCT
ELT(month(nieuwsDatum),
'januari',
'februari',
'maart',
'april',
'mei',
'juni',
'juli',
'augustus',
'september',
'oktober',
'november',
'december')
AS Maand
FROM nieuws
WHERE year(nieuwsDatum) = '".$value."'
ORDER BY nieuwsDatum ASC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$sOut = "<select name=\"maanden\" id=\"maanden\">\n";
$sOut .= "<option value=\"0\">Kies een Maand</option>\n";
while ( $row = $res->fetch())
{
// echo ' Maand: '. $row['Maand'] .'<br/>';.
$sOut .= "<option value=\"". $row['Maand'] ."\">". $row['Maand'] ."</option>\n";
}
// etc. etc.
?>
// Error reporting Level
error_reporting(E_ALL);
// Definieer de database gegevens benodigd voor de verbinding
define ('DB_USER', 'root');
define ('DB_PASSWORD', '');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'test');
// Include de Mysql Class
require_once('media/mysql.class.php');
// Include de Xajax Library
require_once('media/xajax/xajax.inc.php');
function getSelect($value)
{
// Maak opnieuw verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
$sql = "SELECT DISTINCT
ELT(month(nieuwsDatum),
'januari',
'februari',
'maart',
'april',
'mei',
'juni',
'juli',
'augustus',
'september',
'oktober',
'november',
'december')
AS Maand
FROM nieuws
WHERE year(nieuwsDatum) = '".$value."'
ORDER BY nieuwsDatum ASC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$sOut = "<select name=\"maanden\" id=\"maanden\">\n";
$sOut .= "<option value=\"0\">Kies een Maand</option>\n";
while ( $row = $res->fetch())
{
// echo ' Maand: '. $row['Maand'] .'<br/>';.
$sOut .= "<option value=\"". $row['Maand'] ."\">". $row['Maand'] ."</option>\n";
}
// etc. etc.
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis Jongerden