[php] mysql class werkt niet.

Pagina: 1
Acties:
  • 314 views sinds 30-01-2008
  • Reageer

Onderwerpen


  • Brantje
  • Registratie: Juli 2004
  • Laatst online: 03-09 19:13

Brantje

De post is daar >>

Topicstarter
Ey,
Ik heb een mysql class gemaakt.
Alleen om een of andere reden werkt deze niet.
Hier een beschrijfing hoe ik het hebt
- Include (map
mysql_class.php (hier staan alle functions in)
config.php (connect info, deze gebruikt de mysql class)
header.php (deze include config.php, dus ook automatisch mysql_class.php)
footer.php (onderkant van de website)
in de root staat gewoon 1 bestandje met een stukje text er in.

Het probleem is als volgt:

config.php
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
include_once("mysql_class.php");
$db = new mysql();
$host = "localhost";
$name = "brantjev2008";
$pass = "ditisdaneenlekkerlangwachtwoordietochnietgeldigis";
$db = "brantjev2008";
  
$db->connect($host,$name,$pass,$db);
  ?>

Als ik dit al doe krijg ik de volgende error:
code:
1
Fatal error: Call to a member function connect() on a non-object in D:\brantje.nl v2.0.0.8\Root\brantje.nl v2.0.0.8\include\config.php on line 9

Als ik op de oude manier connectie maak:
PHP:
1
2
mysql_connect($host,$name,$pass);
mysql_select_db($db);


Dan krijg ik op de index pagina deze melding:
code:
1
Fatal error: Call to a member function query() on a non-object in D:\brantje.nl v2.0.0.8\Root\brantje.nl v2.0.0.8\include\header.php on line 55



Hier komen de pagina's:
mysql_class.php
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
class mysql {

  function connect($host, $name, $pass, $db){

  $connection = mysql_connect("$host",
  "$name",
  "$pass");
  mysql_select_db("$db", $connection);

  }//ends the connection function

  function close(){

  mysql_close($this->connection);

  }//ends the close function

  function fetchrow($query){
  $rows = mysql_fetch_row($query);
  return $rows;
  }

  function fetcharray($query){
  $array = mysql_fetch_array($query);
  return $array;
  }

  function fetchnum($query){
  $num = mysql_num_rows($query);
  return $num;
  }

  function query($sql){
  $query = mysql_query($sql) or die(mysql_error());
  return $query;
  }//ends the query function

  }//ends the class


en in header.php staat dit kleine stukje php code:
PHP:
1
2
3
4
5
6
7
8
9
<?php
$sql = $db->query("SELECT * from menu");
while($obj = $db->fetcharry($sql)){
$naam = $obj[1];
$link = $objp[2];
echo "$naam<br>";
}

?>


Weet iemand hoe die fout komt en hoe ik deze kan oplossen?

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 21:31

Gonadan

Admin Beeld & Geluid, Harde Waren
lol!
Je overschrijft het object $db. ;)

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
include_once("mysql_class.php");
$db = new mysql();
$host = "localhost";
$name = "brantjev2008";
$pass = "ditisdaneenlekkerlangwachtwoordietochnietgeldigis";
$db = "brantjev2008";
  
$db->connect($host,$name,$pass,$db);
  ?>

Zie regel 7 :D

[ Voor 77% gewijzigd door Gonadan op 29-11-2007 10:50 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Brantje
  • Registratie: Juli 2004
  • Laatst online: 03-09 19:13

Brantje

De post is daar >>

Topicstarter
ah, domme fout dus, ik moet dus niet meer s'nachts gaan proggen.
Zal zo ff testen.
edit works.
Volgens mij heb ik nu ook wel de meest gebruikte functions in die class.
Iemand nog suggesties?

[ Voor 40% gewijzigd door Brantje op 29-11-2007 10:53 ]


  • ChessSpider
  • Registratie: Mei 2006
  • Laatst online: 01-08 19:01
Brantje schreef op donderdag 29 november 2007 @ 10:50:
ah, domme fout dus, ik moet dus niet meer s'nachts gaan proggen.
Zal zo ff testen.
edit works.
Volgens mij heb ik nu ook wel de meest gebruikte functions in die class.
Iemand nog suggesties?
Gebruik de bij PHP5 standaard meegeleverde MySQLi klasse:
http://us.php.net/manual/en/function.mysqli-connect.php

Anders denk ik dat je het meeste wel hebt, misschien nog iets van error-afhandeling maken?

  • Brantje
  • Registratie: Juli 2004
  • Laatst online: 03-09 19:13

Brantje

De post is daar >>

Topicstarter
Goed idee, zal ik er ff inzetten :).

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Hoort deze topic niet in Programming? Dit betreft duidelijk serverside scripting..

If it isn't broken, fix it until it is..


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 17-09 11:10
Misschien nog een idee Brantje (mijn klasgenoot(A)), om het aantal queries te tellen. Zie je wel vaker onderaan websites staan.

Manier:

Even de variabele aanmaken:
PHP:
1
2
3
4
5
<?php
class mysql {
var $Qcount = 0;

function conn...


bij de Query functie het volgende toevoegen:
PHP:
1
2
3
4
function query(..)
...
$this->Qcount +=1;
...

en een nieuwe functie:
PHP:
1
2
3
4
function QueryCount()
{
   return $this->Qcount;
}


Jeff

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Een ander idee is om gewoon de normale MySQL functies te gebruiken. De functies die je nu in je class hebt zijn gewoon de mysql_*() functies, het is dus erg onzinnig om daar een class voor te gaan schrijven.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
l0c4lh0st schreef op donderdag 29 november 2007 @ 16:13:
Een ander idee is om gewoon de normale MySQL functies te gebruiken. De functies die je nu in je class hebt zijn gewoon de mysql_*() functies, het is dus erg onzinnig om daar een class voor te gaan schrijven.
inderdaad. Maak dan eerst een generieke Database interface en schrijf verschillende implementaties daarvan voor bijvoorbeeld MySQL, SQLite, en wat voor database software er ook maar is, anders gaat het hele voordeel van een evt databaseklasse / objectstructuur verloren, alsmede een stuk(je) snelheid.

Maar ik geloof dat iedereen wel eens zoiets gedaan heeft, dus erg is het niet ;).

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
l0c4lh0st schreef op donderdag 29 november 2007 @ 16:13:
Een ander idee is om gewoon de normale MySQL functies te gebruiken. De functies die je nu in je class hebt zijn gewoon de mysql_*() functies, het is dus erg onzinnig om daar een class voor te gaan schrijven.
Idd, dat dacht ik ook al.
Wat jeff aankaart kan wel in een klasse, maar de "klasse" die jij hebt is gewoon een php bestand met allemaal functions erin. Maak dan gewoon een PHP bestand en include die indien nodig waardoor je de function ook bij de hand heb :)

  • Brantje
  • Registratie: Juli 2004
  • Laatst online: 03-09 19:13

Brantje

De post is daar >>

Topicstarter
Ik vind dit wat makkelijker werken.
Ben momenteel bezig met een error systeem.
@jeff bedankt :), die zit er nu ook in :).

  • robbert
  • Registratie: April 2002
  • Laatst online: 20:37
l0c4lh0st schreef op donderdag 29 november 2007 @ 16:13:
Een ander idee is om gewoon de normale MySQL functies te gebruiken. De functies die je nu in je class hebt zijn gewoon de mysql_*() functies, het is dus erg onzinnig om daar een class voor te gaan schrijven.
Dan is het later ook zo makkelijk om te zetten naar een ander database systeem....

Het is inderdaad mooier om eerst een interface Database te maken en MysqlDatabase daar vervolgens een implementatie van te laten zijn.

[ Voor 14% gewijzigd door robbert op 29-11-2007 19:58 ]


  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 13-09 20:30

kokx

WIN

Wat ik onhandig vind, is dat er vrijwel altijd meteen geschreeuwd wordt om een eigen class te schrijven op het gebied van databases. Maar op dit moment bestaat de perfecte DB class eigenlijk al op het gebied van PHP. PDO is zelfs ingebakken in PHP en zeer veel classes gebruiken vrijwel dezelfde structuur. Ook worden er prepared-statements gebruikt, wat sneller en veiliger is. Ook is het database-onafhankelijk op het gebied van database access.
Pagina: 1