Probleem met database class includen in andere functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Jongerden

Dennis Jongerden

30/03/2007 15:38:00
Quote Anchor link
Beste Allemaal,

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)
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
<?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
?>


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)
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
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();
}

?>


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

PHP hulp

06/05/2024 19:44:56
 
Frank -

Frank -

30/03/2007 15:40:00
Quote Anchor link
$db is een object, die zul je moeten benoemen wanneer je daar wat mee wilt gaan doen.
 
Dennis Jongerden

Dennis Jongerden

30/03/2007 15:42:00
Quote Anchor link
Dus in principe moet ik in de functie getSelect() de variabele $db altijd opnieuw benoemen?!

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)
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
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.

?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis Jongerden
 



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.