Avatar billede kongfjong Nybegynder
21. januar 2005 - 23:24 Der er 5 kommentarer og
1 løsning

Problem med include()

Hej,

Jeg har to filer, hvor den ene inkluderer den anden. Det synes bare ikke rigtigt at virke. Jeg får følgende fejl:

Fatal error: Cannot instantiate non-existent class: date_pulldown in D:\Apache Group\Apache2\htdocs\listing12.4.php on line 6

Den fil der skal inkluderes, er følgende:

class date_pulldown {
    var $name;
    var $timestamp = -1;
    var $months = array("Jan", "Feb", "Mar", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt",

"Nov", "Dec");
    var $yearstart = -1;
    var $yearend = -1;

function date_pulldown($name)
{
    $this->name = $name;
}

function setDate_global()
{
    if (!$this->setDate_array($GLOBALS[$this->name]))
    {
        return $this->setDate_timestamp(time());
    }

    return true;
}

function setDate_timestamp($time)
{
    $this->timestamp = $time;
    return true;
}

function setDate_array($inputdate)
{
    if (is_array($inputdate) && isset($inputdate['mon']) && isset($inputdate['mday']) &&

isset($inputdate['year']))
    {
        $this->timestamp = mktime(11, 59, 59, $inputdate['mon'], $inputdate['mday'],

$inputdate['year']);

        return true;
    }

    return false;
}

function setYearStart($year)
{
    $this->yearstart = $year;
}

function setYearEnd($year)
{
    $this->yearend = $year;
}

function getYearStart ()
{
    if ($this->yearstart < 0)
    {
        $nowarray = getdate(time());
        $this->yearstart = $nowarray[year]-5;
    }

    return $this->yearstart;
}

function getYearEnd()
{
    if ($this->yearend < 0)
    {
        $nowarray = getdate(time());
        $this->yearend = $nowarray[year]+5;
    }

    return $this->yearend;
}

function output()
{
    if ($this->timestamp < 0)
    {
        $this->setDate_global();
    }

    $datearray = getdate($this->timestamp);
    $out = $this->day_select($this->name, $datearray);
    $out .= $this->month_select($this->name, $datearray);
    $out .= $this->year_select($this->name, $datearray);
    return $out;
}

function day_select($fieldname, $datearray)
{
    $out = "<select name=\"$fieldname"."[mday]\">\n";

    for ($x=1; $x<=31; $x++)
    {
        $out .= "<option value=\"$x\"".($datearray['mday']==($x) ?"

SELECTED":"").">".sprintf("%02d", $x ) ."\n";
    }

    $out .= "</select>\n";
    return $out;
}

function month_select($fieldname, $datearray)
{
    $out = "<select name=\"" . $fieldname . "[mon]\">\n";

    for ($x = 1; $x <= 12; $x++)
    {
        $out .= "<option value=\"".($x)."\"".($datearray['mon']==($x) ?" SELECTED":"").">

".$this->months[$x-1]."\n";
    }

    $out .= "</select>\n";
    return $out;
}

function year_select($fieldname, $datearray)
{
    $out = "<select name=\"$fieldname"."[year]\">";
    $start = $this->getYearStart();
    $end = $this->getYearEnd();


    for ($x = $start; $x <= $end; $x++)
    {
    $out .= "<option value=\"".($x)."\"".($datearray['year']==($x) ?"

SELECTED":"").">$x\n";
    }

    $out .= "</select>\n";
    return $out;
}

}

Den fil der vil inkludere ovenstående, er:

<html>
<head>
    <title>Listing 12.4 Using the date_pulldown Class</title>
</head>
<?php
$date1 = new date_pulldown("fromdate"); <- Linje 6
$date2 = new date_pulldown("todate");
$date3 = new date_pulldown("foundingdate");
$date3 -> setYearStart(1972);

if (empty($foundingdate))
    $date3->setDate_array(array('mday'=>26, 'mon'=>4, 'year'=>1984));
?>
<body>

<form>
From:<br>
<?php print $date1->output(); ?><p>

To:<br>
<?php print $date2->output(); ?><p>

Company founded:<br>
<?php print $date3->output(); ?><p>

<input type="submit" value="Submit Query">
</form>
</body>
</html>

Nogen der kan se problemet?

PS: Det virker fint, nar jeg par copy/paster indholdet i den fil der inkluderes, ind i den nederste fil...
Avatar billede jakoba Nybegynder
21. januar 2005 - 23:31 #1
du inkliderer ikke noget i den nederste fil.
</head>
<?php
include( "filderskalinkluderes.php" );        //TILFØJET LINIE
$date1 = new date_pulldown("fromdate");  // <- Linje 6
Avatar billede kongfjong Nybegynder
21. januar 2005 - 23:33 #2
Skal lige siges, at der er skrevet følgende linje ind i nederste fil:

include("date_pulldown.class.php"); så der står:

<?php
include("date_pulldown.class.php");
$date1 = new date_pulldown("fromdate"); <- Linje 6

Desuden, så kommer der, ud over ovenstående fejlmeddelelse, følgende frem i browseren, før selve fejlmeddelelsen:

class date_pulldown { var $name; var $timestamp = -1; var $months = array("Jan", "Feb", "Mar", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"); var $yearstart = -1; var $yearend = -1; function date_pulldown($name) { $this->name = $name; } function setDate_global() { if (!$this->setDate_array($GLOBALS[$this->name])) { return $this->setDate_timestamp(time()); } return true; } function setDate_timestamp($time) { $this->timestamp = $time; return true; } function setDate_array($inputdate) { if (is_array($inputdate) && isset($inputdate['mon']) && isset($inputdate['mday']) && isset($inputdate['year'])) { $this->timestamp = mktime(11, 59, 59, $inputdate['mon'], $inputdate['mday'], $inputdate['year']); return true; } return false; } function setYearStart($year) { $this->yearstart = $year; } function setYearEnd($year) { $this->yearend = $year; } function getYearStart () { if ($this->yearstart < 0) { $nowarray = getdate(time()); $this->yearstart = $nowarray[year]-5; } return $this->yearstart; } function getYearEnd() { if ($this->yearend < 0) { $nowarray = getdate(time()); $this->yearend = $nowarray[year]+5; } return $this->yearend; } function output() { if ($this->timestamp < 0) { $this->setDate_global(); } $datearray = getdate($this->timestamp); $out = $this->day_select($this->name, $datearray); $out .= $this->month_select($this->name, $datearray); $out .= $this->year_select($this->name, $datearray); return $out; } function day_select($fieldname, $datearray) { $out = "\n"; for ($x=1; $x<=31; $x++) { $out .= "".sprintf("%02d", $x ) ."\n"; } $out .= "\n"; return $out; } function month_select($fieldname, $datearray) { $out = "\n"; for ($x = 1; $x <= 12; $x++) { $out .= "".$this->months[$x-1]."\n"; } $out .= "\n"; return $out; } function year_select($fieldname, $datearray) { $out = ""; $start = $this->getYearStart(); $end = $this->getYearEnd(); for ($x = $start; $x <= $end; $x++) { $out .= "$x\n"; } $out .= "\n"; return $out; } }
Avatar billede jakoba Nybegynder
21. januar 2005 - 23:35 #3
husk at der skal  <?php  og  ?>  omkring php-kode du inkluderer
Avatar billede kongfjong Nybegynder
21. januar 2005 - 23:36 #4
Doh!

Self tak:)
Avatar billede kongfjong Nybegynder
21. januar 2005 - 23:41 #5
Hvordan er det jeg giver dig pointene?
Avatar billede jakoba Nybegynder
22. januar 2005 - 00:41 #6
jeg lægger et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester