Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 564
Hei! Jeg driver å prøver å lære meg PHP og sql på egenhånd. Driver med et prosjekt hvor jeg skal skrive inputs inn til en database. Problemet er bare at jeg får en feilmelding som jeg ikke skjønner. Som er:

Fatal error: Call to a member function query() on a non-object in Cxampp\htdocs\hjemme\index.php on line 37

klasser.php

Kode

<?php
class bruker
{
    private $epost;
    private $passord;
   private $fornavn;
   private $etternavn; 


function set_epost ($epost)
{
   if (preg_match("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/",$epost))
   {
       $this->epost = $epost;
       return true;   
   }
   else
   {
       return false;
   }
}

function set_passord($passord)
{
    if (preg_match("/^[A-åa-å.0-9 ]{5,30}$/",$passord))
    {
        $this->passord = $passord;
        return true;
    }
    else
    {
        return false;
    }
}

function set_fornavn ($fornavn)
{
    if (preg_match("/^[a-åA-Å.0-9 ]{3,10}$/",$fornavn))
    {
        $this->fornavn = $fornavn;
        return true;
    }
    else
    {
        return false;
    }
}

function set_etternavn ($etternavn)
{
    if (preg_match("/^[a-åA-Å.0-9 ]{3,10}$/",$etternavn))
    {
        $this->etternavn = $etternavn;
        return true;
    }
    else
    {
        return false;
    }
}

function get_epost()
{
    return $this->epost;
}

function get_passord()
{
    return $this->passord;
}

function get_fornavn()
{
    return $this->fornavn;
}

function get_etternavn()
{
    return $this->etternavn;
}

}
?>

index.php

Kode

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title></title>
    </head>
    <body>
        
        <form action="" method="POST" >
            <table>
        <tr><td>   Epost    </td><td><input type="text" name="epost" /> </td> <td>*</td></tr> 
        <tr><td>   Passord  </td><td><input type="password" name="passord" /></td> <td>*</td></tr>
        <tr><td>   Fornavn  </td><td><input type="text" name="fornavn" /></td><td>*</td></tr>
        <tr><td>   Etternavn</td><td> <input type="text" name="etternavn" /></td><td>*</td></tr>
        <tr><td>     <input type="submit" name="registrer" value="Registrer deg" /></td></tr>
        </form>
        </table>
            *  Feltet må fylles inn
        </form>
        <?php
      if(isset($_REQUEST['registrer']))
      {
        include "klasser.php";
       include "connect-db.php";
       
       $bruker = new bruker();
        if (get_magic_quotes_gpc())
            {
                $bruker->set_epost($_POST['epost']);
                $bruker->set_passord($_POST['passord']);
                $bruker->set_fornavn($_POST['fornavn']);
                $bruker->set_etternavn($_POST['etternavn']);
        }
        
        $sql ="Insert INTO registrering(Epost,Passord,Fornavn,Etternavn)";
        $sql .="Values('".$bruker->get_epost()."','".$bruker->get_passord()."','".$bruker->get_fornavn()."','".$bruker->get_etternavn()."')";
        $resultat = $db->query($sql); // Her er feilmeldingen!
        if(!$resultat)
     {
         echo "Feil, kunne ikke skrive til databasen";
     }
     $db->close();
        $db->close();
      }

        ?>
    </body>
</html>
connect-db.php

Kode

<?php

$db_server = mysql_connect('localhost',"root", "");
    if(!$db_server)
    {
        die("kunne ikke koble til databaseserver");
    }
    $db = mysql_select_db("hjemme");
    if(!$db)
    {
        die("Fant ikke databasen");
    }

?>
Takker for all hjelp
Sist endret av Den modige; 4. april 2012 kl. 20:30.
Nå har jeg dårlig tid, og har bare skumlest koden din.
Men $db er vel ikke et objekt.

Dermed får du feilmeldingen: "Fatal error: Call to a member function query() on a non-object".
Sist endret av s1gh; 4. april 2012 kl. 20:39.
Sitat av s1gh Vis innlegg
Nå har jeg dårlig tid, og har bare skumlest koden din.
Men $db er vel ikke et objekt.

Dermed får du feilmeldingen: "Fatal error: Call to a member function query() on a non-object".
Vis hele sitatet...
Hei. Takk for tilbakemelding!

Jeg har endret index.php, men får nå kun skrevet tomt til databasen. Her er koden:

index.php

Kode

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title></title>
    </head>
    <body>
        <h3>Hjemmeopppgave - Registrering, lagring i database og bekreftelse - 04.04.2012</h3>
        <form action="" method="POST" >
            <table>
        <tr><td>   Epost    </td><td><input type="text" name="epost" /> </td> <td>*</td></tr> 
        <tr><td>   Passord  </td><td><input type="password" name="passord" /></td> <td>*</td></tr>
        <tr><td>   Fornavn  </td><td><input type="text" name="fornavn" /></td><td>*</td></tr>
        <tr><td>   Etternavn</td><td> <input type="text" name="etternavn" /></td><td>*</td></tr>
        <tr><td>     <input type="submit" name="registrer" value="Registrer deg" /></td></tr>
        </form>
        </table>
            *  Feltet må fylles inn
        </form>
        <?php
      if(isset($_REQUEST['registrer']))
      {
        include "klasser.php";
       include "connect-db.php";
       
       $bruker = new bruker();
        if (get_magic_quotes_gpc())
            {
                $bruker->set_epost($_POST['epost']);
                $bruker->set_passord($_POST['passord']);
                $bruker->set_fornavn($_POST['fornavn']);
                $bruker->set_etternavn($_POST['etternavn']);
        }
         $db = new mysqli ("localhost", "root", "", "hjemme");
        if(!$db)
        {
            die ("Feil kunne ikke koble til databasen");
        }
        $sql ="Insert INTO registrering(Epost,Passord,Fornavn,Etternavn)";
        $sql .="Values('".$bruker->get_epost()."','".$bruker->get_passord()."','".$bruker->get_fornavn()."','".$bruker->get_etternavn()."')";
       $resultat = $db->query($sql);
        if (!$resultat)
        {
            return 0;
            echo "feil";
        }
        else
        {
            echo "Registrering er ok";
            return $db->insert_id;
        }

        }
      
      
      
        ?>
    </body>
</html>
Fikk løst problemet. Ber adminstrator slette posten! Takk for den hjelpen jeg fikk.
Slette posten? Hvorfor ikke heller dele løsningen din, slik at det kan lære andre som kan støte på lignende problemer?