[PHP] $_request heeft waarde zonder querystrings?

Pagina: 1
Acties:

Onderwerpen


  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 21-04 15:02
Hey luitjes,
Na jaren ASP te hebben geprogrammeerd toch maar besloten mijn eigen CMS om te zetten naar PHP. Ik gebruik een mysql database met adodb voor mijn data.

Ik ben gewoon 1-op-1 begonnen met het vertalen van de code. Zoals ik het zie, zitten er geen syntax fouten in... Echter blijkt dat een willekeurige request de waarde 1 krijgt... Dit terwijl er niets met de URL wordt meegegeven... Hierdoor klapt de volgende code eruit met:
Fatal error: Call to a member function Execute() on a non-object in E:\Wamp\www\JB2008\Includes\common_functions.php on line 105

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//dit komt uit common_functions.php

Function Getvalue ($table, $field, $IDfield, $value) {
    $sql = "
        SELECT " . $field . "
        FROM " . $table . "
        WHERE " . $IDfield . " = " . $value . " 
        ";

    $RSGetvalue = $conn->Execute($sql);                       //  <--- regel 105
        if ($RSGetvalue->recordcount > 0) {
            return $RSGetvalue($field);
        } else {
            return "";
        }
}


Deze functie wordt opgeroepen door de volgende 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
<?php
echo $_REQUEST["site_id"];
include ("includes/connection.php");
include ("includes/common_functions.php");
include ("includes/CMS_functions.php");

    if ($_REQUEST["content_id"] != "" && is_numeric($_REQUEST["content_id"])) {
        //Content_id overrules site_id
        
        $content_id = $_REQUEST["content_id"];
        $site_id = Getvalue("content","site_id","content_id", $content_id);
        if ($site_id == null) { 
            $site_id = 1;
            $content_id = "";
        }
    } else {
        $content_id = "";
        if ($_REQUEST["site_id"] != "" && is_numeric($_REQUEST["site_id"])) {
            //check if the site requested is the database
            
            if (Getvalue("sites", "site_id", "site_id", $_REQUEST["site_id"]) != null) {
                $site_id = $_request["site_id"];
                setcookie("site_id", $_request["site_id"], time()+3600);
            } else {
                setcookie("site_id", 1, time()+3600);
                $site_id = 1;
            }
        } else {
            if ($_cookie["site_id"] != null) {
                $site_id = $_cookie["site_id"];
            } else {
                setcookie("site_id", 1, time()+3600);
                $site_id = 1;
            }
        }
        
    }


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
//ook nog even connection.php erbij :)

include("adodb/adodb.inc.php");

$sHost = "localhost"; 
$sUser = "root"; 
$sPassword = ""; 
$sDatabase = "JB2008"; 


$conn = &ADONewConnection('mysql');
$conn->Connect($sHost,$sUser,$sPassword,$sDatabase);
$conn->SetFetchMode(ADODB_FETCH_ASSOC);

Help iemand? ;)

edit: Heb even het bovendste deel van de pagina er ook in geplakt.
Ik include wel een paar bestanden naar daar staat echt niets van een var declaratie in... alleen maar functies.

[ Voor 17% gewijzigd door kalechinees op 28-02-2008 21:01 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

Help jezelf zou ik zeggen ;)

Ben je al aan het debuggen geslagen en wat kwam daar precies uit? We verwachten hier dat je dat al hebt gedaan en dat je ook aangeeft wat je hebt geprobeerd. Nu dump je je code, geef je aan wat er fout is en that's it. Aangezien het hier geen helpdesk is maar een discussie forum verwachten we hier meer van je.

Als je $_REQUEST["content_id"] zet en geen GET of POST variabele content_id meegeeft dan is deze in PHP echt niet gezet. Als dat bij jou wel het geval is dan is dat een fout ergens in je eigen code.

Overigens heeft je foutmelding helemaal niks te maken met het probleem dat je nu schetst. Je foutmelding laat zien dat $conn->Execute niet bestaat. Zeer waarschijnlijk omdat je $conn nog nergens hebt geinitialiseerd.

[ Voor 46% gewijzigd door Creepy op 28-02-2008 21:27 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

kalechinees schreef op donderdag 28 februari 2008 @ 20:48:
Hey luitjes,
Na jaren ASP te hebben geprogrammeerd toch maar besloten mijn eigen CMS om te zetten naar PHP. Ik gebruik een mysql database met adodb voor mijn data.

Ik ben gewoon 1-op-1 begonnen met het vertalen van de code. Zoals ik het zie, zitten er geen syntax fouten in... Echter blijkt dat een willekeurige request de waarde 1 krijgt... Dit terwijl er niets met de URL wordt meegegeven... Hierdoor klapt de volgende code eruit met:
Fatal error: Call to a member function Execute() on a non-object in E:\Wamp\www\JB2008\Includes\common_functions.php on line 105

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function Getvalue ($table, $field, $IDfield, $value) {
    $sql = "
        SELECT " . $field . "
        FROM " . $table . "
        WHERE " . $IDfield . " = " . $value . " 
        ";

    $RSGetvalue = $conn->Execute($sql);                       //  <--- regel 105
        if ($RSGetvalue->recordcount > 0) {
            return $RSGetvalue($field);
        } else {
            return "";
        }
}
Waar komt $conn vandaan? Moet je die niet global declareren?

All my posts are provided as-is. They come with NO WARRANTY at all.


  • FragFrog
  • Registratie: September 2001
  • Laatst online: 10:14
CyBeR schreef op donderdag 28 februari 2008 @ 20:57:
Waar komt $conn vandaan? Moet je niet niet global declareren?
Inderdaad. Ergo, een "global $conn;" en klaar.

Had je overigens ook prima zelf kunnen bedenken: Call to a member function Execute() on a non-object zegt precies wat het is: de functie execute wordt aangeroepen op iets wat geen object is. Kijk je naar regel 105 zie je dat execute alleen wordt aangeroepen op $conn, een simpele var_dump($conn) is dan genoeg om je te vertellen waar het probleem zit :)

[ Site ] [ twitch ] [ jijbuis ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 09:55

Bosmonster

*zucht*

Ik zou trouwens register_globals even uitzetten, dan leer je jezelf niet direct allemaal van dit soort code aan.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
_REQUEST word niet alleen gevuld vanuit de GET en POST, maar ook vanuit de COOKIE ;)
Ofwel, alle request-variabelen. Hence the name ;)

[ Voor 23% gewijzigd door frickY op 29-02-2008 00:09 ]


Acties:
  • 0 Henk 'm!

  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 21-04 15:02
frickY schreef op vrijdag 29 februari 2008 @ 00:09:
_REQUEST word niet alleen gevuld vanuit de GET en POST, maar ook vanuit de COOKIE ;)
Ofwel, alle request-variabelen. Hence the name ;)
Bedankt voor alle response. Helaas heb ik nog niet echt een handige reference site kunnen vinden voor PHP. Bovendien verschillen de werkwijzen van IIS en Apache toch aardig wat...
Zo heb ik een avondje mogen stoeien over het feit dat sessies, get, post en cookies in hoofdletters geschreven moeten worden |:(
Ook leuk is dat bij recursieve functies de tijdelijke returnvalue ook global gemaakt dient te worden :) Ik merk al dat gedurende mijn 10 jaartjes ASP/VBscript flink laks ben geworden in het programmeren. :+

Gelukkig begin ik er al wat 'feeling' mee te krijgen. Het frontend deel en de core engine zijn al vertaald en werkend. En het is toch een stuk sneller dan IIS/MSAccess ;)

Volgende punt op de agenda is het Bestandsobject van PHP, om m'n mini-bestandsbrowser na te maken.

[ Voor 17% gewijzigd door kalechinees op 03-03-2008 09:44 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

kalechinees schreef op maandag 03 maart 2008 @ 09:38:
Bedankt voor alle response. Helaas heb ik nog niet echt een handige reference site kunnen vinden voor PHP.
www.php.net :?

Acties:
  • 0 Henk 'm!

  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 21-04 15:02
Persoonlijk vind ik maar een rommelige site. Wellicht omdat ook alle informatie betreft oudere versies er ook op staat... achja we zullen het er maar mee doen ;)

Acties:
  • 0 Henk 'm!

  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 17-09 16:35

djiwie

Wie?

kalechinees schreef op maandag 03 maart 2008 @ 09:38:
Ook leuk is dat bij recursieve functies de tijdelijke returnvalue ook global gemaakt dient te worden :)
Huh?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

kalechinees schreef op maandag 03 maart 2008 @ 09:55:
Persoonlijk vind ik maar een rommelige site. Wellicht omdat ook alle informatie betreft oudere versies er ook op staat... achja we zullen het er maar mee doen ;)
Maar dat staat wel altijd duidelijk aangegeven wat aangepast is in welke versie. Dus tenzij anders aangegeven kan je alles zo gebruiken wat in de documentatie staat op de recentste versie ;)

http://www.php.net/manual/en/

[ Voor 3% gewijzigd door Erkens op 03-03-2008 10:10 ]

Pagina: 1